import pygame
import random
FPS = 60
WIDTH = 500
HEIGHT = 600
WHITE = (255,255,255)
GREEN = (0,255,0)
RED = (255,0,0)
YELLOW = (255,255,0)
#游戏初始化,创建视窗
pygame.init()
screen = pygame.display.set_mode((WIDTH,HEIGHT))
clock = pygame.time.Clock()
running = True
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((50,40))
self.image.fill(GREEN)
#框起物件
self.rect = self.image.get_rect()
self.rect.centerx = WIDTH/2
self.rect.bottom = HEIGHT -10
self.speed = 8
def update(self):
key_pressed = pygame.key.get_pressed()
if key_pressed[pygame.K_RIGHT]:
self.rect.x += self.speed
if key_pressed[pygame.K_LEFT]:
self.rect.x -= self.speed
if key_pressed[pygame.K_UP]:
self.rect.y -= self.speed
if key_pressed[pygame.K_DOWN]:
self.rect.y += self.speed
if self.rect.left < 0:
self.rect.left = 0
if self.rect.right > WIDTH:
self.rect.right = WIDTH
if self.rect.bottom >HEIGHT:
self.rect.bottom = HEIGHT
def shoot(self):
bullet = Bullet(self.rect.x, self.rect.top)
all_sprites.add(bullet)
class Rock(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((30,40))
self.image.fill(RED)
self.rect = self.image.get_rect()
self.rect.x = random.randrange(0,WIDTH - self.rect.width)
self.rect.y = random.randrange(-100,-50)
self.speedx = random.randrange(-3,3)
self.speedy = random.randrange(2,8)
def update(self):
self.rect.x += self.speedx
self.rect.y += self.speedy
if self.rect.top > HEIGHT or self.rect.left > WIDTH or self.rect.right < 0:
self.rect.x = random.randrange(0,WIDTH - self.rect.width)
self.rect.y = random.randrange(-100,-50)
self.speedx = random.randrange(-3,3)
self.speedy = random.randrange(2,8)
class Bullet(pygame.sprite.Sprite):
def __init__(self,x,y):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((10,20))
self.image.fill(YELLOW)
self.rect.x = x
self.rect.bottom = y
self.speedy = -8
def update(self):
self.rect.y += self.speedy
if self.rect.bottom < 0:
self.kill()
#创建sprite群组
all_sprites = pygame.sprite.Group()
player = Player()
all_sprites.add(player)
for i in range(10):
rock=Rock()
all_sprites.add(rock)
#更改游戏标题
pygame.display.set_caption("太空生存战")
#游戏回圈
while running:
#确定帧率
clock.tick(FPS)
#取得输入
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
player.shoot()
#更新游戏
all_sprites.update()
#画面显示
screen.fill(WHITE)
all_sprites.draw(screen)
pygame.display.update()
pygame.quit()
请问在出现画面后,键盘上输入空格原本应该出现黄色子弹但是画面却出现了闪退,这是什么原因?要怎么解决