luyuhao 发表于 2017-8-15 14:12:57

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,然后重新上电就可运行

代码:
from microbit import *
import radio

def judge(host,slave):
if host == 1 and slave == 2:
    return 1
elif host == 2 and slave == 3:
    return 1
elif host == 3 and slave == 1:
    return 1
elif host == slave:
    return 2
else:
    return 0

radio.config(length=64,channel=7,group=200)
rock = Image("09090:90909:09090:90909:09090")
scissor = Image("99009:99090:00900:99090:99009")
paper = Image("99999:90009:90009:90009:99999")

image =

radio.on()
i = 0
while True:
i = i%3
if i == 0:
    display.show(image)
elif i == 1:
    display.show(image)
elif i == 2:
    display.show(image)
if button_b.was_pressed():
    i = i+1
if button_a.was_pressed():
    radio.send(str(i))
    msg = radio.receive()
    while msg == None:
      msg = radio.receive()
    result = judge(i,int(msg))
    if result == 0:
      display.scroll("lose")
    elif result == 1:
      display.scroll("win")
    elif result == 2:
      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 QQ群:619558168
页: [1]
查看完整版本: UpyCraft-micropython:microbit之石头剪刀布