gpt4 book ai didi

javascript - 为什么这个 if 语句有效,而另一个解决方案却无效?

转载 作者:行者123 更新时间:2023-11-30 09:22:39 24 4
gpt4 key购买 nike

我这样做是为了一个骰子游戏,如果掷出的骰子是 1 或连续两次掷出 6,玩家就会切换。我 friend 的代码有效但我的没有,看起来我的 if 语句完成了同样的事情。

此代码有效( friend 代码):

if (dice === 1 || diceTwo === 1) {
nextPlayer();
} else if (doubleSix === 6) {
if (dice === 6 || diceTwo === 6) {
roundScore = 0;
score[activePlayer] = 0;
nextPlayer();
}
} else {
roundScore += (dice + diceTwo);
document.querySelector('#current-' + activePlayer).textContent = roundScore;
doubleSix = dice;
}

这段代码没有(我的代码):

if (dice !== 1 || diceTwo !== 1) {
//Add score
if (doubleSix === 6 && dice === 6) {
roundScore = 0;
score = 0;
nextPlayer();
} else if {
roundScore += (dice + diceTwo) ;
document.querySelector('#current-' + activePlayer).textContent = roundScore;
doubleSix = dice;
}
} else {
//Next Player
nextPlayer();
}

最佳答案

首先你的 friend 代码只需要一个骰子是1。你需要两个骰子是1来运行nextPlayer

这是因为所谓的De Morgan's laws

你的代码应该有

if (dice !== 1 && diceTwo !== 1) {

建议的改进..

作为一般规则,将类似性质的项目称为 dicediceTwo 等是一个坏主意。拥有一个 数组要好得多dice,就好像你增加了骰子的数量一样,代码在没有修改的情况下仍然有效。

此外,我不确定您为什么只在上一轮的第一个骰子中寻找 6,并加入当前轮的任何骰子。我还以为你在找上一轮的任意六个和当前轮的任意六个...

你 friend 的代码会更好...

var foundSix = false;

// method to sum array
function sum(total, num) {
return total + num;
}

// ... more code

// check for a 1...
if (dice.indexOf(1) >= 0) {
nextPlayer();
} else if (foundSix) {
// check for a 6
if (dice.indexOf(6) >= 0) {
roundScore = 0;
score[activePlayer] = 0;
nextPlayer();
}
} else {
// roundScore += (dice[0] + dice[1]);
// use array reduce here...
roundScore = dice.reduce( sum, roundScore);
document.querySelector('#current-' + activePlayer).textContent = roundScore;
// doubleSix = dice[0];
// check ALL dice for a six..
foundSix = (dice.indexOf(6) >= 0);
}

关于javascript - 为什么这个 if 语句有效,而另一个解决方案却无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50588188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com