我正在尝试使用GPIOZero在我的Raspberry Pi上制作Simon。当我尝试使用按钮时,它只会经历一个LED的第一个序列。否则,它表示每个按钮都不正确,或者直到我按下另一个按钮后才执行任何操作,导致它表示我按下的按钮再次不正确。
我有4个LED和4个按钮。在开始编码之前,我对它们进行了全部测试,因此所有电缆都已正确连接。因此,我知道这只是错误的代码。
这是我的代码:
from gpiozero import LED, Button
from random import choice
from time import sleep
white = LED(5)
red = LED(22)
yellow = LED(27)
green = LED(17)
b_white = Button(21)
b_red = Button(20)
b_yellow = Button(16)
b_green = Button(12)
leds = [white, red, yellow, green]
buttons = [b_white, b_red, b_yellow, b_green]
lit_leds = []
def Buttons():
def Simon():
lit_leds.append(choice(leds))
for led in lit_leds:
led.on()
sleep(0.5)
led.off()
sleep(0.2)
def Decide():
sleep(0.5)
Simon()
score = 0
for led in lit_leds:
while True:
if ((buttons[0].is_pressed) or (buttons[1].is_pressed) or (buttons[2].is_pressed) or (buttons[3].is_pressed)) == True:
if b_white.is_pressed:
if led == white:
pass
else:
for led in leds:
led.on()
sleep(0.3)
for led in leds:
led.off()
sleep(0.3)
for led in leds:
led.on()
sleep(0.3)
for led in leds:
led.off()
print("Your score was",score)
exit()
elif b_red.is_pressed:
if led == red:
pass
else:
for led in leds:
led.on()
sleep(0.3)
for led in leds:
led.off()
sleep(0.3)
for led in leds:
led.on()
sleep(0.3)
for led in leds:
led.off()
print("Your score was",score)
exit()
elif b_yellow.is_pressed:
if led == yellow:
pass
else:
for led in leds:
led.on()
sleep(0.3)
for led in leds:
led.off()
sleep(0.3)
for led in leds:
led.on()
sleep(0.3)
for led in leds:
led.off()
print("Your score was",score)
exit()
elif b_green.is_pressed:
if led == green:
pass
else:
for led in leds:
led.on()
sleep(0.3)
for led in leds:
led.off()
sleep(0.3)
for led in leds:
led.on()
sleep(0.3)
for led in leds:
led.off()
print("Your score was",score)
exit()
if led == lit_leds[(len(lit_leds) - 1)]:
score += 1
Simon()
Decide()
Buttons()
我希望游戏将LED添加到列表中,它将按顺序点亮它们,然后,对于列表中的每个LED,都需要按钮输入才能继续,并且它将决定是否对还是错。