From 8a5c4eec79d0e7b619495065fd439d25947f5d4c Mon Sep 17 00:00:00 2001 From: garrettmills Date: Sat, 12 Sep 2020 14:29:07 -0500 Subject: [PATCH 1/3] Only allow firing missiles in missile mode (#5) --- src/components/TopLevel.component.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/components/TopLevel.component.js b/src/components/TopLevel.component.js index 74be3c2..6b91368 100644 --- a/src/components/TopLevel.component.js +++ b/src/components/TopLevel.component.js @@ -170,12 +170,14 @@ export default class TopLevelComponent extends Component { * @param {number} column_index */ on_missile_fired([row_index, column_index]) { - game_service.attempt_missile_fire([row_index, column_index]) + if ( this.player_is_firing_missiles ) { + game_service.attempt_missile_fire([row_index, column_index]) - // Give the user time to see whether they hit or not - setTimeout(() => { - game_service.advance_game_state() - }, 5000) + // Give the user time to see whether they hit or not + setTimeout(() => { + game_service.advance_game_state() + }, 5000) + } } /** From fbe8ac8ce638e04e4c6cf2a17a95021c1c22bb9a Mon Sep 17 00:00:00 2001 From: garrettmills Date: Sat, 12 Sep 2020 14:39:38 -0500 Subject: [PATCH 2/3] Fix math bugs for scoreboard (#4) --- src/components/ScoreBoard.component.js | 10 ++--- src/services/GameState.service.js | 53 ++++++++++++-------------- 2 files changed, 29 insertions(+), 34 deletions(-) diff --git a/src/components/ScoreBoard.component.js b/src/components/ScoreBoard.component.js index 4532847..b584179 100644 --- a/src/components/ScoreBoard.component.js +++ b/src/components/ScoreBoard.component.js @@ -15,14 +15,14 @@ const template = ` progress - player_1 + Player 1 {{player_one_score}} - {{player_one_progress}} + {{player_one_progress * 100}}% - player_2 - {{player_one_score}} - {{player_two_progress}} + Player 2 + {{player_two_score}} + {{player_two_progress * 100}}% diff --git a/src/services/GameState.service.js b/src/services/GameState.service.js index 9058142..60f4e11 100644 --- a/src/services/GameState.service.js +++ b/src/services/GameState.service.js @@ -210,21 +210,16 @@ export class GameStateService { * @private */ get_player_score(player) { - let i = 1; - let j = 1; - let score = 0; - for(i; i<=8; i++) - { - for(j; j<=8; j++) - { - let cell = this.player_x_game_board[this.get_other_player(player)][i][j]; - if(cell.render === GridCellState.Damaged || cell.render === GridCellState.Sunk ) - { - score++; + let score = 0 + this.player_x_game_board[player].some(row => { + row.some(cell => { + if ( cell.render === GridCellState.Damaged || cell.render === GridCellState.Sunk ) { + score += 1 } - } - } - return(score); + }) + }) + + return score } /** @@ -234,21 +229,16 @@ export class GameStateService { * @private */ get_boat_count(player){ - let i = 1; - let j = 1; - let boat_count = 0; - for(i; i<=8; i++) - { - for(j; j<=8; j++) - { - let cell = this.player_x_game_board[this.get_other_player(player)][i][j]; - if(cell.render === GridCellState.Damaged || cell.render === GridCellState.Sunk || cell.render === GridCellState.Ship ) - { - boat_count++; + let boat_count = 0 + this.player_x_game_board[player].some(row => { + row.some(cell => { + if ( isShipCell(cell.render) ) { + boat_count += 1 } - } - } - return(boat_count); + }) + }) + + return boat_count } /** @@ -257,7 +247,12 @@ export class GameStateService { * @private */ get_progress(player){ - return(this.get_player_score(player) / this.get_boat_count(player)) + const boat_count = this.get_boat_count(player) + if ( boat_count !== 0 ) { + return (this.get_player_score(player) / boat_count).toFixed(2) + } else { + return 0 + } } /** From 8e0c30f01a6bf5e7153b9a60d06f0a3c3cf721eb Mon Sep 17 00:00:00 2001 From: garrettmills Date: Sat, 12 Sep 2020 14:40:48 -0500 Subject: [PATCH 3/3] Set opponent to loser if PlayerVictory in game service (#5) --- src/services/GameState.service.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/services/GameState.service.js b/src/services/GameState.service.js index 60f4e11..e87764b 100644 --- a/src/services/GameState.service.js +++ b/src/services/GameState.service.js @@ -350,6 +350,7 @@ export class GameStateService { if(winner) { this.current_state = GameState.PlayerVictory; this.current_player = winner; + this.current_opponent = this.get_other_player(winner); } this.current_turn_had_missile_attempt = false