在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时出现的任何歪斜问题,它倾向于喜欢卡片在“卡座”的一端。

+0

谢谢你毕竟是我的问题 – Dolbyover 2013-05-06 03:08:56

这是因为你只有一次在功能体外生成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