Python (Pygame) нерестится во времени

Я делаю игру в Pygame (я все еще новичок в python и Pygame, я знаю основы, но это почти все), но когда я пытаюсь порождать врагов, они появляются в разное время (они должны появляться в линия и спускаться одновременно)

Это та часть, которая доставляет мне неприятности:

blocks_list = [enemy_pos] block_speed = 10 gameover = False def dropper(blocks_list): if len(blocks_list) <= random.randint(5,10): dropper.x_pos = (random.randint(1,13) * p_size) + 10 dropper.y_pos = 0 blocks_list.append([dropper.x_pos,dropper.y_pos]) def move_blocks(): for enemy_pos in blocks_list: enemy_pos[1] = enemy_pos[1] + block_speed def draw_blocks(blocks_list): long = len(blocks_list) print(long) for enemy_pos in blocks_list: pygame.draw.rect(screen,RED,(enemy_pos[0],enemy_pos[1],p_size,p_size)) def drawing(blocks_list): screen.fill(BLACK) draw_blocks(blocks_list) move_blocks() While not gameover: drawing(blocks_list)

ЭТО фотографии происходящего

см. deberia de ver

Я пробовал поместить его в цикл while, чтобы увидеть, появляется ли оно сразу.

Полный код:

#IMPORT THE IMPORTANT import pygame import sys import random pygame.init() #screen size SW = 320 SH = 600 #colors RED = (255,0,0) GREEN = (0,255,0) BLUE = (0,0,255) BLACK = (0,0,0) WHITE = (255,255,255) #Barier vars barrier1x = SH/20 barrier1y = SH barrier2x = SW barrier2y = SH/20 #player vars p_size = 20 p_x = (SW/2)-(p_size/2) p_y = (SH/20 * 17) p_speed = 20 screen = pygame.display.set_mode((SW,SH)) #falling? blocks vars enemy_pos = [-30,0] blocks_list = [enemy_pos] block_speed = 10 gameover = False clock = pygame.time.Clock() #functions def draw_player(): pygame.draw.rect(screen,GREEN,(p_x,p_y,p_size,p_size)) def dropper(blocks_list): if len(blocks_list) <= random.randint(5,10): dropper.x_pos = (random.randint(1,13) * p_size) + 10 dropper.y_pos = 0 blocks_list.append([dropper.x_pos,dropper.y_pos]) def move_blocks(): for enemy_pos in blocks_list: enemy_pos[1] = enemy_pos[1] + block_speed def draw_blocks(blocks_list): long = len(blocks_list) a=1 print(long) for enemy_pos in blocks_list: pygame.draw.rect(screen,RED,(enemy_pos[0],enemy_pos[1],p_size,p_size)) def barrier(): pygame.draw.rect(screen,BLUE,(0,0,barrier1x,barrier1y)) pygame.draw.rect(screen,BLUE,(0,0,barrier2x,barrier2y)) pygame.draw.rect(screen,BLUE,(SW-barrier1x,0,barrier1x,barrier1y)) pygame.draw.rect(screen,RED,(0,SH-barrier2y,barrier2x,barrier2y)) def collision_always(): global p_x global p_y global gameover if p_x <= SW/20: p_x = p_x + p_speed if p_x >= SW-barrier1x: p_x = p_x — p_speed if p_y <= SW/20: p_y = p_y + p_speed if p_y >= SH — (SH/20): gameover = True; print(«u ded»); def drawing(blocks_list): screen.fill(BLACK) barrier() draw_player() draw_blocks(blocks_list) move_blocks() pygame.display.update() def controls(): global p_y global p_x global p_speed for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: p_x = p_x — p_speed elif event.key == pygame.K_RIGHT: p_x = p_x + p_speed elif event.key == pygame.K_UP: p_y = p_y — p_speed elif event.key == pygame.K_DOWN: p_y = p_y + p_speed #main loop while not gameover: dropper(blocks_list) controls() collision_always() drawing(blocks_list) clock.tick(30)

Источник: ledsshop.ru

Стиль жизни - Здоровье!