课程项目 / SI100B: Introduction to Information Science and Technology
SAVE MY LINEAR ALGEBRA:Pygame Roguelike 游戏项目
一个小组合作完成的 SI100B: Introduction to Information Science and Technology Pygame 期末项目。
SI100B: Introduction to Information Science and Technology · 上海科技大学 · 2024 Fall
SI100B
项目概述
SAVE MY LINEAR ALGEBRA 是 SI100B: Introduction to Information Science and Technology 的期末项目。该项目是一个使用 Pygame 实现、受《以撒的结合》启发的 2D Roguelike 原型:玩家操纵 Isaac 发射子弹、放置炸弹、击杀怪物、获取奖励、与 NPC 对话,并最终击败 Boss。Isaac 的血量有限,血量清零时游戏结束。
摘要
- 该项目定位为 SI100B 课程期末项目,而不是商业游戏。
- 游戏原型和素材明确来自 / 参考《以撒的结合》。
- 核心玩法包括房间探索、射击、放置炸弹、清理怪物、NPC 奖励和最终 Boss 战。
- 报告作者列为潘佑邦、宋梓冬和吴俊阳。

玩法设计
玩家循环围绕房间探索与战斗展开:Isaac 从 StartRoom 出生并学习操作,随后进入奖励房或战斗房,清理敌人后解锁房门,并根据 Boss 房间提示前往最终战斗。
玩法
角色控制
- W、A、S、D 控制 Isaac 移动,并通过移动向量支持斜向移动。
- 方向键控制 Isaac 向不同方向发射 tear,子弹攻击力和形态可以在游戏中增强。
- LShift 用于加速移动,E 键放置炸弹;炸弹可以伤害敌人,也可能误伤 Isaac。
玩法
房间推进
- StartRoom 展示移动、攻击和放置炸弹等基本操作。
- 战斗房在战斗过程中会关闭房门,只有清除所有敌人后才会重新打开。
- 每轮游戏有且仅有一个 BossRoom,击败 Boss 后进入胜利结算画面。
玩法
奖励与失败状态
- Lucky Room 中的抽奖机会消耗金币,并给予血量、攻击力或金币增益。
- NPC Room 中玩家可以与 Trainer 或 Merchant 对话,获得隐藏奖励或进行交易。
- Isaac 血量清零时死亡,游戏进入结束状态。
实现设计
实现内容覆盖房间场景、房门逻辑、障碍物、场景切换、角色行为、二叉树地图结构、碰撞处理、资源 UI、NPC 决策、菜单场景和音效反馈等细节。
系统
场景、房门与转场
- 游戏包含 StartRoom、奖励房、战斗房和一个 BossRoom。
- 门可能出现在上、下、左、右四个方向,门的类型决定即将进入的房间类型。
- 房间切换时使用过渡动画,使镜头产生跟随移动的转场效果。
系统
地图与房间生成
- 游戏通过二叉树存储地图结构,StartRoom 是根节点。
- 地图向右方和下方延伸四层,总计 15 个房间。
- BossRoom 保证在第四层生成,每个节点保存父节点和左右子节点,便于迭代和回溯。
系统
障碍物与碰撞
- 房间中包含 Rock 和 Shit 两类障碍物,破坏规则不同。
- 战斗房中 Rock 的位置随机,Shit 会从多种模式中随机生成。
- 碰撞处理覆盖玩家与场景、子弹与场景、子弹与敌人、玩家与敌人、NPC 和道具交互,并包含像素级 mask 碰撞。
系统
NPC、资源与反馈
- Trainer 提出数学问题,并可能回复血量或强化攻击方式。
- Merchant 可用金币或 HP 交换治疗、炸弹、攻击力和攻击速度加成。
- 生命、金币、攻击、炸弹和 Boss 房间提示会在 UI 中实时更新,动作会触发动画和音效。

设计补充
项目设计包括场景、房门、障碍物、碰撞、角色逻辑、NPC 对话、资源、UI、菜单动画、BGM 和隐藏效果等内容。
报告
角色与 Boss 设计
- 普通敌人不会主动攻击玩家,而是在移动中与玩家碰撞造成扣血。
- Bug 具有普通形态和冲刺形态,Fly 会进行无规则飞行。
- Gurdy 拥有 100 点血量,会召唤 Fly 并向玩家方向发射子弹;实现上将 Boss 身体和攻击机制拆分为两个类。
报告
NPC / LLM Agent 系统
- 玩家靠近 NPC 并按 Q 键进入对话框。
- 对话历史和玩家当前状态会传入 NPC 决策流程。
- Trainer 与 Merchant 会根据对话和资源状态产生不同奖励、惩罚或交易结果。
报告
UI、提示与隐藏效果
- 游戏实时更新血量、金币、攻击力和炸弹数量。
- 右上角 Boss Room 位置提示帮助玩家推断前往 Boss 房间的路径。
- Isaac 被自己的炸弹炸伤时会触发分尸隐藏效果,头颅进行无规则飘动。
报告
代码组织
- 报告描述了面向对象和模块化封装的实现方式。
- GameManager 是主要总控部分,Characters、Scenes、TmpTools 和 UI 等目录分离不同功能。
- Main.py 和 Statics.py 位于项目根目录,用于运行程序和保存共享数据。
我的贡献
作为团队项目的一部分,我的贡献主要集中在敌人逻辑、游戏管理、动画、UI / 场景以及 README 文档整理。
贡献
- Enemies.py
- GameManager.py
- Animations
- UI / Scenes
- README.md
视觉展示
下方展示项目材料中的游戏截图和设计示意图。





