【信息科技案例分享】
游戏里的概率统计
石头剪刀布
导语
石头剪刀布谁都玩过,小时候的小伙伴们经常用这种小游戏组队,选座位等等。
在功能强大的未来板Lite中也可以编写一个与电脑对战的石头剪刀布程序。同时,该程序是贴合新课标案例中“游戏博弈中的策略“章节,在于让学生理解博弈策略和概率统计。接下来让我们来看看具体是如何实现的吧!
材料准备
未来板 Lite*1
编程软件使用
Kittenblock1.89
功能介绍
功能很简单,大致分为四个板块:
①通过A键玩家选择石头/剪刀/步
②通过B键让电脑选择石头/剪刀/步
③每一次对决都会显示结果,并记录双方结果
④每完成十局对决,显示概率统计
前期准备
将事先准备好的石头剪刀布图片拖进未来板Lite里即可完成图片上传。
程序编写
1.初始页面编写
这部分程序主要是用于显示游戏规则,在按下M键后进入游戏。
进入游戏时需要对变量进行初始化设置,并封装在初始化函数里,这些变量的用意就和它们的名字一样通俗易懂,都是记录相关次数。比如【玩家出石头】变量就是记录玩家出石头的次数。
接下来就是程序的主体部分了,可以建两个封装函数代表玩家和电脑。
2.玩家选择手势
玩家通过A键来选择【玩家手势】变量,通过变量来确定手势并显示对应的图片。1=“石头”;2=“剪刀”;3=“布”。
需要注意,在程序开头没有设置自动刷新,仅仅依靠矩形图形来掩盖上一轮的图片信息。如果把矩形积木去掉,会暴露上一环节的图片,会产生如下情况:
如果按照目前的进度编写,可以完成简单的按键切换了,这一步就完成了。
3.电脑选择手势
剪刀石头布的核心程序全集中在这里,按下B键时有很多事情要交给未来板Lite处理,除了通过随机数让电脑出手势外,还需要记录玩家不同手势的次数。
在电脑即将出手势时,可以让不同的手势快速切换,这里可以把相关功能封装到【电脑选择过程】函数中,用于迷惑玩家。
在迷惑过后,根据随机数产生的数字来显示对应的图形,并记录手势次数。到这里【电脑选择过程】函数就完成了。
回到【电脑选择手势】函数,在电脑选择完成后应该要进行胜负判断,同样把这部分的功能封装到【胜负判断】函数进行调用。猜拳对局结果有三种情况,分为胜/负/平。显示结果时用两个矩形积木把两方的手势遮挡掉,这里先展示结果为平局情况的程序。
接下来分类讨论输赢情况,如果玩家出石头而电脑出剪刀,则玩家赢,反之玩家输。这里把所有玩家会赢的情况列出来,由于程序太长,这里只展示一部分。如果你也完成了这一步,那么【胜负判断】的程序也完成了。
到这里程序写的差不多了,每判断一次胜负,猜拳次数都会增加,并且显示当前是第几轮。最后的任务就是把每十局的概率统计显示出来就好了。这里把概率统计的函数封装到【轮次判断】中。
4.概率统计
在此函数中,只有次数大于10次时才会触发,触发时使用黑色填充来覆盖先前所呈现的内容,并且在屏幕顶部显示玩家胜/平/负的次数。把“玩家胜-平-负:”+“【玩家胜利次数】”+“-”+“【平局次数】”+“-”+“【电脑获胜次数】”连接起来。
随后对显示的内容进行计算排布,分别利用先前的变量数据,分别计算出玩家和电脑的胜率和手势的出现频率。完成后按下M键即可进行初始化重新开始游戏进行新一轮的数据统计。
到这里程序全部完成了,在进行概率统计后可以看到按下M键又可以新一轮的游戏了。
程序源图片,像素大小为50*45:
4.功能扩展
改变电脑的手势概率,让石头出现的概率多一些,布和剪刀的概率少一些。
这个方法比较简单,让变量从单一判断转化为值域判断即可。
功能演示


