MicroPython亂數的應用

在micro:bit的程式應用中隨機亂數是非常有趣的一個函數,這原本是在Python中就有的函數,在microPython中也是一樣可以使用。先來看看以下這個例子:

from microbit import *
import random 

while True:
    display.show(random.randint(0, 9))
    sleep(1000)

上面的這個程式會每隔一秒換一個數字,這個數字由random.randint()函數產生,每一次都不一樣。應用這個函數,我們可以設計一個猜數字的遊戲程式。先來看看如何讓使用者透過按鈕選擇一個數字的程式:

from microbit import *
import random 

guess = 5
while True:
    if button_a.is_pressed() and button_b.is_pressed():
        break;
    if button_a.was_pressed():
        guess += 1
        if guess > 9: 
            guess = 9
    elif button_b.was_pressed():
        guess -= 1
        if guess < 0:
            guess = 0
    display.show(guess)

這個程式一開始的時候先讓變數guess設定為5,接下來在迴圈中偵測是否A和B按鈕同時被按下,如果是的話,就離開迴圈,這時候guess的內容就是我們要猜的數字。如果只是按下其中一個按鈕的話,就依照按鈕是哪一個來決定要把guess加1或是減1。同樣的,在加減數字的過程中,只要同時按下兩個按鈕之後就會離開迴圈,也就是確定了玩家要選擇的數字,而且是放在guess中。

為了增加趣味性,接下來利用一個迴圈來顯示100個不相關的數字,而且每顯示一個數字之後就增加暫停的時間:

for i in range(100):
    display.show(random.randint(0, 9))
    sleep(20+i*2)

在顯示了這些數字之後,再取得正確的答案放在answer中,再作一些小小的閃爍動畫:

answer = random.randint(0, 9)
for i in range(5):
    display.clear()
    sleep(500)
    display.show(answer)
    sleep(500)

最後則是比對玩家猜的數字guess和正確答案,再依相等與否顯示不同的圖案,完整的程式如下:

from microbit import *
import random 

guess = 5
while True:
    if button_a.is_pressed() and button_b.is_pressed():
        break;
    if button_a.was_pressed():
        guess += 1
        if guess > 9: 
            guess = 9
    elif button_b.was_pressed():
        guess -= 1
        if guess < 0:
            guess = 0
    display.show(guess)
    
for i in range(100):
    display.show(random.randint(0, 9))
    sleep(20+i*2)
    
answer = random.randint(0, 9)
for i in range(5):
    display.clear()
    sleep(500)
    display.show(answer)
    sleep(500)
    
if answer == guess:
    display.show(Image.HEART)
else:
    display.show(Image.SAD)

如果想要再玩一次,只要按下重置按鈕就可以囉。

Last updated