Endscreen und Verlängerung der Schlange bei einem Score
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
})
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user