Python写一个飞机大战
时间: 2024-02-16 19:52:00 浏览: 185
python写的飞机大战
5星 · 资源好评率100%
好的,我来给你提供一个简单的飞机大战游戏的Python代码。这个游戏使用Pygame库。
首先,你需要安装Pygame库。在终端或命令提示符中运行以下命令:
```
pip install pygame
```
然后,你可以开始编写代码。下面是一个简单的飞机大战游戏的代码:
```python
import pygame
import random
# 初始化 Pygame
pygame.init()
# 游戏窗口的大小
SCREEN_WIDTH = 600
SCREEN_HEIGHT = 800
# 创建游戏窗口
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
# 设置游戏窗口标题
pygame.display.set_caption("飞机大战")
# 加载背景音乐
pygame.mixer.music.load("bgm.mp3")
pygame.mixer.music.play(-1)
# 加载游戏图片
player_img = pygame.image.load("player.png")
enemy_img = pygame.image.load("enemy.png")
bullet_img = pygame.image.load("bullet.png")
# 定义游戏角色类
class Character:
def __init__(self, x, y, img):
self.x = x
self.y = y
self.img = img
self.width = img.get_width()
self.height = img.get_height()
self.rect = pygame.Rect(self.x, self.y, self.width, self.height)
def draw(self):
screen.blit(self.img, (self.x, self.y))
# 定义玩家类
class Player(Character):
def __init__(self, x, y, img):
super().__init__(x, y, img)
self.speed = 6
self.bullets = []
def move_left(self):
self.x -= self.speed
if self.x < 0:
self.x = 0
def move_right(self):
self.x += self.speed
if self.x > SCREEN_WIDTH - self.width:
self.x = SCREEN_WIDTH - self.width
def shoot(self):
bullet = Bullet(self.x + self.width // 2, self.y)
self.bullets.append(bullet)
def update_bullets(self):
for bullet in self.bullets:
bullet.move()
if bullet.y < 0:
self.bullets.remove(bullet)
def draw_bullets(self):
for bullet in self.bullets:
bullet.draw()
# 定义敌人类
class Enemy(Character):
def __init__(self, x, y, img):
super().__init__(x, y, img)
self.speed = 3
def move(self):
self.y += self.speed
def is_collide(self, other):
return self.rect.colliderect(other.rect)
# 定义子弹类
class Bullet(Character):
def __init__(self, x, y):
super().__init__(x, y, bullet_img)
self.speed = 10
def move(self):
self.y -= self.speed
# 创建玩家
player = Player(SCREEN_WIDTH // 2 - player_img.get_width() // 2, SCREEN_HEIGHT - player_img.get_height() - 50, player_img)
# 创建敌人
enemies = []
for i in range(10):
enemy = Enemy(random.randint(0, SCREEN_WIDTH - enemy_img.get_width()), random.randint(-200, -50), enemy_img)
enemies.append(enemy)
# 游戏循环
running = True
while running:
# 事件循环
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player.move_left()
if event.key == pygame.K_RIGHT:
player.move_right()
if event.key == pygame.K_SPACE:
player.shoot()
# 更新玩家子弹
player.update_bullets()
# 更新敌人位置并检测碰撞
for enemy in enemies:
enemy.move()
if enemy.is_collide(player):
running = False
for bullet in player.bullets:
if enemy.is_collide(bullet):
player.bullets.remove(bullet)
enemies.remove(enemy)
# 清空屏幕
screen.fill((255, 255, 255))
# 绘制玩家和敌人
player.draw()
for enemy in enemies:
enemy.draw()
# 绘制玩家子弹
player.draw_bullets()
# 更新屏幕
pygame.display.update()
# 退出 Pygame
pygame.quit()
```
在这个游戏中,你需要控制玩家角色移动并射击敌人。敌人会从屏幕顶部向下移动,当玩家角色与敌人碰撞时游戏结束。玩家可以使用空格键发射子弹。
你需要将游戏图片和背景音乐放在与代码相同的文件夹中,并将它们的文件名替换为代码中的文件名。
希望这个代码对你有帮助,祝你玩得开心!
阅读全文