摘要: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退出游戏
这个版本改进了代码结构,使用类来封装游戏对象,使得逻辑更清晰且易于扩展。后续可以方便地添加更多功能,例如:
- 增加音效和背景音乐
- 添加计分系统
- 实现子弹类型切换
- 增加游戏难度等级
来源:狮子游戏团