[MicroPython] 乒乓範例
-
這個範例是利用最基本的 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)