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