Schrittweise bewegen

Coden in GLBasic
Antworten
Autor
Nachricht
Powersocke
5 Bit
Beiträge: 45
Registriert: Sa Sep 04, 2010 22:48

Schrittweise bewegen

#1 Beitrag von Powersocke » Mo Sep 13, 2010 19:27

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: Alles auswählen

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
Wenn du mit Tatsachen nicht überzeugen kannst verwirre mir schwachsinn!

Benutzeravatar
darthcookie
6 Bit
Beiträge: 103
Registriert: So Aug 02, 2009 16:48

Re: Schrittweise bewegen

#2 Beitrag von darthcookie » Mo Sep 13, 2010 19:34

Erhöhe einfach die Verschiebung pro Update auf 10 (dann springt es 10 px, also 10mal so schnell)

Code: Alles auswählen

IF KEY(203) // PC
        moveleft=TRUE
        ENDIF

        IF moveleft=TRUE
            csposx=csposx-10
            ENDIF
"Es gibt kein Problem das sich nicht loesen laesst, indem man die
Benutzerprozesse killt, alle ihre Files loescht, ihre Accounts sperrt
und ihre tatsaechlichen Einnahmen dem Finanzamt zukommen laesst."
Bastard Operator from Hell

Powersocke
5 Bit
Beiträge: 45
Registriert: Sa Sep 04, 2010 22:48

Re: Schrittweise bewegen

#3 Beitrag von Powersocke » Mo Sep 13, 2010 19:54

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
Wenn du mit Tatsachen nicht überzeugen kannst verwirre mir schwachsinn!

Xugro
5 Bit
Beiträge: 39
Registriert: Di Nov 17, 2009 19:37

Re: Schrittweise bewegen

#4 Beitrag von Xugro » Mo Sep 13, 2010 20:51

Das sollte funktionieren:

Code: Alles auswählen

//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
Meine Jabber-ID: xugro@jabber.thehappy.de

Powersocke
5 Bit
Beiträge: 45
Registriert: Sa Sep 04, 2010 22:48

Re: Schrittweise bewegen

#5 Beitrag von Powersocke » Di Sep 14, 2010 05:30

Dann springt der auch immer weiter :(
Wenn du mit Tatsachen nicht überzeugen kannst verwirre mir schwachsinn!

Xugro
5 Bit
Beiträge: 39
Registriert: Di Nov 17, 2009 19:37

Re: Schrittweise bewegen

#6 Beitrag von Xugro » Di Sep 14, 2010 11:52

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.
Meine Jabber-ID: xugro@jabber.thehappy.de

Powersocke
5 Bit
Beiträge: 45
Registriert: Sa Sep 04, 2010 22:48

Re: Schrittweise bewegen

#7 Beitrag von Powersocke » Di Sep 14, 2010 15:41

Ja hab ich.
LeftKeyPressed ist dann bei mir so wie moveleft oder?
Wenn du mit Tatsachen nicht überzeugen kannst verwirre mir schwachsinn!

Benutzeravatar
johnnysnet
9 Bit
Beiträge: 989
Registriert: So Dez 17, 2006 12:59
Wohnort: Leipzig
Kontaktdaten:

Re: Schrittweise bewegen

#8 Beitrag von johnnysnet » Di Sep 14, 2010 18:47

Würd ich sagen, ja. Meine Variante sieht so aus:

Code: Alles auswählen

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.
"If I arrange to have just one cross-bar in my machine, it revolves very slowly, just as if it can hardly turn itself at all, but, on the contrary, when I arrange several bars, pulleys and weights, the machine can revolve much faster"

Xugro
5 Bit
Beiträge: 39
Registriert: Di Nov 17, 2009 19:37

Re: Schrittweise bewegen

#9 Beitrag von Xugro » Di Sep 14, 2010 19:09

Powersocke hat geschrieben: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.
Meine Jabber-ID: xugro@jabber.thehappy.de

Powersocke
5 Bit
Beiträge: 45
Registriert: Sa Sep 04, 2010 22:48

Re: Schrittweise bewegen

#10 Beitrag von Powersocke » Di Sep 14, 2010 19:47

Keine Lösung funktioniert :(
Aber den Lösungsversuchvon johnnysnet verstehe ich :)
Fand ich aber nett dass du auch mein // PC übernommn hast :)

mfg Socke
Wenn du mit Tatsachen nicht überzeugen kannst verwirre mir schwachsinn!

Benutzeravatar
johnnysnet
9 Bit
Beiträge: 989
Registriert: So Dez 17, 2006 12:59
Wohnort: Leipzig
Kontaktdaten:

Re: Schrittweise bewegen

#11 Beitrag von johnnysnet » Di Sep 14, 2010 20:10

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.
"If I arrange to have just one cross-bar in my machine, it revolves very slowly, just as if it can hardly turn itself at all, but, on the contrary, when I arrange several bars, pulleys and weights, the machine can revolve much faster"

Benutzeravatar
Christoph.Krn
10 Bit
Beiträge: 1142
Registriert: Di Mär 17, 2009 22:25

Re: Schrittweise bewegen

#12 Beitrag von Christoph.Krn » Di Sep 14, 2010 20:46

johnnysnet hat geschrieben: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 )

Antworten

Zurück zu „GLBasic“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast