今天我們要來談一下JavaScript中的猜數字游戲。
猜數字游戲是一種很老的游戲了,它的規則非常簡單:一個人想一個數字,另外一個人用不斷地猜測來找出這個數字。在JavaScript中,我們可以通過一些代碼來模擬這個游戲。
var answer = 5; var guess = prompt("請猜一個1到10之間的數字:"); if (guess == answer) { alert("恭喜你猜對了!"); } else { alert("很遺憾,你猜錯了,請繼續努力!"); }
上面的代碼中,我們首先設定了答案為5。接著,我們使用prompt()方法實現了輸入框,讓用戶可以輸入自己猜的數字。如果用戶猜對了,就會得到一條恭喜的信息;如果猜錯了,就會得到一條鼓勵繼續的信息。
不過,這個代碼存在一個問題:如果用戶沒有輸入數字,或者輸入了一個不在1到10之間的數字,會發生什么呢?
var answer = 5; var guess = prompt("請猜一個1到10之間的數字:"); if (guess == answer) { alert("恭喜你猜對了!"); } else if (guess === null) { alert("你取消了操作!"); } else if (isNaN(guess) || guess < 1 || guess > 10) { alert("請輸入一個1到10之間的數字!"); } else { alert("很遺憾,你猜錯了,請繼續努力!"); }
為了解決這個問題,我們需要對代碼進行一些修改。首先,在第一個判斷條件之后,我們加上了一個else if語句,判斷用戶是否點擊了取消按鈕。如果取消了,就會得到一條提示信息。
接著,在第二個判斷條件之后,我們使用isNaN()方法來判斷用戶輸入的是否是一個數字,同時也判斷了用戶輸入的數字是否在1到10之間。
通過這些修改,用戶不再會輸入無效的數字,程序也不會因為無效的用戶輸入而崩潰了。
另外,我們還可以對代碼進行一些修改,讓它更加實用:
var answer = Math.floor(Math.random() * 10) + 1; var attempts = 0; var maxAttempts = 5; while (attempts < maxAttempts) { var guess = prompt("請猜一個1到10之間的數字,你還有" + (maxAttempts - attempts) + "次機會:"); if (guess == answer) { alert("恭喜你猜對了!"); break; } else if (guess === null) { alert("你取消了操作!"); break; } else if (isNaN(guess) || guess < 1 || guess > 10) { alert("請輸入一個1到10之間的數字!"); } else { attempts++; if (attempts == maxAttempts) { alert("很遺憾,你猜錯了,也耗盡了所有機會!"); } else if (guess > answer) { alert("你猜的數字比答案大!"); } else if (guess < answer) { alert("你猜的數字比答案小!"); } } }
上面的代碼中,我們使用了Math.random()方法生成了一個1到10之間的隨機數作為答案。我們還定義了最多可以猜5次,限制了猜數的機會。
程序開始時,我們使用了一個while循環,一直在等待用戶輸入數字。如果用戶猜對了,就會彈出一個恭喜的信息,并且跳出循環;如果用戶取消了操作,也會彈出相應的提示信息,并跳出循環。
如果用戶猜錯了,我們會先判斷是否超過了最大猜數的機會。如果超過了,就會得到一條很遺憾的信息。
如果還有機會,我們會判斷用戶猜測的數字與答案的大小關系,并給出相應的提示信息。如果用戶猜的數字比答案大,就會得到一個比答案大的提示;如果猜的數字比答案小,就會得到一個比答案小的提示。同時,我們還會計算已經使用的次數,更新剩余次數的提示。
這個程序雖然比較簡單,但是它展示了JavaScript語言的強大之處:通過代碼模擬真實的游戲,讓我們能夠更深入地理解語言的特性。