diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2024-04-26 14:35:29 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2024-04-26 14:35:29 +0200 |
| commit | 0f86037edf3d94f95c2d4485b5759a95bd30f8ad (patch) | |
| tree | 971579af3e48047b5c40cefb15838fe407f5c214 | |
| parent | 4d19ee9234686dc6f61ee8f8f19201427e1b81dc (diff) | |
| download | snake-0f86037edf3d94f95c2d4485b5759a95bd30f8ad.tar.gz snake-0f86037edf3d94f95c2d4485b5759a95bd30f8ad.zip | |
move collision handling from Schlange to Snake
| -rw-r--r-- | Snake.java | 13 |
1 files changed, 9 insertions, 4 deletions
@@ -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; } } |
