aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2024-04-26 14:35:29 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2024-04-26 14:35:29 +0200
commit0f86037edf3d94f95c2d4485b5759a95bd30f8ad (patch)
tree971579af3e48047b5c40cefb15838fe407f5c214
parent4d19ee9234686dc6f61ee8f8f19201427e1b81dc (diff)
downloadsnake-0f86037edf3d94f95c2d4485b5759a95bd30f8ad.tar.gz
snake-0f86037edf3d94f95c2d4485b5759a95bd30f8ad.zip
move collision handling from Schlange to Snake
-rw-r--r--Snake.java13
1 files changed, 9 insertions, 4 deletions
diff --git a/Snake.java b/Snake.java
index 582c5c3..3c6eaf7 100644
--- a/Snake.java
+++ b/Snake.java
@@ -73,7 +73,9 @@ class Snake implements Zeichenfenster.AktionsEmpfaenger {
*/
public void Ausführen() {
tick++;
- schlange.bewegen();
+ if (!schlange.bewegen()) {
+ gameOver();
+ }
// Erzeuge alle dreißig Takte neues Essen
if (tick % 30 == 0) {
@@ -210,8 +212,9 @@ class Snake implements Zeichenfenster.AktionsEmpfaenger {
/**
* Bewege die Schlange um einen Schritt und behandle Kollisionen
+ * @return true, wenn keine Kollision aufgetreten ist.
*/
- void bewegen() {
+ boolean bewegen() {
int deltaX = 0;
int deltaY = 0;
switch (richtung) {
@@ -235,15 +238,17 @@ class Snake implements Zeichenfenster.AktionsEmpfaenger {
// Ist die Schlange gegen den Rand gelaufen?
if (kopf.x <= 0 || kopf.x >= 800 - 20 || kopf.y <= 0 || kopf.y >= 600 - 20) {
- gameOver();
+ return false;
}
// Beruehrt der Kopf ein anderes Koerperteil der Schlange?
for (int i = 1; i < koerper.length; i++) {
if (beruehrt(koerper[i])) {
- gameOver();
+ return false;
}
}
+
+ return true;
}
}