使用python写一个飞机大战
时间: 2023-09-06 17:13:24 浏览: 45
好的,我可以帮你提供一个简单的飞机大战游戏的代码,使用Python语言实现。下面是代码:
```python
import pygame
import random
# 初始化
pygame.init()
# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
# 设置屏幕大小
size = (480, 700)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("飞机大战")
# 加载图片
background = pygame.image.load("background.png").convert()
player_image = pygame.image.load("player.png").convert()
bullet_image = pygame.image.load("bullet.png").convert()
enemy_image = pygame.image.load("enemy.png").convert()
# 设置字体
font = pygame.font.SysFont(None, 25)
# 定义玩家类
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = player_image
self.rect = self.image.get_rect()
self.rect.x = 200
self.rect.y = 600
def update(self):
# 获取键盘事件
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.rect.x -= 5
if keys[pygame.K_RIGHT]:
self.rect.x += 5
if keys[pygame.K_SPACE]:
bullet = Bullet(self.rect.x + 25, self.rect.y - 10)
all_sprites_list.add(bullet)
bullet_list.add(bullet)
# 保持在屏幕内
if self.rect.x < 0:
self.rect.x = 0
elif self.rect.x > 455:
self.rect.x = 455
# 定义子弹类
class Bullet(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__()
self.image = bullet_image
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
def update(self):
self.rect.y -= 10
if self.rect.y < -10:
self.kill()
# 定义敌机类
class Enemy(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = enemy_image
self.rect = self.image.get_rect()
self.rect.x = random.randrange(0, 430)
self.rect.y = random.randrange(-600, -50)
self.speed = random.randrange(1, 5)
def update(self):
self.rect.y += self.speed
if self.rect.y > 700:
self.rect.x = random.randrange(0, 430)
self.rect.y = random.randrange(-600, -50)
self.speed = random.randrange(1, 5)
# 创建玩家
player = Player()
# 创建精灵组
all_sprites_list = pygame.sprite.Group()
all_sprites_list.add(player)
# 创建子弹组
bullet_list = pygame.sprite.Group()
# 创建敌机组
enemy_list = pygame.sprite.Group()
for i in range(10):
enemy = Enemy()
all_sprites_list.add(enemy)
enemy_list.add(enemy)
# 设置帧率
clock = pygame.time.Clock()
# 初始化分数
score = 0
# 游戏循环
done = False
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
# 游戏逻辑处理
all_sprites_list.update()
# 检测子弹和敌机是否碰撞
for bullet in bullet_list:
enemy_hit_list = pygame.sprite.spritecollide(bullet, enemy_list, True)
for enemy in enemy_hit_list:
bullet_list.remove(bullet)
all_sprites_list.remove(bullet)
score += 10
# 检测玩家和敌机是否碰撞
enemy_hit_list = pygame.sprite.spritecollide(player, enemy_list, True)
for enemy in enemy_hit_list:
score -= 50
# 渲染屏幕
screen.blit(background, (0, 0))
text = font.render("得分: " + str(score), True, WHITE)
screen.blit(text, [10, 10])
all_sprites_list.draw(screen)
pygame.display.flip()
# 设置帧率
clock.tick(60)
# 退出游戏
pygame.quit()
```
在运行游戏之前,你需要准备三张图片:`background.png`、`player.png`和`enemy.png`,并将它们放在与代码同一目录下。
希望这个代码对你有所帮助!