python pygame 精灵重复出现
太爽了,python写多了,真怕自己放弃C语言^-^
import pygame import random # 随机模块 FPS = 60 # 每秒更新游戏画面的频率 WIDTH = 500 # 窗口宽度 HEIGHT = 600 # 窗口高度 GREEN = (54, 173, 35) RED = (255, 0, 0) # 游戏初始化 pygame.init() screen = pygame.display.set_mode((WIDTH, HEIGHT)) # 游戏窗口 pygame.display.set_caption("飞机大战") # 窗口标题 clock = pygame.time.Clock() # 设定时钟,为了控制游戏更新画面频率 running = True # 落下的石头类 class Rock(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.Surface((30, 20)) # 精灵图片 self.image.fill(RED) self.rect = self.image.get_rect() # 定位精灵位置,坐标 self.rect.x = random.randrange(0, WIDTH - self.rect.width) # 石头x坐标出现位置随机,要减去石头的宽度 self.rect.y = random.randrange(-100, -40) # 窗口外面,随机位置生成 self.speedy = random.randrange(1, 8) # 垂直下落速度 self.speedx = random.randrange(-3, 3) # 水平移动速度(用负数可以让石头左右两边跑) def update(self): self.rect.y += self.speedy # 石头X轴坐标,加上y轴下落 self.rect.x += self.speedx # 石头超出窗口边界,重置坐标 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) # 石头x坐标出现位置随机,要减去石头的宽度 self.rect.y = random.randrange(-100, -40) # 窗口外面,随机位置生成 self.speedy = random.randrange(1, 8) # 垂直下落速度 self.speedx = random.randrange(-3, 3) # 水平移动速度(用负数可以让石头左右两边跑) # Player类游戏角色类 class Player(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.Surface((86, 20)) # 精灵图片 self.image.fill(GREEN) self.rect = self.image.get_rect() # 定位精灵位置,坐标 self.rect.centerx = WIDTH / 2 # 位置 X轴中间 self.rect.bottom = HEIGHT - 10 # 位置 窗口底部-10 self.speedx = 4 # 控制精灵移动速度 # self.rect.center =(WIDTH/2,HEIGHT/2) 在画布中央 def update(self): key_pressed = pygame.key.get_pressed() # 监听键盘,按下键返回ture,否flase if key_pressed[pygame.K_RIGHT]: # 键盘方向键右键 pygame.K_a 键盘A键 self.rect.x += self.speedx if key_pressed[pygame.K_LEFT]: # 键盘方向键左键 self.rect.x -= self.speedx # 触碰窗口左右两边边界判断 if self.rect.right > WIDTH: self.rect.right = WIDTH if self.rect.left < 0: self.rect.left = 0 # 多游戏角色 all_sprites = pygame.sprite.Group() player = Player() all_sprites.add(player) # 玩家加入游戏群组 for i in range(9): rock = Rock() all_sprites.add(rock) # 石头加入游戏精灵群组 # 主游戏循环 while running: clock.tick(FPS) # FPS一秒更新几次画面 # 鼠标键盘实践监听,回传列表 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 更新游戏 all_sprites.update() # 执行游戏精灵群组里每个物件的update函数 # 显示 screen.fill((255, 255, 255)) # RGB 红绿蓝(0-255) all_sprites.draw(screen) # 将游戏群组里精灵画出来 pygame.display.update() pygame.quit()