安殷福
猜數(shù)字,也稱Bulls and Cows,是一款古老的密碼破譯類益智小游戲,起源于20世紀中期,一般由兩個人或多人玩,也可以由一個人和電腦玩。通常一方出數(shù)字,另一方猜。出數(shù)字的人要想好一個沒有重復數(shù)字的四位數(shù)(十個數(shù)碼,四個數(shù)位,不含重復數(shù)字),不能讓猜的人知道。猜的人每猜一次數(shù)字,出數(shù)者就要根據(jù)這個數(shù)字給出幾A幾B的提示,其中A前面的數(shù)字表示位置正確的數(shù)的個數(shù),而B前的數(shù)字表示數(shù)字正確而位置不對的數(shù)的個數(shù)。接著猜的人再根據(jù)出題者的提示繼續(xù)猜,直到猜中(即4A0B)為止。如果七次都沒猜出即游戲失?。▓D1)。
利用Scratch如何來制作這樣一款游戲呢?思路是這樣,首先系統(tǒng)要準備一個四位數(shù),確保隨機且不重復,然后讓游戲者輸入四位數(shù)字,系統(tǒng)截取四位數(shù)字,這樣,即使輸入再多,也只會保留前四位,并將用戶輸入的四位數(shù)字與系統(tǒng)生成的四位數(shù)字相比較,根據(jù)是否有這個數(shù)字以及位置是否一致,給出提示,即幾A幾B。七次之后,不再出現(xiàn)輸入框,游戲結(jié)束,公布游戲結(jié)果:如果第七次的結(jié)果是4A,則表示成功,否則失敗。
在背景圖層,利用循環(huán),先將0-9這十個數(shù)字存儲到列表“全部數(shù)碼”中,然后利用隨機函數(shù),從列表中隨機取出四個數(shù)字,產(chǎn)生一個就存儲到列表“四個數(shù)字”中,并在全部數(shù)碼中刪除這項,這樣可以保證取到不同的數(shù)字。結(jié)束時,廣播“四位數(shù)已經(jīng)準備好!”消息(圖2)。
如何顯示用戶的七次答案(最多七次),并且每次是四個數(shù)字?還得用循環(huán),并且是嵌套循環(huán),外循環(huán)七次,內(nèi)循環(huán)四次,分別用i和j來計數(shù),內(nèi)循環(huán)中克隆數(shù)字,每次克隆后顯示相應的造型,并利用i和j來進行定位。同時,將用戶的四個數(shù)字分別存入列表“玩者輸入”中,在下次循環(huán)前,將“玩者輸入”清空(圖3)。
上一步是顯示用戶輸入的答案,這一步是告訴用戶,是第幾次猜測了,最多顯示七次。位置定位難度不大,X坐標不變,Y坐標逐漸減小。關鍵是克隆,如果用“作為克隆體啟動時”積木的話,會產(chǎn)生克隆體的克隆,這樣就會導致混亂,所以只需要克隆一個,就將母體移動到相應位置即可(圖4)。
根據(jù)用戶輸入的答案,系統(tǒng)必須給出相應的提示,即幾A幾B,這里可以分成兩步:第一步,顯示A和B字符;第二步,顯示A和B前面的數(shù)字。
首先來看第一步,利用克隆顯示兩個字符,這個容易做到,關鍵是什么時候顯示,以及顯示在什么位置。這里可以利用j變量,因為只有界面上顯示用戶輸入的數(shù)字后,系統(tǒng)才能給出提示,而每次用戶輸完,此時的j已經(jīng)增加到5了,為了每次只產(chǎn)生兩個字符,可以做個判斷,即當j=4或者5的時候,進行克隆字符,同時利用i和k變量來進行定位(圖5)。
再來看第二步,如何讓系統(tǒng)給出確切的提示呢?必須新建兩個變量Acorrect、Bcorrect,并在數(shù)碼角色的代碼中加入判斷,如果輸入的數(shù)字在系統(tǒng)給定的四位數(shù)中,并且位置也正確,則Acorrect增加1,否則Bcorrect增加1。然后在提示角色的代碼中再次克隆,并顯示正確的造型(圖6、圖7)。
最后,在文字角色中,增加兩個造型,第一個是成功,第二個是失敗。當Acorrect等于4時,游戲立即結(jié)束,并顯示成功;如果i等于7,Acorrect不等于4,游戲也結(jié)束,顯示失?。。▓D8、圖9)