From 0f86037edf3d94f95c2d4485b5759a95bd30f8ad Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Fri, 26 Apr 2024 14:35:29 +0200 Subject: move collision handling from Schlange to Snake --- Snake.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'Snake.java') 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; } } -- cgit v1.2.3