Schrittweise bewegen


Powersocke

Still Fresh
Joined
Sep 5, 2010
Messages
45
Ich wüsste gerne wie ich einen Sprite schrittweise bewegen lassen kann.
also so das keine flüssige Bewegung entsteht sondern der Sprite eine bestimmte anzahl Pixel weiterspringt
Bis jetzt hab ich es so gemacht(flüssige Bewegung):
Code:
IF KEY(203) // PC
        moveleft=TRUE
        ENDIF

        IF moveleft=TRUE
            csposx=csposx-1
            ENDIF

csposx= Cursorposition x-Achse

und das für alle Richtungen.

mfg Socke
 
Erhöhe einfach die Verschiebung pro Update auf 10 (dann springt es 10 px, also 10mal so schnell)
Code:
IF KEY(203) // PC
        moveleft=TRUE
        ENDIF

        IF moveleft=TRUE
            csposx=csposx-10
            ENDIF
 
Dann springt der aber immer so weiter. Ich will ja, das der einmal springt und erst wenn man die Taste loslässt und nochmal drückt er noch mal springt.

mfg Socke
 
Das sollte funktionieren:
Code:
//Am Anfang den Status, ob die Taste gedrückt ist, mit "false" definieren
leftKeyPressed=FALSE

// [...]

//Dann später in der Spielschleife
IF KEY(203)
    //Wenn die Taste nicht schon als gedrückt registriert wurde
    IF NOT leftKeyPressed
        //Taste als gedrückt registrieren
        leftKeyPressed=TRUE
        //Figur bewegen
        csposx=csposx-10
    ENDIF
ELSE
    //Wenn die Taste nicht gedrückt ist, dann den Wert zurücksetzen
    leftKeyPressed=FALSE
ENDIF
 
Hast du den ersten Befehl (Zeile 2) auch außerhalb der Spielschleife platziert (so, wie ich es im Kommentar geschrieben habe)? Ansonsten funktioniert der Codeschnipsel nämlich nicht.
 
Würd ich sagen, ja. Meine Variante sieht so aus:
Code:
IF KEY(203) // PC
        moveleft=moveleft+1
ELSE
        moveleft=0
ENDIF

IF moveleft=1
        csposx=csposx-10
ENDIF
Klappt es jetzt? Wenn ja, wäre auch wichtig, dass Du verstehst, warum. Dann erkläre ich das gerne.
 
Powersocke said:
Ja hab ich.
LeftKeyPressed ist dann bei mir so wie moveleft oder?
Ja, ist es. Ich habe bloß einen Namen genommen, von dem ich ausgehe, dass er verständlich ist. Aber warum es nicht funktioniert, weiß ich nicht. Dazu muss ich aber auch anmerken, dass ich kein GLBasic besitze und noch nie ein Programm damit geschrieben habe.

johnnysnet Variante macht sinngemäß das gleiche wie meine.
 
Keine Lösung funktioniert :(
Aber den Lösungsversuchvon johnnysnet verstehe ich :)
Fand ich aber nett dass du auch mein // PC übernommn hast :)

mfg Socke
 
Ich fürchte, Powersocke, Du wirst mehr von Deinem Quellcode preisgeben müssen, wenn es immer noch nicht funktioniert, denn dann muss doch der Fehler noch an anderer Stelle liegen!? Übrigens solltest Du direkt auch im GLB-Forum ruhig fragen, dort bekommst Du wahrscheinlich schneller professionelle Hilfe.
 
johnnysnet said:
Ich fürchte, Powersocke, Du wirst mehr von Deinem Quellcode preisgeben müssen, wenn es immer noch nicht funktioniert, denn dann muss doch der Fehler noch an anderer Stelle liegen!? Übrigens solltest Du direkt auch im GLB-Forum ruhig fragen, dort bekommst Du wahrscheinlich schneller professionelle Hilfe.
Richtig. Allgemein ist es wenn man um Hilfestellung bittet immer eine gute Sache, dazuzuschreiben was genau man erreichen möchte. Siehe http://catb.org/esr/faqs/smart-questions.html#goal sowie http://catb.org/esr/faqs/smart-questions.html#beprecise Dies erhöht die Wahrscheinlichkeit, schneller eine bessere Lösung zu finden.

Möglicherweise (aber nicht unbedingt) liegt das Problem an ganz anderer Stelle. Ich habe so eine Vermutung, dass das Problem mal wieder in der für viele Programmieranfänger (Ausnahmen bestätigen die Regel) typischen fehlender Übersicht des Codes begründet liegt (siehe auch: http://forum.gp2x.de/viewtopic.php?p=137038#p137038 )
 
Back
Top