以下是一个使用 Pygame 编写的简单飞机大战小游戏的代码,它包含全屏模式、玩家控制、敌机生成、子弹发射、碰撞检测和得分系统。\n\npython\nimport pygame\nimport random\n\n# 游戏窗口大小\nWIDTH = 800\nHEIGHT = 600\n\n# 颜色定义\nBLACK = (0, 0, 0)\nWHITE = (255, 255, 255)\n\nclass Player(pygame.sprite.Sprite):\n def __init__(self):\n super().__init__()\n\n self.image = pygame.image.load("player.png").convert()\n self.image.set_colorkey(BLACK)\n self.rect = self.image.get_rect()\n\n self.rect.centerx = WIDTH // 2\n self.rect.bottom = HEIGHT - 10\n\n self.speed_x = 0\n self.speed_y = 0\n\n def update(self):\n self.speed_x = 0\n self.speed_y = 0\n\n keys = pygame.key.get_pressed()\n if keys[pygame.K_LEFT]:\n self.speed_x = -5\n elif keys[pygame.K_RIGHT]:\n self.speed_x = 5\n elif keys[pygame.K_UP]:\n self.speed_y = -5\n elif keys[pygame.K_DOWN]:\n self.speed_y = 5\n\n self.rect.x += self.speed_x\n self.rect.y += self.speed_y\n\n if self.rect.left < 0:\n self.rect.left = 0\n elif self.rect.right > WIDTH:\n self.rect.right = WIDTH\n elif self.rect.top < 0:\n self.rect.top = 0\n elif self.rect.bottom > HEIGHT:\n self.rect.bottom = HEIGHT\n\nclass Enemy(pygame.sprite.Sprite):\n def __init__(self):\n super().__init__()\n\n self.image = pygame.image.load("enemy.png").convert()\n self.image.set_colorkey(BLACK)\n self.rect = self.image.get_rect()\n\n self.rect.x = random.randrange(WIDTH - self.rect.width)\n self.rect.y = random.randrange(-100, -40)\n\n self.speed_y = random.randrange(1, 8)\n\n def update(self):\n self.rect.y += self.speed_y\n if self.rect.top > HEIGHT + 10:\n self.rect.x = random.randrange(WIDTH - self.rect.width)\n self.rect.y = random.randrange(-100, -40)\n self.speed_y = random.randrange(1, 8)\n\nclass Bullet(pygame.sprite.Sprite):\n def __init__(self, x, y):\n super().__init__()\n\n self.image = pygame.Surface([4, 10])\n self.image.fill(WHITE)\n self.rect = self.image.get_rect()\n\n self.rect.x = x\n self.rect.y = y\n\n def update(self):\n self.rect.y -= 5\n\npygame.init()\n\nscreen = pygame.display.set_mode((WIDTH, HEIGHT), pygame.FULLSCREEN)\npygame.display.set_caption("飞机大战")\n\nall_sprites = pygame.sprite.Group()\nenemies = pygame.sprite.Group()\nbullets = pygame.sprite.Group()\n\nplayer = Player()\nall_sprites.add(player)\n\nfor i in range(8):\n enemy = Enemy()\n all_sprites.add(enemy)\n enemies.add(enemy)\n\nclock = pygame.time.Clock()\n\nscore = 0\nrunning = True\ngame_over = False\n\nwhile running:\n for event in pygame.event.get():\n if event.type == pygame.QUIT:\n running = False\n\n elif event.type == pygame.KEYDOWN:\n if event.key == pygame.K_SPACE and not game_over:\n bullet = Bullet(player.rect.centerx, player.rect.top)\n all_sprites.add(bullet)\n bullets.add(bullet)\n\n if not game_over:\n all_sprites.update()\n\n hits = pygame.sprite.groupcollide(enemies, bullets, True, True)\n for hit in hits:\n score += 1\n enemy = Enemy()\n all_sprites.add(enemy)\n enemies.add(enemy)\n\n hits = pygame.sprite.spritecollide(player, enemies, False)\n if hits:\n game_over = True\n\n screen.fill(BLACK)\n all_sprites.draw(screen)\n\n pygame.display.flip()\n\n clock.tick(60)\n\npygame.quit()\n\n\n请注意,上述代码假设已经准备好了"player.png"和"enemy.png"两张图片,分别代表玩家飞机和敌机的外观。

Python Pygame 飞机大战游戏:全屏模式、碰撞检测和得分

原文地址: https://www.cveoy.top/t/topic/qbm3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录