如何使用GPIOZero制作Simon?

时间:2019-06-06 21:24:48

标签: python gpiozero

我正在尝试使用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,都需要按钮输入才能继续,并且它将决定是否对还是错。

0 个答案:

没有答案