603浏览
查看: 603|回复: 0

【临沂】剪刀石头布小游戏

[复制链接]
做到头秃的一节课。实现效果是:树莓派连接三个按钮控制人的出拳,电脑随机出拳。不同的游戏结果对应不同的灯光,人胜利亮绿灯,电脑胜利亮蓝灯,平手黄灯。OLED屏幕显示对战结果(这里本应该是显示图片,节省时间就用了文字)。
使用到了列表,函数,循环,条件,整个作品是循序渐渐的。
第一步:假定1是石头,2是剪刀,3是布。一开始我有点迷惑,认为设定数字代表不同的出拳太过抽象,应该用文本表达更清晰。其实是方便让计算机随机出拳,用文本代表应该也可以,程序可能会长一点。
第二步:人和电脑都随机出拳。输出信息有人的出拳情况,电脑出拳情况,对战结果。对战结果这里我没用数字代表,用了不同的文本,而事实证明后期我还得改成数字。
202004076145..png 202004077157..png
第三步:添加灯效
有两种办法,普通版和列表版。由于小灯的数字口并不是连续的,所以定义一个列表用来设置小灯初始状态为灭。
我的设置是5号黄灯代表平手,6号绿灯代表人赢,12号蓝灯代表电脑赢。
把判决1修改了,输出结果也是1/2/3这些数字,方便引用列表。
202004074447..png 202004072308..png 202004077908..png
第四步:优化人的出拳。
利用不同数字口的按钮代表石头剪子布。24-光敏代表出石头,25按钮代表出剪刀,21按钮代表出剪刀。为啥我用了一个光敏传感器呢?因为我只有两个按钮,按钮不够,光敏来凑,哈哈。
202004073572..png
第五步:添加OLED
加上OLED显示,需要准备9张不同出拳的图片,方便起见我全弄成了文字。主函数没有变,指示灯(列表)函数添加了显示OLED的语句,判决函数添加了不同出拳的文字。
完整的代码是这个样子的

202004079328..png
202004077216..png
最后效果大概就是这样,人出石头,电脑出石头,平局黄灯亮。
202004076406..png
其实最后程序做出来看一看也没有太难。这节课主讲老师的风格就是程序尽量简短,所以就不那么好懂。最后添加OLED的语句都是拆分到两个函数里面,有点点抽象,我的脑袋瓜就不够用了。



202004079002..png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail