#python #pygame
Вопрос:
У меня возникли проблемы с pygame на mac. Он не закроется при нажатии на кнопку «x». Он также вообще не будет перемещать космический корабль с помощью клавиш со стрелками. Есть какие-нибудь предложения?
while running:
screen.fill((255,0,0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.type == pygame.K_LEFT:
playerX_change = -0.1
if event.type == pygame.K_RIGHT:
playerX_change = 0.1
if event.type == pygame.KEYUP:
if event.type == pygame.K_LEFT or event.type == pygame.K_RIGHT:
playerX_change=0
playerX =playerX_change
player(playerX, playerY)
pygame.display.update()
Комментарии:
1. обновление…я смог заставить космический корабль двигаться, исправив строку в коде. вместо «событие.ключ» я ввел «событие.тип». Как только я это исправил, корабль начал двигаться. Однако у меня все еще возникают проблемы с закрытием игры… дай мне знать, если кто-нибудь догадается об этом.
Ответ №1:
Хорошо, ваш код для меня не завершен, но у меня есть идея, которая возникла.
while running:
screen.fill((255,0,0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.type == pygame.K_LEFT:
playerX_change = -0.1
playerX =playerX_change
if event.type == pygame.K_RIGHT:
playerX_change = 0.1
playerX =playerX_change
if event.type == pygame.KEYUP:
if event.type == pygame.K_LEFT or event.type == pygame.K_RIGHT:
playerX_change=0
player(playerX, playerY)
pygame.display.update()
Возможно, если вы перейдете на позицию, которая напрямую меняет соответствующую позицию, все будет нормально
PlayerX =Обмен игроками
Комментарии:
1. Космический корабль не только не движется, но и экран не закрывается при нажатии «x». может ли это быть проблемой с настройкой/загрузкой pygame вместо самого кода?
2. из pygame.импорт местных жителей *
Ответ №2:
Я думаю, что последние три строки кода должны находиться в цикле while. Без этого ваш дисплей не обновляется с каждой итерацией.
Комментарии:
1. Спасибо, но последние три строки находятся во всем цикле.
2. @jara извините, но когда я писал, их не было. Изображения там не было, и если вы скопируете и вставите код, вы увидите, о чем я говорю.
Ответ №3:
Это вопрос Отступа. События должны быть оценены в цикле событий:
while running:
screen.fill((255,0,0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# INDENTATION
#-->|
if event.type == pygame.KEYDOWN:
if event.type == pygame.K_LEFT:
playerX_change = -0.1
if event.type == pygame.K_RIGHT:
playerX_change = 0.1
if event.type == pygame.KEYUP:
if event.type == pygame.K_LEFT or event.type == pygame.K_RIGHT:
playerX_change=0
playerX =playerX_change
player(playerX, playerY)
pygame.display.update()
Комментарии:
1. Спасибо, но все коды имеют отступы, как и должно быть. Просто уточните, коды были скопированы с видео на YouTube, и это сработало на видео. Когда я запускаю коды на своем Mac, он не закрывает pygame и не перемещает корабли при нажатии на стрелки.