需要帮助在二十一点游戏中的if语句
Need assistance with if statement in Blackjack game
我正在开发我的第一个二十一点游戏,我一直对最简单的事情感到困惑。问题出在我的 if 语句中,我这样说:
if ( cardsinhand < 7 && newcard != firstcard && newcard != secondcard )
当我按下"打我"按钮时,它会一遍又一遍地发给我同一张牌。这是我的函数。我需要 if 语句中的信息为真然后执行,否则就不执行。
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++
}
}
同样值得一提的是,如果您刚刚开始,您可能需要考虑使用数组来存储手牌。当你的新卡可能是第一张卡、第二张卡或第三张卡时,if
条件会发生什么?
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何在 API 调用后和 if 语句中启用提交按钮
- 带有多个elseif的Javascript if语句
- Sharepoint JScript if语句未执行
- for循环中的javascript if语句找不到==
- jquery if语句返回return wong语句
- 在if语句下的html中使用javascript变量
- 将错误与if语句混淆
- 循环通过数组的If语句不起作用
- jQuery模板中的If语句
- 如何从数据库中回显If语句
- 如何减少if语句的数量
- 在Javascript中将一个值和字符串数组转换为if语句
- Dropbox oauth认证的IF语句的第二部分是't已触发
- MVC Jquery-按钮点击-获取if语句错误
- 如何重写Javascript If语句以选择Classes而不是ID's的HTML格式
- KnockoutJS:为虚拟元素使用嵌套的条件if语句
- If语句发布或操作员发布
- 清除函数中if语句内部不起作用的间隔
- 使用if语句重新循环