首页 > 解决方案 > 游戏结束警报后如何重置我的游戏?

问题描述

游戏结束后如何重置游戏?我似乎无法做的是重置我的阵列。我想将它重置回 0 并删除 X 和 1,因为我已经重置了计数但无法弄清楚如何重置数组。我尝试重新加载,但这也不起作用。我想也许可以制作另一个与原始网格相同的变量并替换它,但我不确定如何去做。这是我的代码

/////////////////////
//GLOBAL VARIABLES//
///////////////////
//Grid Row
const gridRow=4;
//Grid Column
const gridCol=5;
// Show Grid
const grid = ["0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"];
// Ship Locations
const shipLocations = ["3", "9", "15"];
//Entered Guess Value
let guess;
// Stored guesses
const guesses = [];
//Rounds COunter
let count = 0;
//Prompt Text Under Grid
let promptText = "Enter a Number Between 0 and 19";
//////////////////
//Game Loop indefintely until user cancels.
do {
//Construct Prompt
  const prpt = "Round #"+ ++count + " of 5 " + '\n'+ printGrid() + promptText;
// Set Guess Value
  guess = prompt(prpt);
// If Else
  if (!guess && guess !== 0)
//Stop when cancel was clicked
    break;
// Registers and Hit
  const hit = shipLocations.indexOf(guess) >= 0;
// Checks If a Number is Entered
  if (isNaN(guess)) {
    alert('Please Enter Only Numbers');
  }
  // Checks If Guess Has Already been Made
  if (guesses.includes(guess)) {
    alert('You Have Guessed This Already')
  } else {
    guesses.push(guess);
    console.log(guesses);
  }
  // GAME OVER 
  if (count == 5) {
    alert('GAME OVER');
    count = 0;
  }
  // Updated Game with Hit or Miss
  if (hit == true) {
    guesses.push(guess);
    promptText = "You Sunk a Ship";
  } else if (hit == false) {
    guesses.push(guess);
    promptText = "You Missed a Ship";
  } 
  // Checks Guess
  // Updated Grid Array
  grid[guess] = hit ? '1' : 'X';
  //Exit Condition
} while (guess || guess === 0); 

/** Pretty-print the grid via function **/
function printGrid() {
  let res = "";
  for (let r = 0; r < gridRow; r++) {
    let srow = "";
    for (let c = 0; c < gridCol; c++) {
      srow += " " + grid[r * gridCol + c];
    }
    res += srow.substr(1) + '\n';
  }
  return res;
}
/////////////////////
//END OF CODE///////
///////////////////

标签: javascript

解决方案


使用 重置您的阵列grid.forEach((val, i) => grid[i] = 0)

此外,你需要在逻辑游戏结束后停止处理猜测,我在if/else那里添加了。

/////////////////////
//GLOBAL VARIABLES//
///////////////////
//Grid Row
const gridRow = 4;
//Grid Column
const gridCol = 5;
// Show Grid
const grid = ["0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"];
// Ship Locations
const shipLocations = ["3", "9", "15"];
//Entered Guess Value
let guess;
// Stored guesses
var guesses = [];
//Rounds COunter
let count = 0;
//Prompt Text Under Grid
let promptText = "Enter a Number Between 0 and 19";
//////////////////
//Game Loop indefintely until user cancels.
do {
  //Construct Prompt
  const prpt = "Round #" + ++count + " of 5 " + '\n' + printGrid() + promptText;
  // Set Guess Value
  console.log('oi what')
  guess = prompt(prpt);
  // If Else
  if (!guess && guess !== 0)
    //Stop when cancel was clicked
    break;
  // Registers and Hit
  const hit = shipLocations.indexOf(guess) >= 0;
  // Checks If a Number is Entered
  if (isNaN(guess)) {
    alert('Please Enter Only Numbers');
  }
  // Checks If Guess Has Already been Made
  if (guesses.includes(guess)) {
    alert('You Have Guessed This Already')
  } else {
    guesses.push(guess);
    console.log(guesses);
  }
  // GAME OVER 
  if (count == 5) {
    alert('GAME OVER');
    grid.forEach((val, i) => grid[i] = 0);
    guesses = [];
    count = 0;
  } else {
    // Updated Game with Hit or Miss
    if (hit == true) {
      guesses.push(guess);
      promptText = "You Sunk a Ship";
    } else if (hit == false) {
      guesses.push(guess);
      promptText = "You Missed a Ship";
    }
    // Checks Guess
    // Updated Grid Array
    grid[guess] = hit ? '1' : 'X';
  }
  //Exit Condition
} while (guess || guess === 0);

/** Pretty-print the grid via function **/
function printGrid() {
  let res = "";
  for (let r = 0; r < gridRow; r++) {
    let srow = "";
    for (let c = 0; c < gridCol; c++) {
      srow += " " + grid[r * gridCol + c];
    }
    res += srow.substr(1) + '\n';
  }
  return res;
}
/////////////////////
//END OF CODE///////
///////////////////


推荐阅读