Seite 2 von 2

Verfasst: 18.08.2009 19:25
von jojo1541
das war auch keine erklärung mehr^^

ich wollte eigentlich nur wissen, wo mein Fehler bei diesem Funktionsaufruf liegt, aber ich werde das mal in einem neuen Thread posten, da es hier eigentlich nicht hingehört...

Wenn du diese Ausschweifungen zu A* meinst, dann hier meine Antwort:

Wenn du willst, dass es sich direkt an dem Punkt befindet, sobald du dorthin klickst, holst du dir mit den Befehlen MouseX() und Mousey() aus der Mouselib die momentanen Koordinaten der Maus(werden in Pixel ausgegeben) und setzt die x/y Koordinaten deines Sprites o.ä den gespeicherten Mauskoordinaten gleich. z.B.

Code: Alles auswählen

InitSprite()
InitMouse()
InitKeyboard()

OpenScreen(1024,768,32,"Spritebewegung")

CreateSprite(0,32,32)
  StartDrawing(SpriteOutput(0))
    Box(0,0,32,32,RGB(200,100,0))
  StopDrawing()
  
CreateSprite(1,4,4)
  StartDrawing(SpriteOutput(1))
    Circle(2,2,2,RGB(0,100,200))
  StopDrawing()
  TransparentSpriteColor(1,0)  


Repeat
 
  ExamineMouse()
  ExamineKeyboard()
 
  ClearScreen(0)
  
  DisplaySprite(0,sx,sy)
  DisplayTransparentSprite(1,MouseX(),MouseY())
  
  
  
  If MouseButton(#PB_MouseButton_Left)
    sx = MouseX() - 16
    sy = MouseY() - 16
  EndIf
    
  FlipBuffers()  

Until KeyboardPushed(#PB_Key_Escape)
Wenn du es mit einer gewissen geschwindigkeit dorthin bewegen möchtest, speicherst du die Mauskoordinaten beim klicken in anderen Variablen ab, als die, die zum darstellen des Sprites verwendet werden und fragst ab, ob diese größer oder kleiner sind. z.B.

Code: Alles auswählen

InitSprite()
InitMouse()
InitKeyboard()

#ges = 5

OpenScreen(1024,768,32,"Spritebewegung")

CreateSprite(0,32,32)
  StartDrawing(SpriteOutput(0))
    Box(0,0,32,32,RGB(200,100,0))
  StopDrawing()
  
CreateSprite(1,4,4)
  StartDrawing(SpriteOutput(1))
    Circle(2,2,2,RGB(0,100,200))
  StopDrawing()
  TransparentSpriteColor(1,0)  


Repeat
 
  ExamineMouse()
  ExamineKeyboard()
 
  ClearScreen(0)
  
  DisplaySprite(0,sx,sy)
  DisplayTransparentSprite(1,MouseX(),MouseY())
  
  
  
  If MouseButton(#PB_MouseButton_Left)
    zx = MouseX() - 16
    zy = MouseY() - 16
  EndIf
    
  If zx < sx
    sx - #ges
  EndIf
  If zx > sx
    sx + #ges
  EndIf
  If zy < sy 
    sy - #ges  
  EndIf
  If zy > sy
    sy + #ges
  endif
    
  FlipBuffers()  

Until KeyboardPushed(#PB_Key_Escape)

Verfasst: 18.08.2009 19:33
von Raphi
OK. Noch mal etwas genauer.

Ich möcht auf einen bildscher (OpenScreen) einen kleinen ball (3x3 pixel)
an einer stelle (z.B: 100, 100) positionieren.

Nun möchte ich wenn ich mit der Maus auf den Punkt 200,200 drücke.
Das der Ball sich dorthin bewegt. (also animiert, nicht das der Ball einfach erscheint :D )

Verfasst: 18.08.2009 19:42
von jojo1541
mein zweites Beispiel.^^

Verfasst: 18.08.2009 20:03
von Raphi
Jo Danke, das funktioniert erstmal!

Nun ist aber nun die frage bei einem Menschen der in alle richtungen blicken kann, wie man raufindet wohin er sich drehen muss.(Wenn man mit der maus glickt)
(Also warscheinlich muss man irgendwie den winkle rauskrigen)

Verfasst: 18.08.2009 20:13
von Kaeru Gaman
dann wird es jetzt wohl mal so langsam zeit, dass du ins CodeArchiv guckst und in andere Beispiele und dir da mal fleißig was raussuchst, anstatt dir hier alles vorkaun zu lassen. /:->

du hast in deinen ersten Tagen ein Dutzend Fragethreads gestartet.
hättest in der Zeit auch mal anständig das Forum durchsuchen können.

Verfasst: 18.08.2009 20:17
von Raphi
und wie komm ich ins code-archiv?

Verfasst: 18.08.2009 20:29
von jojo1541
Codearchiv auf PureArea.net

Verfasst: 19.08.2009 14:55
von Raphi
Ich hab noch mal eine etwas allgemeine Frage:

Was bedeuteten diese befehle mit am anfang.
Ist das sowas wie eine eigene funktion oder nur in etwa eine Variable?

Verfasst: 19.08.2009 15:02
von RSBasic
@Raphi
Das sind Konstanten.

Weitere Informationen findest du in der Hilfe.

Verfasst: 19.08.2009 15:12
von Raphi
Alles klar, Danke :allright: