案例汇总高级

1、乒乓球对战

https://makecode.microbit.org/_LYLgFbRLt2f3
https://makecode.microbit.org/_CW3L6f38cLv0

代码A

import random
import radio
from microbit import *
from music import play,POWER_UP,JUMP_DOWN,NYAN,FUNERAL
a_bat=2
b_bat=2
bat_map={0:4,1:3,2:2,3:1,4:0}
ball_x=2
ball_y=2
directions=[1,-1]
x_direction=random.choice(directions)
y_direction=random.choice(directions)
delay=500
counter=0
a_points=0
b_points=0
winning_score=5
game_over=False
def move_ball():
    global ball_x,ball_y,x_direction,y_direction,counter,a_bat,b_bat,a_points,b_points,delay
    display.set_pixel(ball_x,ball_y,0)
    ball_x=ball_x+x_direction
    ball_y=ball_y+y_direction
    if ball_x<0:
        ball_x=0
        x_direction=1
    if ball_x>4:
        ball_x=4
        x_direction=-1
    if ball_y==0:
        if ball_x==b_bat:
            ball_y=0
            y_direction=1
            delay-=50
        else:
            play(POWER_UP,wait=False)
            a_points+=1
            ball_y=0
            y_direction=1
            radio.send('a'+str(a_points))
    if ball_y==4:
        if ball_x==a_bat:
            ball_y=4
            y_direction=-1
            delay-=50
        else:
            play(JUMP_DOWN,wait=False)
            b_points+=1
            ball_y=4
            y_direction=-1
            radio.send('b'+str(b_points))
    counter=0
    radio.send('x'+str(ball_x))
    radio.send('y'+str(ball_y))
radio.on()
while not game_over:
    counter+=1
    display.set_pixel(a_bat,4,6)
    display.set_pixel(b_bat,0,6)
    display.set_pixel(ball_x,ball_y,9)
    if button_a.was_pressed():
        display.set_pixel(a_bat,4,0)
        a_bat=a_bat-1
        if a_bat<0:
            a_bat=0
        radio.send('p'+str(a_bat))
    if button_b.was_pressed():
        display.set_pixel(a_bat,4,0)
        a_bat=a_bat+1
        if a_bat>4:
            a_bat=4
        radio.send('p'+str(a_bat))
    incoming=radio.receive()
    if incoming:
        display.set_pixel(b_bat,0,0)
        b_bat=bat_map[int(incoming)]
    if counter==delay:
        move_ball()
    if a_points==winning_score or b_points==winning_score:
        game_over=True
if a_points>b_points:
    play(NYAN,wait=False)
    display.scroll('A wins!')
else:
    play(FUNERAL, wait=False)
    display.scroll('B wins!')
display.scroll('press reset to play again ')

pingpongB

import radio
from microbit import *
from music import play,POWER_UP,JUMP_DOWN,NYAN,FUNERAL

a_bat=2
b_bat=2
bat_map={0:4,1:3,2:2,3:1,4:0}
ball_x=2
ball_y=2
a_points=0
b_points=0
winning_score=5
game_over=False

radio.on()

def parse_message():
    global a_bat,incoming,bat_map,ball_x,ball_y,a_points,b_points
    msg_type=incoming[:1]
    msg=incoming[1:]
    if msg_type=='p':
        display.set_pixel(a_bat,0,0)
        their_bat=int(msg)
        a_bat=bat_map[their_bat]

    if msg_type=='x':
        display.set_pixel(ball_x,ball_y,0)
        ball_x=bat_map[int(msg)]
    if msg_type=='y':
        display.set_pixel(ball_x,ball_y,0)
        ball_y=bat_map[int(msg)]

    if msg_type=='a':
        a_points=int(msg)
        play(JUMP_DOWN,wait=False)

    if msg_type=='b':
        b_points=int(msg)
        play(POWER_UP,wait=False)


