Maus folgen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag 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)
Zuletzt geändert von jojo1541 am 18.08.2009 19:41, insgesamt 1-mal geändert.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Raphi
Beiträge: 175
Registriert: 06.08.2009 16:32
Computerausstattung: Intel Core 2 Duo Processor (2 x 3 Ghz), ATI Radeon HD 4870 (512 MB), 4 GB DDR-2 Ram, Microsoft Windows 7 Ultimate, MBox 2 Mini Soundkarte

Beitrag 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 )
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag von jojo1541 »

mein zweites Beispiel.^^
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Raphi
Beiträge: 175
Registriert: 06.08.2009 16:32
Computerausstattung: Intel Core 2 Duo Processor (2 x 3 Ghz), ATI Radeon HD 4870 (512 MB), 4 GB DDR-2 Ram, Microsoft Windows 7 Ultimate, MBox 2 Mini Soundkarte

Beitrag 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)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Raphi
Beiträge: 175
Registriert: 06.08.2009 16:32
Computerausstattung: Intel Core 2 Duo Processor (2 x 3 Ghz), ATI Radeon HD 4870 (512 MB), 4 GB DDR-2 Ram, Microsoft Windows 7 Ultimate, MBox 2 Mini Soundkarte

Beitrag von Raphi »

und wie komm ich ins code-archiv?
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag von jojo1541 »

Codearchiv auf PureArea.net
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Raphi
Beiträge: 175
Registriert: 06.08.2009 16:32
Computerausstattung: Intel Core 2 Duo Processor (2 x 3 Ghz), ATI Radeon HD 4870 (512 MB), 4 GB DDR-2 Ram, Microsoft Windows 7 Ultimate, MBox 2 Mini Soundkarte

Beitrag 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?
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@Raphi
Das sind Konstanten.

Weitere Informationen findest du in der Hilfe.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Raphi
Beiträge: 175
Registriert: 06.08.2009 16:32
Computerausstattung: Intel Core 2 Duo Processor (2 x 3 Ghz), ATI Radeon HD 4870 (512 MB), 4 GB DDR-2 Ram, Microsoft Windows 7 Ultimate, MBox 2 Mini Soundkarte

Beitrag von Raphi »

Alles klar, Danke :allright:
Antworten