在21点游戏中需要帮助if语句
问题描述:
我正在开发我的第一个黑色杰克游戏,并且我一直对最简单的事情感到困惑。这个问题在我的if语句我要说的是:在21点游戏中需要帮助if语句
if (cardsinhand < 7 && newcard != firstcard && newcard != secondcard)
,当我按下打我按钮,它会一遍又一遍对付我一样卡。这是我的功能。我需要if语句中的信息为true,然后执行,否则就不执行。
cardsinhand = 2
firstcard = Math.floor(Math.random() * 1000 % 52)
secondcard = Math.floor(Math.random() * 1000 % 52)
newcard = Math.floor(Math.random() * 1000 % 52)
function hitCard()
{
if (cardsinhand < 7 && newcard != firstcard && newcard != secondcard)
{
document.images[cardsinhand].src = "http://www.biogow/images/cards/gbCard" + newcard + ".gif"
cardsinhand++
}
}
任何想法,为什么这不工作的权利?
答
这实际上并不是您的if
声明本身的问题。看来,这样的:
newcard = Math.floor(Math.random() * 1000 % 52)
正在做一次而不是每次你打的时间。这意味着你将一遍又一遍地得到相同的卡。
您应该在每次执行点击操作时重新计算一张新卡。
你或许应该也考虑如何你产生卡。通常情况下,你会使用一个甲板(包含一个或多个“真正的”甲板),以便随着卡的移除,概率发生变化,就像在现实生活中一样。
这也可以解决使用* 1000 % 52
时出现的任何歪斜问题,它倾向于喜欢卡片在“卡座”的一端。
答
这是因为你只有一次在功能体外生成newcard
。你想要的是每次生成新卡调用该函数,因此该行:newcard = Math.floor(Math.random() * 1000 % 52)
应该是里面的功能,像这样:
cardsinhand = 2
firstcard = Math.floor(Math.random() * 1000 % 52)
secondcard = Math.floor(Math.random() * 1000 % 52)
function hitCard()
{
var newcard = Math.floor(Math.random() * 1000 % 52)
if (cardsinhand < 7 && newcard != firstcard && newcard != secondcard)
{
document.images[cardsinhand].src = "http://www.biogow/images/cards/gbCard"+newcard+".gif"
cardsinhand++
}
}
也为它的价值,如果你刚开始时你可能想用Array来存放你的手牌。当你的新卡可能成为第一张卡时,第二张卡或第三张卡时,会发生什么情况if
?
谢谢你毕竟是我的问题 – Dolbyover 2013-05-06 03:08:56