Hallo Leute,
ich muss ein Snakespiel in Java programmieren. Dabei wollte ich, dass die Schlange, wie beim richtigen "Snake" von alleine in eine Richtung läuft und ich dann mit Buttons die Richtung ändern kann. Leider kann ich mit der Pause-Funktion die Richtung zwischendurch nicht verändern.
Wie kann man das Während der Pausen machen?
Hier mein Code:
"direction" und "ZV" ist nicht relevant für das Problem, habs nur dringelassen, damit ich keine Syntaxfehler habe. "Enqueue" ist so etwas, wie ein Schritt weiter mit der Schlange, wobei der hintere Teil sofort mit "dequeue" gelöscht wird (sie soll ja nicht länger werden). "K" ist meine Kreisklasse, aus der die Schlange besteht. "S" ist das, was die Schlange essen kann. "Q" ist das Nebenprogramm, worin "enqueue" und "dequeue" usw. enthalten ist. "Leinwand" ist einfach die Fläche, auf der gezeichnet wird.
Alles wird über Buttons gesteuert. Das ist mein Beispiel für den Vorgang "Up" (Schlange bewegt sich nach oben).
Edit: "direction" ist doch relevant merke ich grad
Bei up ist sie 1
bei down 2
bei left 3
bei right 4
ich muss ein Snakespiel in Java programmieren. Dabei wollte ich, dass die Schlange, wie beim richtigen "Snake" von alleine in eine Richtung läuft und ich dann mit Buttons die Richtung ändern kann. Leider kann ich mit der Pause-Funktion die Richtung zwischendurch nicht verändern.
Wie kann man das Während der Pausen machen?
Hier mein Code:
Java:
public void Pause(int M) {
try {Thread.sleep(M);}
catch(InterruptedException e) {return;}
}
Java:
if(e.getSource()==Up){
direction=1;
while(direction==1){
if(direction!=2){
K.yPosition=K.yPosition-10;
Q.enqueue(K.xPosition,K.yPosition);
if((K.yPosition==S.yPosition)&&(K.xPosition==S.xPosition)){
Leinwand.setColor(Color.white);
Leinwand.fillOval(S.xPosition,S.yPosition,S.durchmesser,S.durchmesser);
S.setx();
S.sety();
Leinwand.setColor(Color.red);
Leinwand.fillOval(S.xPosition,S.yPosition,S.durchmesser,S.durchmesser);
i=i+1;
}
Leinwand.setColor(Color.blue);
Leinwand.fillOval(K.xPosition,K.yPosition,K.durchmesser,K.durchmesser);
if(ZV>i){
Leinwand.setColor(Color.white);
Leinwand.fillOval(Q.getx(),Q.gety(),K.durchmesser,K.durchmesser);
Q.dequeue();
}else{ZV=ZV+1;}
direction=1;
Pause(1000);
}
}
}
"direction" und "ZV" ist nicht relevant für das Problem, habs nur dringelassen, damit ich keine Syntaxfehler habe. "Enqueue" ist so etwas, wie ein Schritt weiter mit der Schlange, wobei der hintere Teil sofort mit "dequeue" gelöscht wird (sie soll ja nicht länger werden). "K" ist meine Kreisklasse, aus der die Schlange besteht. "S" ist das, was die Schlange essen kann. "Q" ist das Nebenprogramm, worin "enqueue" und "dequeue" usw. enthalten ist. "Leinwand" ist einfach die Fläche, auf der gezeichnet wird.
Alles wird über Buttons gesteuert. Das ist mein Beispiel für den Vorgang "Up" (Schlange bewegt sich nach oben).
Edit: "direction" ist doch relevant merke ich grad
Bei up ist sie 1
bei down 2
bei left 3
bei right 4
Zuletzt bearbeitet: