我创建了这个简单的JS骰子游戏,我在其中运行2个骰子



我想听听关于如何改进这段代码的建议,可能有一种方法,我可以调用相同的函数来获得2个不同的结果?当我尝试时,我得到了2个打印相同结果的骰子。如果有其他的建议可以让这个看起来更好,那就太好了。

我已经知道如何通过只使用dice1dice2来做到这一点,因为不需要一个函数并将其打印到控制台,现在我想使用两个函数,因为我想做这个愚蠢的ASCII艺术的事情。

是否有一种方法可以代替调用

diceSpin();
diceSpin2();

我只是调用一个diceSpin(dice1, dice2)并得到相同的输出?

const diceResult = Math.floor(Math.random() * 6) + 1;
const diceResult2 = Math.floor(Math.random() * 6) + 1;
console.log("Dice 1: " + diceResult + "     Dice 2: " + diceResult2)
function diceSpin() {
if (diceResult === 1) {
console.log(" .......")
console.log("|       |")
console.log("|   o   |")
console.log("|       |")
console.log(" ''''''' ")
} else if (diceResult === 2) {
console.log(" .......")
console.log("|       |")
console.log("| o   o |")
console.log("|       |")
console.log(" ''''''' ")
} else if (diceResult === 3) {
console.log(" .......")
console.log("|       |")
console.log("| o o o |")
console.log("|       |")
console.log(" ''''''' ")
} else if (diceResult === 4) {
console.log(" .......")
console.log("| o   o |")
console.log("|       |")
console.log("| o   o |")
console.log(" ''''''' ")
} else if (diceResult === 5) {
console.log(" .......")
console.log("| o   o |")
console.log("|   o   |")
console.log("| o   o |")
console.log(" ''''''' ")
} else {
console.log(" .......")
console.log("| o o o |")
console.log("| o o o |")
console.log("| o o o |")
console.log(" ''''''' ")
}
}
function diceSpin2() {
if (diceResult2 === 1) {
console.log(" .......")
console.log("|       |")
console.log("|   o   |")
console.log("|       |")
console.log(" ''''''' ")
} else if (diceResult2 === 2) {
console.log(" .......")
console.log("|       |")
console.log("| o   o |")
console.log("|       |")
console.log(" ''''''' ")
} else if (diceResult2 === 3) {
console.log(" .......")
console.log("|       |")
console.log("| o o o |")
console.log("|       |")
console.log(" ''''''' ")
} else if (diceResult2 === 4) {
console.log(" .......")
console.log("| o   o |")
console.log("|       |")
console.log("| o   o |")
console.log(" ''''''' ")
} else if (diceResult2 === 5) {
console.log(" .......")
console.log("| o   o |")
console.log("|   o   |")
console.log("| o   o |")
console.log(" ''''''' ")
} else {
console.log(" .......")
console.log("| o o o |")
console.log("| o o o |")
console.log("| o o o |")
console.log(" ''''''' ")
}
}
diceSpin();
diceSpin2();
if (diceResult > diceResult2) {
console.log("Dice 1 wins!")
} else if (diceResult < diceResult2) {
console.log("Dice 2 wins!")
} else {
console.log("Draw!")
}

您可以做的最简单的更改是将diceResult参数传递给函数。它将对不同的值执行相同的操作,这将允许您摆脱第二个函数。

const diceResult = Math.floor(Math.random() * 6) + 1;
const diceResult2 = Math.floor(Math.random() * 6) + 1;
console.log("Dice 1: "+diceResult+"     Dice 2: "+diceResult2)
function diceSpin(result){
if (result === 1) {
console.log(" .......")
console.log("|       |")
console.log("|   o   |")
console.log("|       |")
console.log(" ''''''' ")
}
else if (result === 2) {
console.log(" .......")
console.log("|       |")
console.log("| o   o |")
console.log("|       |")
console.log(" ''''''' ")
}
else if (result === 3) {
console.log(" .......")
console.log("|       |")
console.log("| o o o |")
console.log("|       |")
console.log(" ''''''' ")
}
else if (result === 4) {
console.log(" .......")
console.log("| o   o |")
console.log("|       |")
console.log("| o   o |")
console.log(" ''''''' ")
}
else if (result === 5) {
console.log(" .......")
console.log("| o   o |")
console.log("|   o   |")
console.log("| o   o |")
console.log(" ''''''' ")
}
else {
console.log(" .......")
console.log("| o o o |")
console.log("| o o o |")
console.log("| o o o |")
console.log(" ''''''' ")
}
}
diceSpin(diceResult);
diceSpin(diceResult2);
if (diceResult > diceResult2){
console.log("Dice 1 wins!")
}
else if (diceResult < diceResult2){
console.log("Dice 2 wins!")
}
else {
console.log("Draw!")
}

还可以使用switch语句更改这些if块。

您可以做的另一个更改是将Math.floor(Math.random() * 6) + 1;移动到新函数以重用此代码。

如果遵循OP并将所有内容实现到单个函数中,则可以将要记录的骰子角色布局存储到一个数组中,其中每个布局本身是要记录的布局行的数组。

的优点是,现在甚至可以很容易地"打印">/记录两个骰子角色布局相邻,完全像骰子角色的点数计数从原始代码。

const diceRollLayouts = [[
" ....... ",
"|       |",
"|   o   |",
"|       |",
" ''''''' ",
], [
" ....... ",
"|     o |",
"|       |",
"| o     |",
" ''''''' ",
], [
" ....... ",
"| o     |",
"|   o   |",
"|     o |",
" ''''''' ",
], [
" ....... ",
"| o   o |",
"|       |",
"| o   o |",
" ''''''' ",
], [
" ....... ",
"| o   o |",
"|   o   |",
"| o   o |",
" ''''''' ",
], [
" ....... ",
"| o   o |",
"| o   o |",
"| o   o |",
" ''''''' ",
]];
function randomIntegerFromRange(lower, upper) {
return Math.floor(Math.random() * (upper - lower + 1)) + lower;
}
function diceRoll() {
const pips1 = randomIntegerFromRange(1, 6);
const pips2 = randomIntegerFromRange(1, 6);
console.log(
"Dice 1: " + pips1 + "     Dice 2: " + pips2
);
diceRollLayouts[pips1 - 1]
.forEach((layoutRow, rowIdx) =>
console.log(
layoutRow + '     ' + diceRollLayouts[pips2 - 1][rowIdx]
)
);
if (pips1 > pips2) {
console.log("Dice 1 wins!")
} else if (pips1 < pips2) {
console.log("Dice 2 wins!")
} else {
console.log("Draw!")
}
}
diceRoll();
.as-console-wrapper { min-height: 100%!important; top: 0; }

相关内容

  • 没有找到相关文章

最新更新