2016-05-21 7 views
0

私は、問題にある程度の洞察を得るために、スタックオーバーフローの賢明なものに来ることに決めました。私はjavascriptの初心者で、私が出席している学校から、Lucky 7のプログラムを作成する課題が与えられています。生のJavascriptを使用してLucky 7のゲームを作成すると、何が間違っていますか?

命令は、ユーザは、賭け金を置くプレイをクリックすると、2個のダイスをロールしているということです。ダイスの合計が7の場合、ユーザーのベットに$ 4が追加され、そうでなければ$ 1が減算されます。

プレーヤーが$ 0に達すると、結果を示すテーブルが表示されます。結果は、「ベット開始」、「ブローする前の合計ロール数」、「最高額ウォン」、および「最高額ウォンからのロールカウント」です。

は、これまでのところ私は働いて、それのほとんどを持っているが、結果は常に似ています。すべての結果は、開始賭けと同じであり、最高額が勝っ除いて、それは常に起動賭けよりも1以下です。

私のwhileループと関係がありますか?私は物事を動かし、bet = bet + 4ではなく代入演算子を+=に変更しようとしましたが、常に同じです。どんな入力でも大変感謝しています!

function hideResults() { 
    document.getElementById("results").style.display = "none"; 
} 

function play() { 
    var startingBet = document.getElementById("betInput").value; 
    var bet = startingBet; 
    var dice1 = Math.floor(Math.random() * 6) + 1; 
    var dice2 = Math.floor(Math.random() * 6) + 1; 
    var diceRoll = dice1 + dice2; 
    var betsArray = []; 

    while (bet > 0) { 
     if(diceRoll != 7) { 
      bet -= 1 
     } else { 
      bet += 4 
     } 
     betsArray.push(bet) 
    } 

    var rollCounter = betsArray.length; 
    var highestAmount = Math.max.apply(Math, betsArray); 
    var highestPosition = betsArray.indexOf(highestAmount); 
    var rollsFromHighest = rollCounter - highestPosition; 

    function showResults() { 
    document.getElementById("results").style.display = "inline"; 
    document.getElementById("playButton").innerHTML = "Play Again"; 
    document.getElementById("resultsBet").innerHTML = "$" + startingBet +".00"; 
    document.getElementById("resultsRollCounter").innerHTML = rollCounter; 
    document.getElementById("resultsHighestHeld").innerHTML = "$" +  highestAmount + ".00"; 
    document.getElementById("resultsRollsFromHighest").innerHTML = rollsFromHighest; 
    }; 

    showResults(); 
} 

HTML:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Lucky Sevens</title> 
    <link href="css/LuckySevensStyles.css" rel="stylesheet" type="text/css"> 
    <script type="text/javascript" src="js/LuckySevensV1.js"></script> 
</head> 
<body onload="hideResults()"> 

    <!-- BET STUFFS --> 

<div id="gameDiv"> 
    <h1>Lucky Sevens</h1> 
    <span>Starting Bet:<input type="number" name="Starting Bet" id="betInput" placeholder="$0.00"></span> 
     <br/> 
      <button onclick="play()" id="playButton">Play</button> 
     </form> 
    </div> 

    <!-- RESULT STUFFS --> 

    <div id="results"> 
     <table> 
     <caption><h2>Results</h2></caption> 
      <tr> 
       <th>Starting Bet</th> 
       <th id="resultsBet"></th> 
      </tr> 
      <tr> 
       <td>Total Rolls Before Going Broke</td> 
       <td id="resultsRollCounter"></td> 
      </tr> 
      <tr> 
       <td>Highest Amount Won</td> 
       <td id="resultsHighestHeld"></td> 
      </tr> 
      <tr> 
       <td>Roll Count at Highest Amount Won</td> 
       <td id="resultsRollsFromHighest"></td> 
      </tr> 
     </table> 
    </div> 
</body> 
</html> 
+0

場合、それは後のループにdice1 & dice2とdiceRollのVARのインスタンスから、あなたの行をコピー&ペーストするのも簡単ですwhileループ内でダイスを巻き戻さない。 – James

+0

あなたは決してサイコロを振ってはいけません。賭け金やロールの数に上限があると確信しています。プレイヤーが0ドルに達するまでのポイントが再生されない限り、 –

+0

私のループ内のdiceRollはすべてのループの後にリセットされませんか?そしてポイントは、プレイヤーは、その後の結果は声明 – eric

答えて

1

diceRollが再乱数を計算しませんVARIABLE。更新されたベットを配列にプッシュした後、ループ内の乱数を再割り当てする必要があります。

したい場合は、あなたがこれを処理する関数を書くことができますが、あなたがしているブロック

+0

大丈夫そうちょうど私がif文の中にdiceRoll変数を持っているので、それを意味しない場合ああそう、私は外diceRollを置くべき – eric

+0

前後に関係なく、ループ内で処理するだけです。変数がチェックされるたびに初期値にリセットされていれば、実際には役に立たないので、更新する必要があるときは明示的に再割り当てする必要があります –

+0

ああ、毎回乱数を生成すると思っていました。再度、感謝します! – eric

関連する問題