#python-3.x #pygame
#python-3.x #pygame
Вопрос:
Вот код для игры, которую я пытаюсь создать (ремейк flappy bird)
def move():
global bird_x
global bird_y
pygame.draw.rect(win,(0,0,0), (0,0,1000,1000))
pygame.draw.rect(win,(255,0,0),(bird_x, bird_y, 30, 30))
pygame.display.update()
while True:
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
bird_y = 60
fb.move()
time.sleep(0.005)
Когда я пытаюсь запустить этот код, «птица» (красный квадрат) не перемещается, я изменил используемые клавиши, я перенес перемещение в функции и из них, и ничего не работает.
(это обрезанный код, поэтому переменные, вероятно, не будут существовать)
полный код:
import time
import random
pygame.init()
win = pygame.display.set_mode((400,600))
pygame.display.set_caption('Flappy Bird')
pipex = 345
pipe1y = -270
pipe2y = 420
width = 65
height1 = 400
height2 = 3000
vel = 5
bird_x = 20
bird_y = 300
isJump = False
jumpCount = 10
class fb:
def move():
global pipex
global yy
global pipe1y
global pipe2y
global bird_x
global bird_y
pipex -= 1
if pipex < -60:
pipex = 345
yy = random.randint(-350,0)
pipe1y = yy
pipe2y = pipe1y 555
pygame.draw.rect(win,(0,0,0), (0,0,1000,1000))
pygame.draw.rect(win,(0, 255, 0), (pipex, pipe1y, width, height1))
pygame.draw.rect(win,(0, 255, 100), (pipex, pipe2y, width, height2))
pygame.draw.rect(win,(255,0,0),(bird_x, bird_y, 30, 30))
pygame.display.update()
while True:
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
bird_y = 60
fb.move()
time.sleep(0.005)
Комментарии:
1. Это выглядит нормально, возможно, вам придется опубликовать больше кода, чтобы мы могли определить причину.
2. Сколько строк кода? Если <400, опубликуйте все
3. @Deuce готово, надеюсь, в моем коде ошибка
Ответ №1:
Измените свой основной цикл на этот:
while True:
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
bird_y -= 1
if keys[pygame.K_DOWN]:
bird_y = 1
fb.move()
time.sleep(0.005)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
break
вы не тестировали события
вам нужно обрабатывать события
PS: я добавил движение вниз
Комментарии:
1. Вероятно, оператору также следует удалить
time.sleep()
и добавить ограничение FPS с помощьюpygame.time.clock()
и aclock.tick_busy_loop(60)