安殷福
猜數字,也稱Bulls and Cows,是一款古老的密碼破譯類益智小游戲,起源于20世紀中期,一般由兩個人或多人玩,也可以由一個人和電腦玩。通常一方出數字,另一方猜。出數字的人要想好一個沒有重復數字的四位數(十個數碼,四個數位,不含重復數字),不能讓猜的人知道。猜的人每猜一次數字,出數者就要根據這個數字給出幾A幾B的提示,其中A前面的數字表示位置正確的數的個數,而B前的數字表示數字正確而位置不對的數的個數。接著猜的人再根據出題者的提示繼續猜,直到猜中(即4A0B)為止。如果七次都沒猜出即游戲失敗(圖1)。

利用Scratch如何來制作這樣一款游戲呢?思路是這樣,首先系統要準備一個四位數,確保隨機且不重復,然后讓游戲者輸入四位數字,系統截取四位數字,這樣,即使輸入再多,也只會保留前四位,并將用戶輸入的四位數字與系統生成的四位數字相比較,根據是否有這個數字以及位置是否一致,給出提示,即幾A幾B。七次之后,不再出現輸入框,游戲結束,公布游戲結果:如果第七次的結果是4A,則表示成功,否則失敗。
在背景圖層,利用循環,先將0-9這十個數字存儲到列表“全部數碼”中,然后利用隨機函數,從列表中隨機取出四個數字,產生一個就存儲到列表“四個數字”中,并在全部數碼中刪除這項,這樣可以保證取到不同的數字。結束時,廣播“四位數已經準備好!”消息(圖2)。

如何顯示用戶的七次答案(最多七次),并且每次是四個數字?還得用循環,并且是嵌套循環,外循環七次,內循環四次,分別用i和j來計數,內循環中克隆數字,每次克隆后顯示相應的造型,并利用i和j來進行定位。同時,將用戶的四個數字分別存入列表“玩者輸入”中,在下次循環前,將“玩者輸入”清空(圖3)。

上一步是顯示用戶輸入的答案,這一步是告訴用戶,是第幾次猜測了,最多顯示七次。位置定位難度不大,X坐標不變,Y坐標逐漸減小。關鍵是克隆,如果用“作為克隆體啟動時”積木的話,會產生克隆體的克隆,這樣就會導致混亂,所以只需要克隆一個,就將母體移動到相應位置即可(圖4)。

根據用戶輸入的答案,系統必須給出相應的提示,即幾A幾B,這里可以分成兩步:第一步,顯示A和B字符;第二步,顯示A和B前面的數字。
首先來看第一步,利用克隆顯示兩個字符,這個容易做到,關鍵是什么時候顯示,以及顯示在什么位置。這里可以利用j變量,因為只有界面上顯示用戶輸入的數字后,系統才能給出提示,而每次用戶輸完,此時的j已經增加到5了,為了每次只產生兩個字符,可以做個判斷,即當j=4或者5的時候,進行克隆字符,同時利用i和k變量來進行定位(圖5)。

再來看第二步,如何讓系統給出確切的提示呢?必須新建兩個變量Acorrect、Bcorrect,并在數碼角色的代碼中加入判斷,如果輸入的數字在系統給定的四位數中,并且位置也正確,則Acorrect增加1,否則Bcorrect增加1。然后在提示角色的代碼中再次克隆,并顯示正確的造型(圖6、圖7)。


最后,在文字角色中,增加兩個造型,第一個是成功,第二個是失敗。當Acorrect等于4時,游戲立即結束,并顯示成功;如果i等于7,Acorrect不等于4,游戲也結束,顯示失敗!(圖8、圖9)

