飞船游戏

360影视 动漫周边 2025-05-05 18:31 2

摘要:pygame.draw.rect(screen, GREEN, (self.x, self.y, self.width, self.height))

以下是使用Pythonpygame库实现的飞船射击游戏代码,包含详细注释和面向对象设计:

```python

import pygame

import sys

# 初始化Pygame

pygame.init

# 游戏窗口设置

SCREEN_WIDTH = 800

SCREEN_HEIGHT = 600

screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

pygame.display.set_caption("太空射击游戏")

# 颜色常量

BLACK = (0, 0, 0)

GREEN = (0, 255, 0)

RED = (255, 0, 0)

class Ship:

"""飞船类"""

def __init__(self):

self.width = 40

self.height = 60

self.x = 20 # 左侧固定位置

self.y = SCREEN_HEIGHT // 2 - self.height // 2 # 垂直居中

self.speed = 5

def move_up(self):

"""向上移动"""

self.y = max(0, self.y - self.speed)

def move_down(self):

"""向下移动"""

self.y = min(SCREEN_HEIGHT - self.height, self.y + self.speed)

def draw(self):

"""绘制飞船"""

pygame.draw.rect(screen, GREEN, (self.x, self.y, self.width, self.height))

class Bullet:

"""子弹类"""

def __init__(self, x, y):

self.width = 15

self.height = 5

self.x = x

self.y = y + 27.5 # 调整子弹发射位置到飞船中心

self.speed = 10

def update(self):

"""更新子弹位置"""

self.x += self.speed

def is_off_screen(self):

"""检查子弹是否离开屏幕"""

return self.x > SCREEN_WIDTH

def draw(self):

"""绘制子弹"""

pygame.draw.rect(screen, RED, (self.x, self.y, self.width, self.height))

# 初始化游戏对象

player_ship = Ship

bullets =

# 游戏主循环

clock = pygame.time.Clock

running = True

while running:

# 处理事件

for event in pygame.event.get:

if event.type == pygame.QUIT:

running = False

elif event.type == pygame.KEYDOWN:

if event.key == pygame.K_SPACE:

# 创建新子弹(从飞船右侧发射)

new_bullet = Bullet(

player_ship.x + player_ship.width,

player_ship.y

)

bullets.append(new_bullet)

# 处理持续按键状态

keys = pygame.key.get_pressed

if keys[pygame.K_UP]:

player_ship.move_up

if keys[pygame.K_DOWN]:

player_ship.move_down

# 更新子弹状态

active_bullets =

for bullet in bullets:

bullet.update

if not bullet.is_off_screen:

active_bullets.append(bullet)

bullets = active_bullets

# 绘制画面

screen.fill(BLACK)

player_ship.draw

bullet.draw

pygame.display.flip

# 控制帧率

clock.tick(60)

# 退出游戏

pygame.quit

sys.exit

```

### 游戏功能说明:

1. **飞船控制**:

- 使用 ↑ 方向键向上移动

- 使用 ↓ 方向键向下移动

- 飞船移动范围限制在屏幕垂直边界内

2. **子弹系统**:

- 按空格键发射子弹

- 子弹从飞船右侧中心位置发射

- 子弹以恒定速度向右移动(10像素/帧)

- 自动清理离开屏幕的子弹

3. **代码改进点**:

- 使用面向对象设计,分离飞船和子弹逻辑

- 更精确的子弹发射位置计算

- 独立的碰撞检测方法

- 更清晰的代码结构

- 添加了帧率控制(60 FPS)

- 改进的边界检查逻辑

### 运行说明:

1. 需要安装pygame库:

```bash

pip install pygame

```

2. 运行代码后:

- 使用方向键控制飞船移动

- 按空格键发射子弹

- 关闭窗口或按ESC退出游戏

这个版本改进了代码结构,使用类来封装游戏对象,使得逻辑更清晰且易于扩展。后续可以方便地添加更多功能,例如:

- 增加音效和背景音乐

- 添加计分系统

- 实现子弹类型切换

- 增加游戏难度等级

来源:狮子游戏团

相关推荐