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

[uPyCraft IDE] UpyCraft-micropython:microbit之石头剪刀布

[复制链接]
之前发表了一篇microbit通过radio通信的帖子:https://www.dfrobot.com.cn/commun ... =1&extra=#pid101712
现在,我们可以根据radio做实现一些简单的玩法啦!

石头剪刀布是我们童年时候经常玩的一种游戏,现在我想在microbit上实现。这样可以保证游戏的公平,不必担心谁先谁后造成的作弊现象 0.0

首先,我们需要准备的工具:
硬件:
micro:bit主板               X2
数据线(或3.3V电池)  X2

软件:UpyCraft-Micropython

操作:
2个micro:bit主板分别接电源,把程序分别现在到2个microbit,设置Defaule run,然后重新上电就可运行

代码:
  1. from microbit import *
  2. import radio
  3. def judge(host,slave):
  4.   if host == 1 and slave == 2:
  5.     return 1
  6.   elif host == 2 and slave == 3:
  7.     return 1
  8.   elif host == 3 and slave == 1:
  9.     return 1
  10.   elif host == slave:
  11.     return 2
  12.   else:
  13.     return 0
  14. radio.config(length=64,channel=7,group=200)
  15. rock = Image("09090:90909:09090:90909:09090")
  16. scissor = Image("99009:99090:00900:99090:99009")
  17. paper = Image("99999:90009:90009:90009:99999")
  18. image = [rock,scissor,paper]
  19. radio.on()
  20. i = 0
  21. while True:
  22.   i = i%3
  23.   if i == 0:
  24.     display.show(image[0])
  25.   elif i == 1:
  26.     display.show(image[1])
  27.   elif i == 2:
  28.     display.show(image[2])
  29.   if button_b.was_pressed():
  30.     i = i+1
  31.   if button_a.was_pressed():
  32.     radio.send(str(i))
  33.     msg = radio.receive()
  34.     while msg == None:
  35.       msg = radio.receive()
  36.     result = judge(i,int(msg))
  37.     if result == 0:
  38.       display.scroll("lose")
  39.     elif result == 1:
  40.       display.scroll("win")
  41.     elif result == 2:
  42.       display.scroll("tie")
复制代码
解析:
第1行到第2行:导入所需的包
第4行到第14行:定义一个判断函数,平局返回2,赢了返回1,输了返回0
第16行:配置radio
第17行到第21行:编写石头剪刀布的图形,并将这些图形存放于image列表中
第23行:打开radio
第24行:定义i,做为列表下标及通信内容
第25行:while循环,一直执行26行到46行的内容
第26行到第32行:对i取模,是i一直在0到2之间循环,0为石头,1为剪刀,2为布,判断i的值,并显示对应的图形
第33行到第34行:判断按键a是否按下,如果按下,则加1,代表图形切换。
第35行到第46行:判断按键b是否按下,若按下,则将i的值通过radio发送。发送完,等待接收,直到接收到数据后,通过第4行的函数判断胜负

执行结果:
UpyCraft-micropython:microbit之石头剪刀布图2


实物图:

UpyCraft-micropython:microbit之石头剪刀布图1

欢迎大家加入uPyCraft-micropython QQ群:619558168
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

硬件清单

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

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

mail