2014-05-03 66 views
3

//初學Js在一個程序中我被要求開始在Rock,Paper,Scissors遊戲上工作 這是我製作的代碼,但電腦總是選擇剪刀!?任何想法爲什麼? 任何幫助將是可怕的!如何查看數字是否在「之間」值?

  1. 如果computerChoice介於0和0.33之間,則使computerChoice等於「rock」。

  2. 如果computerChoice介於0.34和0.66之間,請使computerChoice等於「紙張」。

  3. 如果computerChoice在0.67和1之間,則使computerChoice等於「剪刀」。

var userChoice = prompt ("Do you choose rock, paper or scissors?"); 

var computerChoice = Math.random(); 

if (computerChoice === (0 , 0.33)) { 
    console.log("rock"); 
} else if (computerChoice === (0.34 , 0.66)) { 
    console.log("paper"); 
} else { 
    console.log("scissors"); 
} 
+8

語言往往效果最好當你沒有制定自己的語法,並期望它的工作。你在哪裏拿出'computerChoice ===(0,0.33)'? –

+0

Duplicate:http://stackoverflow.com/questions/6454198/javascript-check-a-range-of-numbers-in-if-statement(我用完了所有的密切投票)。 –

+0

這是否有助於簡化您正在檢查的內容? http://stackoverflow.com/questions/1527803/generating-random-numbers-in-javascript-in-a-specific-range 設置範圍爲1 - 3,並檢查相應的.. – gratz

回答

6

首先,你不能只是彌補語法 - 這是行不通的。編程是關於existing rules的應用,大多數規則不是你自己的。

在JavaScript中,由於comma-operatorx === (a, b)語義上等同於x === b(當a表達式沒有副作用),以便清楚地將不起作用。在原始代碼中,這保證了前兩個條件(例如choice === 0.33)中沒有一個匹配 - 所以總是選擇默認的/其他的「剪刀」。

雖然the general way to check an inclusive range is x >= a && x <= b,我們可以通過一系列具有更多依靠if條件評估和"inchworming"的排序做得比這更好。

if (choice <= 1/3) { 
    console.log("rock"); 
} else if (choice <= 2/3) { /* choice > 1/3, per above */ 
    console.log("paper"); 
} else {     /* choice > 2/3, per above */ 
    console.log("scissors"); 
} 

另外,我們還可以得到一個不顯眼的隨機整數回來,

/* get a random number 1, 2, or 3 */ 
var choice = Math.floor(Math.random() * 3 + 1); 

,並沒有一個範圍檢查,然後直接平等可用於

if (choice === 1) { 
    console.log("rock"); 
} else if (choice === 2) { 
    console.log("paper"); 
} else { /* choice === 3 */ 
    console.log("scissors"); 
} 
+0

+1:很好的解釋發生了什麼,並很好地捕捉到(0,0.33)'的(無意義的)有效性。 –

1

您沒有使用有效的JavaScript語法數值比較。目前在JavaScript中沒有的結構,可以讓你做到這一點:

if(computerChoice===(0, 0.33)){ 
    //... 
} 

試試這個:

if(computerChoice > 0 && computerChoice <= 0.33){ 
    //... 
} 
+0

惡魔的倡導者:JavaScript *確實允許第一種語法..它只是沒有,呃,有「之間」的行爲。 – user2864740

+0

有點偏離主題,但CoffeeScript將允許'if 0 Seiyria

+0

@Seiyria這很酷。看起來它對Python使用了類似的擴展規則(它也允許這種條件鏈):'1 user2864740

相關問題