[MicroPython] 乒乓範例


  • wbo

    這個範例是利用最基本的 wifiboy 指令:

    • wifiboy.cls():清除整個 LCD 螢幕,如果括弧內加上數字,就會在整個螢幕填入那個數字的顏色。
    • wifiboy.getkey():取得按鍵現況。四個按鍵值由右至左依序為 1,2,4,8,如果同時按下鍵,就是按下的鍵號相加起來的值。
    • wifiboy.box() :畫一個彩色的實心方塊。例如 wifiboy.box(x, y, 8, 8, 500)  就是在 (x, y) 座標,畫出一個 8x8 的 500 號顏色方塊。

    做出打乒乓的小遊戲範例。

    因為乒乓碰撞應該要有聲音,所以利用 machine 的 pwm 來做聲音:

    snd=machine.PWM(machine.Pin(4, 1))

    這是指 I/O #4 號為喇叭,設定為 PWM 輸出模式。


    發出頻率 880 的方法:

    snd.freq(880)


    設定 duty 為 100,這個可以大致當作音量,範圍是 0-255。

    snd.duty(100)

    以下是乒乓的原始碼,大家可以試試看:

    # pong demo
    import machine, wifiboy, time
    snd=machine.PWM(machine.Pin(4, 1))
    snd.freq(444)
    wifiboy.cls()
    dx = 2
    dy = 3
    x, y  = 10, 10
    bx = 10
    while True:
        key = wifiboy.getkey()
        if key==1: bx+=3
        if key==8: bx-=3
        if bx>103: bx=103
        if bx<0: bx=0
        wifiboy.box(bx,150, 25,5, 2000)
        x += dx
        y += dy
        wifiboy.box(x, y, 8, 8, 500)
        if x>120 or x<0:
            dx = -dx
            snd.freq(880)
            snd.duty(100)
        if y>142:
            if x>bx-8 and x<bx+25:
                dy = -dy
                snd.freq(440)
                snd.duty(100)
            else:
                wifiboy.cls()
                x,y=10,10
        if y<0:
            dy = -dy
            snd.freq(880)
            snd.duty(100)
        time.sleep(0.02)
        snd.duty(0)
        wifiboy.box(x, y, 8, 8, 0)
        wifiboy.box(bx,150, 25,5, 0)


Log in to reply
 

Looks like your connection to WiFiBoy.Club was lost, please wait while we try to reconnect.