猜数字,也称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)