Frage von Pokecrafter567, 35

javafx snake timertask beenden?

ich probiere seit längerem snake zu programmieren und ich habe dann einen timer gemacht der 4 if-abfragen in sich hat... wenn ich halt dann w drücke (habe das w a s d fortbewegungssystem benutzt), dann bewegt sich die snake zwar nach vorne, aber wenn ich dann zum beispiel s drücke, dann laufen beide bedingungen (also beide ifs) weiter aber ich will ja, dass nur s weiterläuft... .cancel(); funktioniert nur bei dem timer, aber nicht bei dem timertask, also ich kann nur den timer canceln, wenn ich ihn aber starten will, kommt die fehlermeldung "timer has allready cancelded" oder so :c wie kriege ich es hin, dass ich den timerTASK nicht timer canceln kann?

LG

Expertenantwort
von KnusperPudding, Community-Experte für Java, 14

Jetzt wird mir so langsam klar, was es mit den Timertask-Fragen auf sich hat. Aber wenn ich das mal sagen darf: Du machst es dir unnötig kompliziert.

Du benötigst beim Spiel-Start nur einen Timer Task, der in regelmäßigen Abständen dein "Spielbrett" aktualisiert.

Tastatur-Eingaben sollten parallel erfolgen und einfach nur in eine Variable gespeichert werden und vom Timer-Task "konsumiert" werden.

Hier wäre ein Beispiel:

http://hastebin.com/ufivayepul.java

Den Timer würdest du sowieso nur beenden, wenn das Spielende erreicht ist. Das würdest du via. cancel() machen.

Kommentar von Pokecrafter567 ,

achso danke, ich guck mal rein

Antwort
von triopasi, 26

Als w geht aber s macht "w + s"? Dann ist der Fehker doch in deinen Bedingungen? Wofür eillst du den timer da canceln? Ich glauv du hast da einen Konzeptfehler oder einfach nir paar andere Sachen falsch / schlecht gelöst.

Kommentar von Pokecrafter567 ,

wie kann man das denn anders machen (sag bitte nicht komm selber drauf, ich sitz da schon eine woche dran...) 

ich muss doch im timer machen "wenn w gedrückt wurde beweg dich nach oben", "wenn s gedrückt wurde, dann..."  etc. wie soll man das denn anders machen?

Kommentar von triopasi ,

Ja genau so kann man es machen. Aber Kannst es ja so machen, dass immer nur ENTWEDER hoch ODER links ODER ... bewegt wird, nicht beides. Das ist doch ein Problem oder?

Antwort
von RpgBoss, 13

Switch Case bietet sich hier an ;)

Hast du denn Bedingung drin für den fall wenn taste w + s gedrückt wird?

Kommentar von Pokecrafter567 ,

nein nein so mein ich das nicht :D ich meine, dass wenn man erst w drückt das dann loslässt und DANN s oder so drückt, dass das dann gleichzeitig ausgeführt wird :D

Wo ist denn der unterschied zwischen switch und if?

Kommentar von RpgBoss ,

switch case ist angenehmer ,wenn man  meisst me̱hrere if bedinugen hat xd

Keine passende Antwort gefunden?

Fragen Sie die Community