Попытка заставить кнопки GPIO работать с игрой Pygame - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь использовать кнопки контактов GPIO для этой игры Pygame, которая у меня здесь.Я пытался заставить кнопки GPIO работать.Кроме кнопок, игра функциональна.

Я пробовал использовать RPi.GPIO и gpiozero (текущая версия).Я до сих пор не могу понять, что я сделал неправильно.Основной код игры ниже.При необходимости я могу предоставить полный код.

def game_loop():
    x = (display_width * 0.45)
    y = (display_height * 0.8)

    x_change = 0

    object_startx = random.randrange(0, display_width)
    object_starty = -600
    object_speed = 2
    object_width = 20
    object_height = 20

    objectCount = 1

    dodged = 0

    gameExit = False

    while not gameExit:

        GPIO.setwarnings(False)
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
        GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
        GPIO.add_event_detect(23, GPIO.RISING)
        GPIO.add_event_detect(18, GPIO.RISING)


        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

            if event.type == pygame.KEYDOWN:
                if GPIO.event_detected(23):
                    x_change = -5
                if GPIO.event_detected(18):
                    x_change = 5

            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                    x_change = 0

        x += x_change
        gameDisplay.fill(white)

        objects(object_startx, object_starty, object_width, object_height, black)

        object_starty += object_speed
        car(x, y)
        objects_dodged(dodged)

        if x > display_width - car_width or x < 0:
            crash()

        if object_starty > display_height:
            object_starty = 0-object_height
            object_startx = random.randrange(0,display_width)
            dodged += 1
            object_speed +=.2
            object_width += (dodged * 1.001)

        if y < object_starty+object_height:


            if x > object_startx and x < object_startx + object_width or x+car_width > object_startx and x+ car_width < object_startx+object_width:

                crash()


        pygame.display.update()
        clock.tick(60)

Он должен идти вправо или влево, когда я нажимаю кнопки GPIO вправо или влево.(Вывод GPIO 18 справа, а вывод GPIO 23 слева).

...