UpyCraft-micropython:microbit之石头剪刀布

2017-08-151.5万
AI 快速预览详细 收起
本文介绍了如何使用micro:bit主板和radio通信实现石头剪刀布游戏。首先准备两个micro:bit主板和数据线,然后使用UpyCraft-Micropython软件编写代码。通过按键选择石头、剪刀或布,并通过radio发送选择。接收方收到后,根据规则判断胜负并显示结果。这个项目适合STEM教育场景,可以激发孩子的编程兴趣。
之前发表了一篇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

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -