diff --git a/Webservice/Game.js b/Webservice/Game.js index 1b3d6c6..45082ac 100644 --- a/Webservice/Game.js +++ b/Webservice/Game.js @@ -1,5 +1,5 @@ const Player = require('./Player'); -const Hunter = require("./Hunter"); +const Hunter = require('./Hunter'); class Game { @@ -10,7 +10,7 @@ class Game { ONGOING: 1, IS_DRAW: 2, IS_WON: 3 - } + }; constructor() { this.currentStatus = Game.STATUS.SETTING_UP; @@ -93,16 +93,16 @@ class Game { } } - getPlayerNames(){ + getPlayerNames() { return this.playerNames; } - addPlayerName(playerName){ + addPlayerName(playerName) { this.playerNames.push(playerName); } - removePlayerName(playerName){ - this.playerNames.splice(this.playerNames.indexOf(playerName), 1) + removePlayerName(playerName) { + this.playerNames.splice(this.playerNames.indexOf(playerName), 1); } } diff --git a/Webservice/Hunter.js b/Webservice/Hunter.js index b244d18..7f121a6 100644 --- a/Webservice/Hunter.js +++ b/Webservice/Hunter.js @@ -4,13 +4,17 @@ class Hunter { this.isAlive = false; } + getPosition() { + return this.position; + } + move_by(amount) { this.position += amount; } hunt(playerArray) { for (let i = 0; i < playerArray.length; i++) { - if (playerArray[i].position <= this.position) { + if (playerArray[i].position <= this.position - 1) { playerArray[i].isAlive = false; } } diff --git a/Webservice/server.js b/Webservice/server.js index 0431454..ed93c56 100644 --- a/Webservice/server.js +++ b/Webservice/server.js @@ -111,7 +111,6 @@ io.on('connection', socket => { } else { io.to(socket.id).emit('error', 'It\'s not your turn'); } - }); socket.on('get card', function (difficulty) { @@ -147,20 +146,11 @@ io.on('connection', socket => { io.in(socket.room).emit('player moved', { "next_player": game[socket.room].players[game[socket.room].currentPlayerIndex].name, "player": index, - "position": position + "position": position, + "state": game[socket.room].currentStatus, }); - switch (game[socket.room].currentStatus) { - case Game.STATUS.IS_WON: - //TODO show clients the winner - //game[socket.room].winnerIndex - break; - case Game.STATUS.IS_DRAW: - //TODO show clients that nobody wins - break; - default: - break; - } + io.in(socket.room).emit('update Hunter', game[socket.room].hunter.getPosition()); }); }); diff --git a/public/js/Card.js b/public/js/Card.js index a4a7368..e99eef9 100644 --- a/public/js/Card.js +++ b/public/js/Card.js @@ -1,4 +1,4 @@ -function Card(game_board_size, question, answer_1, answer_2, answer_3, answer_4, difficulty, your_turn) { +function Card(game_board_size, question, answer_1, answer_2, answer_3, answer_4, difficulty, your_turn, game_state) { this.card = new PIXI.Graphics(); this.question = question; this.answer_1 = answer_1; @@ -68,8 +68,12 @@ function Card(game_board_size, question, answer_1, answer_2, answer_3, answer_4, this.card.addChild(header); if (difficulty === 0) { - for (let i = 0; i < positions.length; i++) { - if (positions[i] > 15) this.question = "Gewinner: " + playerNames[i]; + if (game_state === 3) { + for (let i = 0; i < positions.length; i++) { + if (positions[i] > 15) this.question = "Gewinner: " + playerNames[i]; + } + } else if (game_state === 2) { + this.question = "Unentschieden."; } } @@ -123,7 +127,7 @@ function Card(game_board_size, question, answer_1, answer_2, answer_3, answer_4, // OK-Button - if (difficulty === 0 && (positions[0] > 15 || positions[1] > 15 || positions[2] > 15 || positions[3] > 15)) { + if (game_state === 2 || game_state === 3) { this.card.addChild(new Button(0xffffff, 0xcccccc, 0xffffff, this.card_width - 40, 100, this.card_x + 20, this.card_y + this.card_height - 120, "New Game", null, function () { window.location.reload(); }).getButton()); diff --git a/public/js/Sprite.js b/public/js/Sprite.js index b07113c..6f96ab4 100644 --- a/public/js/Sprite.js +++ b/public/js/Sprite.js @@ -1,7 +1,7 @@ function Sprite(x, y, slow) { - if(slow){ + if (slow) { this.sprite = PIXI.Sprite.from('/img/spriteSlow.jpg'); - }else{ + } else { this.sprite = PIXI.Sprite.from('/img/sprite.jpg'); } this.coord_x = x; diff --git a/public/js/game.js b/public/js/game.js index 045ebc5..f76903a 100644 --- a/public/js/game.js +++ b/public/js/game.js @@ -57,7 +57,7 @@ function start_game() { sprites.forEach(sprite => app.stage.addChild(sprite.getSprite())); // Red border - let red_border = generate_red_border(new PIXI.Graphics()); + let red_border = generate_red_border(new PIXI.Graphics(), 1, 9); app.stage.addChild(red_border); @@ -268,13 +268,14 @@ function start_game() { break; } - if (x === 1 && y === 9 && data.position !== 0) { + if (data.state === 2 || data.state === 3) { card = new Card(game_board_size, "", {"text": playerNames[0] ? playerNames[0] + ": " + positions[0] : ("Kein Spieler"), "status": false}, {"text": playerNames[1] ? playerNames[1] + ": " + positions[1] : ("Kein Spieler"), "status": false}, {"text": playerNames[2] ? playerNames[2] + ": " + positions[2] : ("Kein Spieler"), "status": false}, {"text": playerNames[3] ? playerNames[3] + ": " + positions[3] : ("Kein Spieler"), "status": false}, - 0, false); + 0, false, data.state); + red_border.clear(); card.showCard(); show_card = true; } @@ -282,6 +283,14 @@ function start_game() { if (next_player === username) my_turn.text = "Your Turn"; }); + socket.on('update Hunter', function (position) { + let x = sprites[position].coord_x; + let y = sprites[position].coord_y; + red_border.clear(); + red_border = generate_red_border(new PIXI.Graphics(), x, y); + app.stage.addChild(red_border); + }); + resize(); } @@ -297,9 +306,9 @@ function generate_card_stack(sprite, x, y, onclick) { return sprite; } -function generate_red_border(graphics) { +function generate_red_border(graphics, x, y) { graphics.lineStyle(sprite_size * 0.10, 0x862323, 1); - graphics.drawRect(sprite_size * 1 - sprite_size * 0.2, sprite_size * 9 - sprite_size * 0.2, sprite_size * 1.5, sprite_size * 1.5); + graphics.drawRect(sprite_size * x - sprite_size * 0.2, sprite_size * y - sprite_size * 0.2, sprite_size * 1.5, sprite_size * 1.5); return graphics; }