2016-08-25 8 views
0

window.loadは()ユーザーをさせることなく、3秒後に更新されますので、これは重複していないが、結果を参照してください完全にボタンクリックでロック、ペーパー、はさみゲームをリフレッシュする方法は?

私は何をしたいユーザーは、新しいを作るために別のボタンをクリックしたときにゲームが自動的にリセット持っています「リセット」ボタンをクリックするためにページをリフレッシュする必要はありません。

これには、スクリプトを再度実行する前にinnerHTMLをクリアして変数onclickをリセットする必要がありますか?

私のコードはここにある:http://jsbin.com/yuvalucupo/edit?html,css,js

//var rock = document.getElementById("rock"); 
 
//var paper = document.getElementById("paper"); 
 
//var scissors = document.getElementById("scissors"); 
 

 
var screen = document.getElementById("screen"); 
 
var compAnswer = Math.random(); 
 

 
//Set computer value 
 
if (compAnswer >= 0 && compAnswer <= 0.33) { 
 
    compAnswer = "rock"; 
 
} else if (compAnswer >= 0.34 && compAnswer <= 0.66) { 
 
    compAnswer = "paper"; 
 
} else { 
 
    compAnswer = "scissors"; 
 
} 
 

 
function result(choice1, choice2) { 
 
    if (choice1 === choice2) { 
 
    screen.innerHTML = "<p>It's a tie!</p>"; 
 
    } 
 
    //Rock Start 
 
    else if (choice1 === "rock" && choice2 === "scissors") { 
 
    screen.innerHTML = "<p>Rock Wins!</p>"; 
 
    } else if (choice1 === "rock" && choice2 === "paper") { 
 
    screen.innerHTML = "<p>Paper Wins!</p>"; 
 
    } 
 
    //End Rock 
 

 
    //Paper Start 
 
    else if (choice1 === "paper" && choice2 === "scissors") { 
 
    screen.innerHTML = "<p>Scissors Wins!</p>"; 
 
    } else if (choice1 === "paper" && choice2 === "rock") { 
 
    screen.innerHTML = "<p>Paper Wins</p>!"; 
 
    } 
 
    //Paper End 
 

 
    //Scissors Start 
 
    else if (choice1 === "scissors" && choice2 === "paper") { 
 
    screen.innerHTML = "<p>Scissors Wins</p>"; 
 
    } else if (choice1 === "scissors" && choice2 === "rock") { 
 
    screen.innerHTML = "<p>Rock Wins</p>"; 
 
    } 
 
    //Scissors End 
 
} 
 
//Display Computer's Answer 
 
function displayCompAnswer() { 
 
    var computer = document.getElementById("computerAnswer"); 
 
    computer.innerHTML = compAnswer; 
 
}
#screen, #computerAnswer { 
 
    height: 100px; 
 
    width: 250px; 
 
    background-color: lightgrey; 
 
    border: 1px solid black; 
 
}
<div id="screen"></div> 
 
<button id="rock" onclick="userAnswer = 'rock'; result(userAnswer, compAnswer); displayCompAnswer();">Rock</button> 
 
<button id="paper" onclick="userAnswer = 'paper'; result(userAnswer, compAnswer); displayCompAnswer();">Paper</button> 
 
<button id="scissors" onclick="userAnswer = 'scissors'; result(userAnswer, compAnswer); displayCompAnswer();">Scissors</button> 
 
<div id="computerAnswer"></div>

+2

[JSを使用してリフレッシュブラウザウィンドウ]の可能な重複(http://stackoverflow.com/questions/19791148/refresh-browser-window -using-js) – Cruiser

+0

* "3秒後にwindow.load()がリフレッシュされるため、これは重複しません" *:重複しています。あなたはもちろん、そのコールを適切な場所に置く必要があります。その方法と* 3秒*の間にリンクはありません。どのボタンイベントを呼び出すかを決定します。 – trincot

答えて

0

あなたはあなたのゲームを "リセット" するために、このような何かを行う可能性があります:

function clearMessage(event) { 
    event.preventDefault(); // Stops the page from refreshing 
    var screen = document.getElementById("screen"); 
    screen.innerHTML = ''; 
} 

その後、あなたは、リセットボタンを持つことができますこのように

<button onclick="clearMessage(event)">Reset</button> 

ここで私はあなたのコードを見て、いくつかの他の考えです。それぞれの機能がどのように1つしかないのかを見てみましょう。ここで

// input: 0 = rock, 1 = paper and 2 = scissors 
function makeUserSelection(choice) { 
    var computerChoice = getCompAnswer(); 
    var result = getResult(choice, computerChoice); 
    displayResult(result); 
} 

// output: 0 = rock, 1 = paper and 2 = scissors 
function getCompAnswer() { 
    var rand = Math.random(); 
    if (compAnswer <= 0.33) { 
     return 0; 
    } 

    return (compAnswer <= 0.66) ? 1 : 2; 
} 

// input: 0 = rock, 1 = paper and 2 = scissors 
// output: 0 = draw, 1 = user wins and -1 = user loses. 
function getResult(userValue, computerValue) { 
    if(userValue === computerValue) { 
     return 0; // draw 
    } 
    return ((userValue + 1) % 3 === computerValue) ? return -1 : 1; 
} 

displayMessage(message) { 
    var screen = document.getElementById('screen'); 
    screen.innerHTML = '<p>' + message + '</p>'; 
} 

function displayResult(result) { 
    messages = ["It's a draw", "You lose", "You win"]; 
    displayMessage(messages[result]); 
} 

は、私は、ボタンを更新してしまう方法です。

<div id="screen"></div> 
<button id="rock" onclick="makeUserSelection(0);">Rock</button> 
<button id="paper" onclick="makeUserSelection(1);">Paper</button> 
<button id="scissors" onclick="makeUserSelection(2);">Scissors</button> 
<button id="reset" onclick="clearMessage(event);">Reset</button> 
<div id="computerAnswer"></div> 
関連する問題