写一个飞机大战小游戏
时间: 2023-10-06 21:06:42 浏览: 32
好的,这是一个简单的飞机大战小游戏的代码示例(使用Python语言和Pygame库):
```python
import pygame
import random
# 初始化Pygame
pygame.init()
# 设置游戏窗口尺寸
screen_width = 480
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
# 设置游戏标题
pygame.display.set_caption("飞机大战")
# 加载游戏资源
background = pygame.image.load("background.png")
player_image = pygame.image.load("player.png")
enemy_image = pygame.image.load("enemy.png")
bullet_image = pygame.image.load("bullet.png")
explosion_image = pygame.image.load("explosion.png")
# 定义游戏对象
class Player:
def __init__(self):
self.image = player_image
self.rect = self.image.get_rect()
self.rect.centerx = screen_width / 2
self.rect.bottom = screen_height - 10
self.speed = 5
self.bullets = []
def update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.rect.x -= self.speed
if keys[pygame.K_RIGHT]:
self.rect.x += self.speed
if keys[pygame.K_SPACE]:
self.fire()
# 限制玩家移动范围
if self.rect.left < 0:
self.rect.left = 0
if self.rect.right > screen_width:
self.rect.right = screen_width
def draw(self):
screen.blit(self.image, self.rect)
def fire(self):
bullet = Bullet(self.rect.centerx, self.rect.top)
self.bullets.append(bullet)
class Enemy:
def __init__(self):
self.image = enemy_image
self.rect = self.image.get_rect()
self.rect.x = random.randrange(screen_width - self.rect.width)
self.rect.y = random.randrange(-100, -40)
self.speed = random.randrange(1, 5)
def update(self):
self.rect.y += self.speed
if self.rect.top > screen_height:
self.rect.x = random.randrange(screen_width - self.rect.width)
self.rect.y = random.randrange(-100, -40)
self.speed = random.randrange(1, 5)
def draw(self):
screen.blit(self.image, self.rect)
class Bullet:
def __init__(self, x, y):
self.image = bullet_image
self.rect = self.image.get_rect()
self.rect.centerx = x
self.rect.bottom = y
self.speed = -10
def update(self):
self.rect.y += self.speed
def draw(self):
screen.blit(self.image, self.rect)
class Explosion:
def __init__(self, x, y):
self.image = explosion_image
self.rect = self.image.get_rect()
self.rect.centerx = x
self.rect.centery = y
self.timer = 0
def update(self):
self.timer += 1
if self.timer > 10:
self.kill()
def draw(self):
screen.blit(self.image, self.rect)
def kill(self):
explosions.remove(self)
# 初始化游戏对象
player = Player()
enemies = []
for i in range(10):
enemy = Enemy()
enemies.append(enemy)
bullets = []
explosions = []
# 设置游戏循环
clock = pygame.time.Clock()
score = 0
running = True
while running:
# 处理游戏事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 更新游戏对象
player.update()
for enemy in enemies:
enemy.update()
for bullet in player.bullets:
bullet.update()
for explosion in explosions:
explosion.update()
# 处理游戏碰撞
for enemy in enemies:
if pygame.sprite.collide_rect(player, enemy):
explosion = Explosion(enemy.rect.centerx, enemy.rect.centery)
explosions.append(explosion)
enemies.remove(enemy)
score += 10
for bullet in player.bullets:
if pygame.sprite.collide_rect(bullet, enemy):
explosion = Explosion(enemy.rect.centerx, enemy.rect.centery)
explosions.append(explosion)
enemies.remove(enemy)
player.bullets.remove(bullet)
score += 1
# 绘制游戏界面
screen.blit(background, (0, 0))
player.draw()
for enemy in enemies:
enemy.draw()
for bullet in player.bullets:
bullet.draw()
for explosion in explosions:
explosion.draw()
score_text = pygame.font.SysFont(None, 30).render("得分:" + str(score), True, (255, 255, 255))
screen.blit(score_text, (10, 10))
pygame.display.update()
# 控制游戏帧率
clock.tick(60)
# 退出Pygame
pygame.quit()
```
需要注意的是,这只是一个简单的示例,实际的游戏开发还需要更多的代码和资源。