2

編集*

私の単語ゲームでは、再起動ボタンを追加しました。現時点での問題は、それを押すと、本来のようにスタート画面に戻ることです。しかし、スタートボタンをもう一度クリックすると、すでにプレイされている前のゲームに戻ります。新しいゲームで再度実行できるように、すべてのコードを個別の関数に入れました。問題は、前回のゲームをクリアして最初からやり直す方法がわからないことです。このボタンがクリックされたときにすべての機能を再起動するにはどうすればよいですか?

私は機能を持っています..

createGrid()
startplay()
restartplay()
keyPress()
backGroundSound()
dragEvent()
nextQuestion()
closeMessage()
replaySound()
backGroundImage()

そして、それらすべてを document.ready 関数で実行します

$(document).ready(function () {

backGroundSound();
createGrid();
keyPress();
backGroundImage();
playBackGroundSound();
dragEvent();

$('.next-question').on('click', function () {
    nextQuestion();
});
$('.close-message').one("click", function () {
    closeMessage();
});
$(".replay-sound").click(function () {
    replaySound();
});
//Click event to start the game
$(".start-btn-wrapper").click(function () {
    startplay();
});
//Click event to restart the game
$(".restart-btn").click(function () {
    restartplay();
});     

再起動ボタンがクリックされたときに関数をフラッシュしてから、もう一度開始ボタンをクリックすると、ユーザーのために新しいゲームを開始します。ページを更新するだけでなく、どうすればこれを行うことができますか?

再起動ボタンがクリックされたときに機能をクリアし、開始ボタンがクリックされたときに機能を再起動したい。

このフィドルにはスクリプトのみがあります: http://jsfiddle.net/V4SYZ/

4

2 に答える 2

1

おそらく、最後のゲームのデータを保存していたデータ構造を一掃する必要があるだけです。たとえば、配列内にある場合は、空の配列にリセットするdata = []か、オブジェクト内に空のオブジェクトdata = {}などがあります。コードの構造とその仕組みについて詳しく知らずに、より具体的に説明することは困難です。

編集

$.ready()そのフィドルに投稿したコードを見ると、一連の変数を空の配列に初期化する場合にこれらすべての関数を呼び出す直前に、コードを詳しく調べていませんが、新しいゲームを開始するには、おそらくもう一度コードを確認する必要があります。

前に提案したように、そのコードを新しい関数に移動します。

Function newGame() {
    randomWord = [];
    listOfWords = [];
    attemptNumber = [];
    completionNumber = [];
    populationNumber = [];
    gridSize = [];

    backGroundSound();
    createGrid();
    keyPress();
    backGroundImage();
    playBackGroundSound();
    dragEvent();
}

次にnewGame()、ハンドラーで関数を呼び出し、$.ready()のクリック ハンドラーを呼び出し.restart-btnます。

$(document).ready(function () {

    newGame();

    $('.next-question').on('click', function () {
            nextQuestion();
    });
    $('.close-message').one("click", function () {
            closeMessage();
    });
    $(".replay-sound").click(function () {
            replaySound();
    });
    //Click event to start the game
    $(".start-btn-wrapper").click(function () {
            startplay();
    });

    //Click event to restart the game
    $(".restart-btn").click(function () {
            newGame();
            restartplay();
    });     

});
于 2012-11-26T09:32:30.560 に答える
0

次のように、キャッシュされていないリロードを常に実行できます。

window.location.reload(true);

これは、ブラウザにページをリロードし、メモリにあるものを明示的に使用しないCntrl+F5ように指示します (基本的に、Windows マシンの と同じです)。ただし、これは、現在の「セッション」で何も保持する必要がないことを前提としています。

于 2012-11-26T09:17:42.163 に答える