Окно Python открывается и закрывается

1

Я слежу за учебником отсюда, чтобы создать небольшую игру на питоне. Это был бы следующий код:

import pygame

pygame.init()

display_width = 1280
display_height = 720

gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption("Racing Game")
clock = pygame.time.Clock()

black = (0,0,0)
white = (255,255,255)
carImg = pygame.image.load("racecar.png")

def car(x,y):
    gameDisplay.blit(carImg, (x,y))

x = display_width * 0.45
y = display_height * 0.8
x_change = 0
car_speed = 0

crashed = True
while crashed:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            crashed = False
        ## <code to remove>
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                x_change = -5
            elif event.key == pygame.K_RIGHT:
                x_change = 5
        if event.type = pygame.KEYUP:
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                x_change = 0
        ## </code to remove>
        print(event)
    x += x_change
    gameDisplay.fill((255,255,255))
    car(x,y)
    pygame.display.update()
    clock.tick(60)

pygame.display.quit()   
pygame.quit()
quit()

Когда я пытаюсь запустить его, окно открывается и немедленно закрывается. Если я удалю, однако код между двумя ## <code to remove> и ## </code to remove> все работает отлично. Что вызывает в этом фрагменте кода для этого?

  • 2
    Это не компилируется (неверный синтаксис): if event.type = pygame.KEYUP:
  • 0
    Работает нормально со мной. Заметьте, я исправил проблему, указанную @ggorlen. К вашему сведению: я использую Raspbian Stretch с Python 3.5
Показать ещё 2 комментария
Теги:
pygame

1 ответ

1

Это вызвано синтаксической ошибкой, if event.type = pygame.KEYUP: Открытие файла приведет к его немедленному закрытию, но запуск его в интерпретаторе (IDLE) покажет вам эту ошибку. Просто измените его, if event.type == pygame.KEYUP: и все будет работать нормально.

ОБНОВИТЬ:

Выполнение кода из файла, а не интерпретатора (IDLE), не всегда будет открываться. Лучше всего запустить его в IDLE.

Код:

import pygame

pygame.init()

display_width = 1280
display_height = 720

gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption("Racing Game")
clock = pygame.time.Clock()

black = (0,0,0)
white = (255,255,255)
carImg = pygame.image.load("racecar.png")

def car(x,y):
    gameDisplay.blit(carImg, (x,y))

x = display_width * 0.45
y = display_height * 0.8
x_change = 0
car_speed = 0

crashed = True
while crashed:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            crashed = False
        #############################
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                x_change = -5
            elif event.key == pygame.K_RIGHT:
                x_change = 5
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                x_change = 0
        #############################
        print(event)
    x += x_change
    gameDisplay.fill((255,255,255))
    car(x,y)
    pygame.display.update()
    clock.tick(60)

pygame.display.quit()   
pygame.quit()
quit()
  • 0
    Если вы нашли этот ответ решением, не забудьте принять его.
  • 1
    @GhostCat Это была ошибка. Спасибо, что дали мне знать. Я имел в виду поставить "Unsalvageable".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню