javascript - 游戏结束警报后如何重置我的游戏?
问题描述
游戏结束后如何重置游戏?我似乎无法做的是重置我的阵列。我想将它重置回 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///////
///////////////////
解决方案
使用 重置您的阵列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///////
///////////////////
推荐阅读
- javascript - 将 ng-value 数据传递给 ng-model
- hive - Apache flink 是否有任何与 Spark HiveContext 相同的 api?
- php - PHP按顺序长时间运行脚本
- javascript - 如何在 Windows 10 中安装 node-openalpr
- dictionary - 关于 Golang 编程语言中的地图
- javascript - YouTube“书呆子统计”的工作原理。或者如何从 JavaScript 获取正在播放的视频的编解码器信息
- python - 极慢构建双向 TF Lstm 单元
- android - 从 KOTLIN 中的 IF 或 ELSE 条件中检索变量输出
- eclipse - 在 Eclipse Neon.1 中显示模板提案错误
- groovy - 使用 JUnit 5 运行 Groovy 测试用例