Я пытаюсь сделать Саймона на своем Raspberry Pi с помощью GPIOZero. Когда я пытаюсь использовать мои кнопки, он проходит только первую последовательность одного светодиода. В противном случае он говорит, что каждая кнопка неверна или просто ничего не делает, пока я не нажму другую кнопку, в результате чего будет сказано, что кнопка, которую я нажал, снова была неправильной.
У меня 4 светодиода и 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()
Я ожидал, что игра добавит светодиоды в список. Она загорится по порядку, а затем для каждого светодиода в списке потребуется кнопка ввода, чтобы продолжить, и она примет решение, будет ли она правильно или неправильно.