ルーレットを作る#04

CircuitPython

ランダムな数字を生み出す

REPLモードで試してみます。

>>>import random
>>>random.randrange(1, 10)
5

random.randrange(最小の数値、最大の数値)

randomをインポートすることによって、乱数を発生させることができるようになります。randrange(最小の数値,最大の数値)で整数を返してくれます。前回つかってみたプログラマブルボタンおぼえていますか?ボタンを押したらLEDを光らせるプログラムを作ってみてください。今回は10個のLEDを使ってみましょう。GP20のボタンを押したら、その数字に対応したLEDを光らせます。

rouletto.py

#CircuitPythonでLEDルーレット

import board
import digitalio
import time
import random

# LEDsをイニシャライズ
# Maker Pi RP2040上のLED10個を使います
LED_PINS = [board.GP0, 
            board.GP1,
            board.GP2,
            board.GP3,
            board.GP4,
            board.GP5,
            board.GP6,
            board.GP7,
            board.GP16,
            board.GP17]

LEDS = []
for pin in LED_PINS:
    # pinをDigitalInOutモードにし、アウトプット方向に設定する
    digout = digitalio.DigitalInOut(pin)
    digout.direction = digitalio.Direction.OUTPUT
    #LEDSリストの中に加える
    LEDS.append(digout)

# GP20のプログラマブルボタンをイニシャライズする
btn1 = digitalio.DigitalInOut(board.GP20)
btn1.direction = digitalio.Direction.INPUT
btn1.pull = digitalio.Pull.UP

while True:
    # GP20をチェックする
    if not btn1.value:  # GP20が押されたら
        roulettoNo = random.randint(0, 9) #roulettoNoに数値を発生
        # その番号のLEDを5回点滅させる
        for i in range(5):
            LEDS[roulettoNo].value = True
            time.sleep(0.3)
            LEDS[roulettoNo].value = False
            time.sleep(0.3)

どうでしょう?ルーレットになりましたね!しかしまだまだ改良の余地はあります。10個目のLEDのときは大当たりとして、もっと派手に光らせたりするのもいいですね。またはif文を使って、自分だけ大きい数が出るようなイカサマルーレットを作ってみるのも楽しいかもしれません。

タイトルとURLをコピーしました