мой код не показывает ошибок, но прямо сейчас мой flappy bird cosde должен печатать слово каждые 1,2 секунды, но это не так

#python #pygame #flappy-bird-clone

#python #pygame #flappy-bird-clone

Вопрос:

мой код не показывает ошибок, но прямо сейчас мой flappy bird cosde должен печатать слово pipe каждые 1,2 секунды, но это не так я не знаю, как это исправить и проверил каждое слово в моем коде, и я даже переписал его onec может кто-нибудь, пожалуйста, помогите мне с кодом:

 import pygame, sys

def draw_floor():
    screen.blit(floor_surface, (floor_animation, 400))
    screen.blit(floor_surface, (floor_animation   275,400))

pygame.init()

screen = pygame.display.set_mode((275,512))
clock = pygame.time.Clock()

gravity = 0.25
bird_movement = 0

bg_surface = pygame.image.load('C:/Users/cuerv/Downloads/flappy-bird-assets-master/flappy-bird-assets-master/sprites/background-day.png').convert()

floor_surface = pygame.image.load('C:/Users/cuerv/Downloads/flappy-bird-assets-master/flappy-bird-assets-master/sprites/base.png').convert()
floor_animation = 0

bird_surface = pygame.image.load('C:/Users/cuerv/Downloads/flappy-bird-assets-master/flappy-bird-assets-master/sprites/bluebird-midflap.png').convert()
bird_rect = bird_surface.get_rect(center = (100,256))

pipe_surface = pygame.image.load('C:/Users/cuerv/Downloads/flappy-bird-assets-master/flappy-bird-assets-master/sprites/pipe-green.png').convert()
pipe_list = []
SPAWNPIPE = pygame.USEREVENT
pygame.time.set_timer(SPAWNPIPE,1200)

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()       
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                bird_movement = 0
                bird_movement -= 7
                if event.type == SPAWNPIPE:
                    print("pipe")                   

    screen.blit(bg_surface, (0, 0))

    bird_movement  = gravity
    bird_rect.centery  = bird_movement
    screen.blit(bird_surface, (bird_rect))
    
    floor_animation -= 1
    draw_floor()
 
    if floor_animation <= -275:     #if floor = if the left surface is too to the left we are going to do soamething
        floor_animation = 0
    screen.blit(floor_surface, (floor_animation, 400))

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

Ответ №1:

Это происходит потому, что ваша проверка SPAWNPIPE события находится в пределах проверки KEYDOWN события. Это можно решить следующим образом:

 if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_SPACE:
        bird_movement = 0
        bird_movement -= 7
if event.type == SPAWNPIPE:
    print("pipe")