我最近开始学习JS,我做了一个非常简单的游戏。这是一个简单的战舰游戏,没有动画。下面是代码:
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="CSS/Game.css" type="text/css" charset="utf-8">
</head>
<body>
<marquee id="output"></marquee>
<script>
var loc1,loc2,loc3;
var guess;
var hits = 0;
var guesses = 0;
var isSunk = false;
var locRandom = Math.floor(Math.random() * 9);
loc1 = locRandom;
loc2 = loc1 + 1;
loc3 = loc2 + 1;
while(isSunk == false){
guess = prompt("Enter a number from 1-10");
if(guess == null){
alert("Bye");
promt.close;
}
else if(guess < 0 || guess > 10 || guess == "" || guess == " "){
alert("Write a valid number");
}
else
{
guesses = guesses + 1;
if(guess == loc1 || guess == loc2 || guess == loc3) {
alert("HIT!");
hits = hits + 1;
if(hits == 3){
isSunk = true;
alert("You sank my battleship!");
}
} else {
alert("MISS");
}
}
}
var stats = "You took " + guesses + " guesses to sink the battleship, " + "which means that your accuracy is " + (3/guesses) + " hit(s) per guess";
alert(stats);
alert("Thanks for playing!");
document.getElementById("output").innerHTML = "Refresh to play again!";
document.write("<br><br>This game was created by Swegre Designs");
</script>
</body>
但问题是,例如,当我在数字1上被“击中”时,我可以在飞船上输入3次,战舰被击沉,但这不是应该发生的事情,我希望你能理解这个错误,有人能帮我吗?
谢谢!
发布于 2014-12-28 16:38:42
您没有跟踪用户先前的任何猜测。
您可以使用数组跟踪猜测的位置。例如:
var guessedPositions = [];然后,当您收到来自用户的输入时,将他们猜测的位置推入数组中:
guessedPositions.push(guess);然后,您必须将guessedPositions与用户guess进行比较,您可以为此创建一个函数:
function alreadyGuessed(userGuess) {
for(var i=0; i<guessedPositions.length;i++) {
if (guessedPositions[i] == userGuess) {
return true;
}
}
return false;
}您可以通过:alreadyGuessed(guess);调用它
如果该条目在数组中,则返回true或false。
编辑-来自您的评论
while(isSunk == false){
guess = prompt("Enter a number from 1-10");
if (guess == null){
alert("Bye");
promt.close;
}
else if(guess < 0 || guess > 10 || guess == "" || guess == " "){
alert("Write a valid number");
}
else if (alreadyGuessed(guess)) { // This is the line you are looking for.
alert("You have already guessed " + guess + ", please enter a different location");
}
else
{发布于 2014-12-28 16:42:07
不是什么虫子-这是怎么回事
if(guess == loc1 || guess == loc2 || guess == loc3)没有考虑到他们是否已经猜到了地点。我会跟踪他们在数组中已经猜到的位置,然后使用它来检查是否是一个新的猜测。或者,您可以将所有的"hittable“位置放在一个数组中,然后当他们猜测正确的位置时,将其从数组中删除。
发布于 2014-12-28 16:35:29
记住他们击中的三个位置中的哪一个,不要让他们在随后的一次尝试到那个位置。
https://stackoverflow.com/questions/27678349
复制相似问题