while not game_over:
    display.set_pixel(b_bat,4,6)
    display.set_pixel(a_bat,0,6)
    display.set_pixel(ball_x,ball_y,9)
    if button_a.was_pressed():
        display.set_pixel(b_bat,4,0)
        b_bat=b_bat-1
        if b_bat<0:
            b_bat=0
        radio.send(str(b_bat))

    if button_b.was_pressed():
        display.set_pixel(b_bat,4,0)
        b_bat=b_bat+1
        if b_bat>4:
            b_bat=4
        radio.send(str(b_bat))

    incoming=radio.receive()
    if incoming:
        parse_message()
    if a_points==winning_score or b_points==winning_score:
        game_over=True
if a_points<b_points:
    play(NYAN,wait=False)
    display.scroll('B wins!')
else:
    play(FUNERAL,wait=False)
    display.scroll('A wins!')

2、番茄钟

https://makecode.microbit.org/20385-83184-46996-14395

代码

from microbit import *

index4=0
blinkToggle=True
index=0
statusRunning=1
statusRest=2
status=statusIdle
pomodoroDecondes=0
plotMinutes=0
dailyCounter=1
#亮度设为150

while True:
    #清屏命令
    if status==statusIdle:
        display.show(Image('00000:00100:01010:11111:00000'))
    else:
        if pomodoroDecondes==0:
            if  blinkToggle:
                if status==statusRunning
                    display.show(Image.YES)
                else:
                    display.show(Image.SQUARE)
            blinkToggle=~blinkToggle
            #延时1s
        else:
            plotMinutes=pomodoroDecondes//60
            if plotMinutes==0:
                if blinkToggle
                    if  status==statusRest:
                        display.set_pixel(4,4,9)
                    else:
                        display.set_pixel(0,0,9)
                blinkToggle=~blinkToggle
                pomodoroDecondes-=2
                pomodoroDecondes=max(pomodoroDeconds,0)
                #延时2s
            blinkToggle

3、迷宫

代码

from microbit import *
from music import NYAN,play
migong=[-1,0,0,0,1,
        0,0,0,1,0,
        0,1,1,0,0,
        0,0,1,0,0,
        1,0,0,0,0]

def draw_migong(migong):
    for y in range(0,5):
        for x in range(0,5):
            if migong[x+y*5]>=0:
                display.set_pixel(x,y,9*migong[x+y*5])


def direction_set(migong,position):
    dir_set=[]
    x,y=position
    
    if  x<=3 and migong[x+1+y*5]==0:
        dir_set=[(x+1,y)]
    if  y<=3 and migong[x+(y+1)*5]==0:
        dir_set+=[(x,y+1)]
    if  x>=1 and migong[x-1+y*5]==0:
        dir_set+=[(x-1,y)]  
    return dir_set 
    
def draw_path(path):
    for i in path:
        display.set_pixel(i[0],i[1],6)
    
path=[]
possible_set=[]
position_now=(0,0)
draw_migong(migong)
times=0
while True:

    if  position_now==(4,4):
        display.scroll('Binggo!')
        play(NYAN,wait=False)
        draw_migong(migong)
        for j in range(0,3):
            for i in path:
                display.set_pixel(i[0],i[1],0)
                sleep(100)
                display.set_pixel(i[0],i[1],5)
        break
    else:
        possible_set=direction_set(migong,position_now)

        if possible_set!=[]:
            path.append(position_now)
            position_now=possible_set[0]
            migong[position_now[0]+position_now[1]*5]=-1
            display.set_pixel(position_now[0],position_now[1],6)
        else:
            display.set_pixel(position_now[0],position_now[1],0)
            migong[position_now[0]+position_now[1]*5]=-2
            position_now = path.pop()
            display.set_pixel(position_now[0],position_now[1],6)
    sleep(1000)
    draw_path(path)
    times+=1

4、cutebot调试

image.png

1.超声波传感器误报;
2.直行左右轮调试

5、巡线小车(直角等过弯的情况)

image.png

image.png

image.png

(直角过不去)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342