我正在完成JavaScript Codecademy课程,并且遇到一个独立项目的麻烦,该项目需要您设计数字猜谜游戏。由于某些原因,当涉及到“ 0”时,它会错误地返回。
JavaScript和我并不是最好的朋友,但是我在一个相对简单的项目上遇到了困难,决定尝试其中一个“挑战自己”部分,但我根本无法使其工作,或找出问题所在。
function generateTarget() {
return Math.floor(Math.random() * 10);
};
function compareGuesses(userGuess, computerGuess, targetNumber) {
function getAbsoluteDistance() {
const uGuess = Math.abs(generateTarget() - userGuess);
const cGuess = Math.abs(generateTarget() - computerGuess);
return uGuess - cGuess
};
if (getAbsoluteDistance() <= 0) {
return true
} else {
return false
};
};
// 'human' is input when return is true; 'computer' when return is false
function updateScore(winner) {
if (winner === 'human') {
humanScore ++;
} else if (winner === 'computer') {
computerScore ++;
};
};
function advanceRound() {
currentRoundNumber +=1;
};
从本质上讲,这是一个游戏,其中计算机生成一个随机的“目标”数字,您输入一个猜测数字,然后计算机生成一个猜测数字。根据您猜猜哪个数字的接近,您或计算机获胜。如果您猜出相同的数字,或者您的猜测是等距的,那么人类就是赢家。
现在(大约)可以正常工作,除非出现以下情况:
我想尝试一些基本的JavaScript,以便可以继续学习其他内容,但根本无法弄清问题所在或解决方法。我唯一能确定的是这些情况的共同点是,绝对距离计算中的某处总是有“ 0”。
任何帮助将不胜感激!
答案 0 :(得分:0)
我想要:
function NumGuessGame(){
this.computerScore = this.score = 0;
this.guess = function(num){
if(num === Math.floor(Math.random()*10)){
this.score++;
}
else{
this.computerScore++;
}
return this;
}
}
var gg = new NumGuessGame;
gg.guess(9).guess(11).guess(7).guess(7);
if(gg.computerScore >= gg.score){
console.log('Computer Wins');
}
else{
console.log('You Win');
}
当然,您应该注意到在这种情况下计算机几乎总是会赢。您应该注意到赔率在这里升高:
function NumGuessGame(){
this.computerScore = this.score = 0;
this.guess = function(num){
if(num === Math.floor(Math.random()*10)){
this.score++;
}
else{
this.computerScore++;
}
return this;
}
}
var gg = new NumGuessGame;
gg.guess(4);
if(gg.computerScore >= gg.score){
console.log('Computer Wins');
}
else{
console.log('You Win');
}
请注意,上面的示例期望0-9的猜测,否则无论如何您都会输掉。
答案 1 :(得分:0)
使其具有互动性。根据您所说的,如果出现平局或猜测相同的数字(平局),则用户获胜。我认为这些评论表明了最初失败的原因,或者至少是我所看到的。您正在与两个不同的目标进行比较,您可以在小提琴中看到它,因为结果不一致。
const userinput = document.getElementById("user");
const computerinput = document.getElementById("computer");
const targetvalue = document.getElementById("target");
const roundcount = document.getElementById("round");
var humanScore = 0;
var computerScore = 0;
var rounds = 0;
document.getElementById("generate").addEventListener("click", function(e) {
targetvalue.value = generateTarget();
});
document.getElementById("calc").addEventListener("click", function(e) {
let result = compareGuesses(userinput.value, computerinput.value, targetvalue.value);
if(result) humanScore++
else computerScore++
rounds++
roundcount.innerHTML = rounds;
alert("Score: Human: " + humanScore + ", Computer: " + computerScore );
});
function generateTarget() {
return Math.floor(Math.random() * 10);
}
function compareGuesses(userGuess, computerGuess, targetNumber) {
const uGuess = Math.abs(targetNumber - userGuess);
const cGuess = Math.abs(targetNumber - computerGuess);
if (uGuess - cGuess <= 0) {
return true
} else {
return false
}
}
<input id = "user" value="" placeholder ="user">
<input id = "computer" value="" placeholder ="computer"><br>
<input id = "target" value="" placeholder ="target">
<button id ="calc" type = "submit">
Submit
</button>
<button id ="generate" type = "submit">
Generate Number
</button><br>
Round: <span id = "round"></span>
该代码段应该可以轻松进行测试。没有添加任何东西来生成计算机猜测,但这类似于生成目标。