diff --git a/backend/src/SocketIO/GameManager/Game/Classes/Fruits/Classes/Fruit.js b/backend/src/SocketIO/GameManager/Game/Classes/Fruits/Classes/Fruit.js
index 19c476d..7a12425 100644
--- a/backend/src/SocketIO/GameManager/Game/Classes/Fruits/Classes/Fruit.js
+++ b/backend/src/SocketIO/GameManager/Game/Classes/Fruits/Classes/Fruit.js
@@ -20,7 +20,7 @@ class Fruit{
if(tile === undefined) return;
if(tile?.class === "Snake"){
- this.fruitManager.scored(this.index);
+ this.fruitManager.scored(this.index, tile.color);
return;
}
diff --git a/backend/src/SocketIO/GameManager/Game/Classes/Fruits/FruitManager.js b/backend/src/SocketIO/GameManager/Game/Classes/Fruits/FruitManager.js
index 7da5ada..b1bfd29 100644
--- a/backend/src/SocketIO/GameManager/Game/Classes/Fruits/FruitManager.js
+++ b/backend/src/SocketIO/GameManager/Game/Classes/Fruits/FruitManager.js
@@ -60,9 +60,13 @@ class FruitManager{
this.fruits.forEach(fruit => fruit.update());
}
- scored(fruitIndex){
+ scored(fruitIndex, snakeColor){
this.game.score += 1;
+ this.game.gameLoop.snakes.forEach(snake => {
+ if(snake.color == snakeColor) snake.getBigger();
+ })
+
this.fruits.splice(fruitIndex, 1);
this.createFruit();
diff --git a/backend/src/SocketIO/GameManager/Game/Classes/Snake/Snake.js b/backend/src/SocketIO/GameManager/Game/Classes/Snake/Snake.js
index efb6a1d..4420f6c 100644
--- a/backend/src/SocketIO/GameManager/Game/Classes/Snake/Snake.js
+++ b/backend/src/SocketIO/GameManager/Game/Classes/Snake/Snake.js
@@ -159,19 +159,41 @@ class Snake{
this.checkAndDrawTiles();
}
+ getBigger(){
+ const end = this.tiles[this.tiles.length - 1];
+ const beforeEnd = this.tiles[this.tiles.length - 2];
+
+ // So setzen wir das neue Tile hinter dem Letzen auf der Richtigen Seite
+ const dx = end.x - beforeEnd.x;
+ const dy = end.y - beforeEnd.y;
+
+ const newEnd = {
+ class: "Snake",
+ type: "End",
+ color: this.color,
+ deg: end.deg,
+ x: end.x + dx,
+ y: end.y + dy
+ };
+
+ end.type = "Straight";
+
+ this.tiles.push(newEnd);
+ }
+
checkAndDrawTiles(){
this.tiles.forEach(tile => {
const exsitingtile = this.playground.getTile(tile.x, tile.y);
- // TODO: Solang Entfernt kann man alleine Testen
- // if(exsitingtile === undefined){
- // // End Game weil außerhalb des Spielfeldes
- // this.game.endGame(`${this.player.username} hat die Wand berührt!`)
- // }
- // if(exsitingtile?.class === "Snake"){
- // // Eng Game weil schon belegt mit anderer oder eigender Schlange
- // this.game.endGame(`Ihr seit koolidiert!`)
- // }
+ // TODO: Klammert man das ein Kann man alleine Spielen, da es keine Kolisionserkennung gibt
+ if(exsitingtile === undefined){
+ // End Game weil außerhalb des Spielfeldes
+ this.game.endGame(`${this.player.username} hat die Wand berührt!`)
+ }
+ if(exsitingtile?.class === "Snake"){
+ // Eng Game weil schon belegt mit anderer oder eigender Schlange
+ this.game.endGame(`Ihr seit koolidiert!`)
+ }
this.playground.setTile(tile.x, tile.y, tile);
})
diff --git a/backend/src/SocketIO/GameManager/Game/Game.js b/backend/src/SocketIO/GameManager/Game/Game.js
index c965f38..5eca24e 100644
--- a/backend/src/SocketIO/GameManager/Game/Game.js
+++ b/backend/src/SocketIO/GameManager/Game/Game.js
@@ -55,7 +55,12 @@ class Game{
}
endGame(msg){
- this.io.to(`game-${this.code}`).emit("gameEnd", msg);
+ this.io.to(`game-${this.code}`).emit("gameEnd", {
+ msg: msg,
+ score: this.score,
+ });
+
+ // TODO: Spielende in die Datenbank eintragen
}
waitingForPlayers(changeTime = false){
@@ -111,7 +116,7 @@ class Game{
});
if(this.players.length != 2){
- this.endGame("gameEnd", "Das Spiel ist zu Ende, da ein Spieler verlassen hat!");
+ this.endGame("Das Spiel ist zu Ende, da ein Spieler verlassen hat!");
return 1;
}
}
diff --git a/frontend/game/index.html b/frontend/game/index.html
index c6c86d7..ff588b9 100644
--- a/frontend/game/index.html
+++ b/frontend/game/index.html
@@ -17,5 +17,6 @@
+