2017-10-19 161 views
1

爲了練習編碼,我使用輪盤製作一個虛擬賭場。爲了簡單起見,車輪目前只有4個部分,而不是通常的37個。我試圖設置一個「金錢」變量,每當玩家旋轉輪盤時就進行調整。 IE如果玩家在第4號投​​注10美元並輸掉,他們現在將有190美元而不是200美元。問題是,「貨幣」變量似乎沒有改變,儘管它是一個全局變量。全局變量在函數中不會改變

這是我的一段代碼。問題是什麼?

var money = 200; 

function spin(){ 
    var landing = Math.floor(Math.random() * 4) + 1; 

    var nsvalue = parseInt(document.regular_roulette.num_select.value); 

    var betvalue = parseInt(document.regular_roulette.bet.value); 

    if (landing === nsvalue) { 
    alert("You win $" + betvalue * 3); 

    money = money + (betvalue * 3); 
    } else { 
    alert("You lose $" + betvalue); 

    money = money - betvalue; 
    } 
} 

document.write("You currently have $" + money); 
+0

你是如何調用'文件撰寫()'?你應該在你的函數本身中調用它(或以其他方式更新頁面)。否則,你只能輸出到頁面一次;在任何投注發生之前。在**'money'更新之後,您需要更新輸出**。 –

+0

你確定你從某處調用'spin()'方法嗎?另外問題可能出現在'document.regular_roulette.bet.value'中 - 它可能爲零/未定義... – dhilt

+0

請注意'document.write'會覆蓋你的文檔... –

回答

-1

而不是使用全局變量。你可以嘗試將它傳遞給函數並返回並重新分配它。

var money = 200; 

     function spin(m){ 



        var landing = Math.floor(Math.random() * 4) + 1; 

        var nsvalue = parseInt(document.regular_roulette.num_select.value); 

        var betvalue = parseInt(document.regular_roulette.bet.value); 


        if (landing === nsvalue) 
        { 
         alert("You win $" + betvalue * 3); 

         m = m + (betvalue * 3); 


        } 

        else 
        { 
         alert("You lose $" + betvalue); 

         m = m - betvalue; 


        } 
        return m; 
     } 

    money = spin(m); 

    document.write("You currently have $" + money); 
0

通常情況下,你可能把這個在一些輸入字段,檢查這些值(檢查非數字),並輸出到頁面上的一些元素。在這裏我使用旋轉按鈕點擊旋轉動作。例。

var money = 200; 
 

 
function spin() { 
 
    var landing = Math.floor(Math.random() * 4) + 1; 
 
    var nsvalue = parseInt(document.getElementById("num_select").value); 
 
    var betvalue = parseInt(document.getElementById("bet").value); 
 
    if(!isNaN(nsvalue)&& !isNaN(betvalue)) 
 
    if (landing === nsvalue) { 
 
    document.getElementById("action").innerText =("You win $" + betvalue * 3); 
 
    money = money + (betvalue * 3); 
 
    } else { 
 
    document.getElementById("action").innerText =("You lose $" + betvalue); 
 
    money = money - betvalue; 
 
    } 
 
//something here to show spin value perhaps? 
 
} 
 
document.getElementById("spinme").onclick = function(event) { 
 
    spin(); 
 
    document.getElementById("results").innerText = ("You currently have $" + money); 
 
}
<div id="results"> 
 
    empty 
 
</div> 
 
<div id="regular_roulette"> 
 
    <label>Choice 
 
    <input id="num_select"> 
 
    </label> 
 
    <label>Bet 
 
    <input id="bet"> 
 
    </label> 
 
</div> 
 
<button id="spinme"> 
 
    Spin! 
 
</button> 
 
<div id="action"> 
 

 
</div>