Python 当敌人产卵时Pygame崩溃

Python 当敌人产卵时Pygame崩溃,python,pygame,python-3.8,Python,Pygame,Python 3.8,我正在制作一个宇宙飞船游戏,你可以控制宇宙飞船并发射子弹来击败敌人。我已经完成了敌人在屏幕上繁殖的目标。问题是,成千上万的敌人在屏幕上繁殖。我尝试使用时间模块中的睡眠功能,但没有成功。相反,当我运行它时,游戏就崩溃了!有人能帮我吗 这是我当前的代码: import pygame from pygame.locals import * from random import randint from time import sleep pygame.init() screen = pygame.d

我正在制作一个宇宙飞船游戏,你可以控制宇宙飞船并发射子弹来击败敌人。我已经完成了敌人在屏幕上繁殖的目标。问题是,成千上万的敌人在屏幕上繁殖。我尝试使用时间模块中的睡眠功能,但没有成功。相反,当我运行它时,游戏就崩溃了!有人能帮我吗

这是我当前的代码:

import pygame
from pygame.locals import *
from random import randint
from time import sleep

pygame.init()
screen = pygame.display.set_mode((800, 500))
screen.fill((255, 255, 255))


class Spaceship(pygame.sprite.Sprite):

    def __init__(self, s, x, y):
        pygame.sprite.Sprite.__init__(self)

        self.screen = s
        self.x, self.y = x, y
        self.image = pygame.image.load("C:/eqodqfe/spaceship.png")
        self.image = pygame.transform.scale(self.image, (175, 175))
        self.rect = self.image.get_rect()
        self.rect.center = (self.x, self.y)

    def update(self):
        self.rect.center = (self.x, self.y)


class Bullet(pygame.sprite.Sprite):

    def __init__(self, s, x, y):
        pygame.sprite.Sprite.__init__(self)

        self.screen = s
        self.x, self.y = x, y
        self.image = pygame.image.load("C:/eqodqfe/bullet.png")
        self.image = pygame.transform.scale(self.image, (100, 100))
        self.rect = self.image.get_rect()
        self.rect.center = (self.x, self.y)

    def update(self):
        self.y -= 5
        self.rect.center = (self.x, self.y)
        if self.y < 0:
            self.kill()


class Enemy(pygame.sprite.Sprite):

    def __init__(self, s, x, y):
        pygame.sprite.Sprite.__init__(self)

        self.screen, self.x, self.y = s, x, y
        self.image = pygame.image.load("C:/eqodqfe/enemy.png")
        self.image = pygame.transform.scale(self.image, (240, 210))
        self.rect = self.image.get_rect()
        self.rect = self.image.get_rect()
        self.rect.center = (self.x, self.y)

    def update(self):
        self.rect.center = (self.x, self.y)


spaceship = Spaceship(screen, 400, 400)

bullets = pygame.sprite.Group()
enemies = pygame.sprite.Group()

clock = pygame.time.Clock()

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == MOUSEBUTTONDOWN:
            bullet = Bullet(screen, spaceship.x, spaceship.y - 20)
            bullets.add(bullet)

    bullets.update()

    key = pygame.key.get_pressed()
    amount = 5

    if key[pygame.K_a]:
        spaceship.x -= amount
    elif key[pygame.K_d]:
        spaceship.x += amount
    elif key[pygame.K_w]:
        spaceship.y -= amount
    elif key[pygame.K_s]:
        spaceship.y += amount

    spaceship.update()

    screen.fill((255, 255, 255))

    screen.blit(spaceship.image, spaceship.rect)

    enemy = Enemy(screen, randint(-200, 800), 0)
    enemies.add(enemy)
    sleep(5)

    bullets.draw(screen)
    enemies.draw(screen)

    pygame.display.update()
    clock.tick(60)
导入pygame
从pygame.locals导入*
从随机导入randint
从时间上导入睡眠
pygame.init()
screen=pygame.display.set_模式((800500))
屏幕填充((255、255、255))
类宇宙飞船(pygame.sprite.sprite):
定义初始化(self,s,x,y):
pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我)
self.screen=s
self.x,self.y=x,y
self.image=pygame.image.load(“C:/eqodqfe/spaceship.png”)
self.image=pygame.transform.scale(self.image,(175175))
self.rect=self.image.get_rect()
self.rect.center=(self.x,self.y)
def更新(自我):
self.rect.center=(self.x,self.y)
类子弹(pygame.sprite.sprite):
定义初始化(self,s,x,y):
pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我)
self.screen=s
self.x,self.y=x,y
self.image=pygame.image.load(“C:/eqodqfe/bullet.png”)
self.image=pygame.transform.scale(self.image,(100100))
self.rect=self.image.get_rect()
self.rect.center=(self.x,self.y)
def更新(自我):
self.y-=5
self.rect.center=(self.x,self.y)
如果self.y<0:
self.kill()
职业敌人(pygame.sprite.sprite):
定义初始化(self,s,x,y):
pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我)
self.screen,self.x,self.y=s,x,y
self.image=pygame.image.load(“C:/eqodqfe/敌方.png”)
self.image=pygame.transform.scale(self.image,(240210))
self.rect=self.image.get_rect()
self.rect=self.image.get_rect()
self.rect.center=(self.x,self.y)
def更新(自我):
self.rect.center=(self.x,self.y)
宇宙飞船=宇宙飞船(屏幕,400400)
子弹=pygame.sprite.Group()
敌人=pygame.sprite.Group()
clock=pygame.time.clock()
运行=真
运行时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==MOUSEBUTTONDOWN:
子弹=子弹(屏幕,spaceship.x,spaceship.y-20)
项目符号。添加(项目符号)
bullets.update()
key=pygame.key.get_pressed()
金额=5
如果键[pygame.K_a]:
宇宙飞船.x-=数量
elif key[pygame.K_d]:
宇宙飞船.x+=数量
elif key[pygame.K_w]:
宇宙飞船.y-=数量
elif key[pygame.K_s]:
宇宙飞船。y+=数量
太空船更新
屏幕填充((255、255、255))
screen.blit(spaceship.image,spaceship.rect)
敌人=敌人(屏幕,随机(-200800),0)
敌人。添加(敌人)
睡眠(5)
项目符号。绘制(屏幕)
敌人。绘制(屏幕)
pygame.display.update()
时钟滴答(60)

使用计时器事件来繁殖敌人

pygame中存在一个计时器事件。用于在事件队列中重复创建。必须以毫秒为单位设置时间。e、 g:

敌方间隔=1000#1000毫秒==1秒 敌方事件=pygame.USEREVENT+1 pygame.time.set_计时器(敌方事件,敌方间隔) 在事件发生时创建新敌人:

running=True
运行时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==MOUSEBUTTONDOWN:
子弹=子弹(屏幕,spaceship.x,spaceship.y-20)
项目符号。添加(项目符号)
如果event.type==敌方事件:
敌人=敌人(屏幕,随机(-200800),0)
敌人。添加(敌人)
# [...]
#删除
#敌人=敌人(屏幕,随机(-200800),0)
#敌人。添加(敌人)
#睡眠(5)
# [...]

噢,谢谢你的支持!我理解这一点,但它似乎不起作用。我做错什么了吗?什么不管用?您是否删除了“睡眠”代码?(看答案)是的,我确实删除了“睡眠”代码。等等,哦。我需要删除其他内容。现在它起作用了。非常感谢。