這是一個非常廣泛的話題,我真的不應該走近它。但我會反正。
您之前的程序版本基本上是一個控制檯應用程序。這些都是同步的,在繼續之前等待用戶輸入。
不幸的是,這不是網頁或Web應用程序的工作方式。對於它的價值,這不是基於Windows UI的應用程序的工作方式。一旦你添加了一個UI,你就進入了事件驅動的邏輯流程。任何事件都可以在任何時候發生,並且您必須能夠處理該事件。
除此之外,還有很多您的研究和實驗,我可以幫助你的唯一方法就是給你一點點餵養。這是一個可以幫助你開始的樣本。它並不漂亮,它有一些缺陷,但它會讓你看到如何進行異步編程。
HTML
<textarea id="console" style="height: 400px; width: 600px}"></textarea>
<div id="more">More</div>
<div id="less">Less</div>
的JavaScript
var failed = false;
var number;
var nextNumber = Math.floor(Math.random() * 52) + 1;
var rounds = 1;
function newRound() {
number = nextNumber;
nextNumber = Math.floor(Math.random() * 52) + 1;
document.getElementById("console").innerHTML += "\nYou are in round " + rounds + ". The current number is: " + number + ". Guess More or Less.";
}
function checkFailed() {
if (failed) {
var ans = prompt("You lost. Try again?");
if (ans == "Yes") {
rounds = 1;
document.getElementById("console").innerHTML = "";
failed = false;
newRound();
}
}
}
document.getElementById("more").onclick = function() {
checkFailed();
if (nextNumber >= number) {
document.getElementById("console").innerHTML += "\nGood guess! The next number was " + nextNumber;
++rounds;
newRound();
} else {
document.getElementById("console").innerHTML += "\nSorry, you failed. The next number was " + nextNumber;
failed = true;
}
};
document.getElementById("less").onclick = function() {
checkFailed();
if (nextNumber <= number) {
document.getElementById("console").innerHTML += "\nGood guess! The next number was " + nextNumber;
++rounds;
newRound();
} else {
document.getElementById("console").innerHTML += "\nSorry, you failed. The next number was " + nextNumber;
failed = true;
}
};
newRound();
你可以用它HERE
有幾件事情起到不te:
- 除了第一個
newRound
之外的所有遊戲玩法都是由用戶發起的。用戶必須點擊遊戲才能前進。
- 其中的一些類似於你之前做過的 - 聲明變量並設置它們。但遊戲邏輯被移入按鈕處理程序。
- 我們必須處理用戶在丟失後按下按鈕的情況。 (有更好的方法去做,比我給你的方式更好
- 我們不能假定有一個控制檯,所以我們假冒我們自己
- 我們充分利用函數 - 不僅僅是回調,而是做日常任務。
- 回調被找到感興趣的元素,並設置處理器爲它的事件註冊。有很多的events你可以註冊。
- 的回調實際上可以帶參數的更復雜的功能,但這段代碼沒有必要。