From 0f784b738338d6fb985fb8de5957e60097812a63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E9=B9=8F=E7=BF=B0?= Date: Thu, 8 Jan 2026 17:48:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=B8=B8=E6=88=8F=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E5=92=8C=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 82 ----------------------------------- README1.md | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+), 82 deletions(-) delete mode 100644 README.md create mode 100644 README1.md diff --git a/README.md b/README.md deleted file mode 100644 index b0a0364..0000000 --- a/README.md +++ /dev/null @@ -1,82 +0,0 @@ -# 密室杀人侦破 - 网页推理游戏 - -一个基于AI生成的密室杀人推理游戏,玩家需要通过选择不同的选项来推进案件调查,最终达到100%进度结案。 - -## 项目特色 - -- 🎮 **20个独立场景**,每个场景4个选项 -- 🤖 **AI生成剧情**,使用DeepSeek API自动生成场景和选项 -- ⚠️ **危机系统**,连续危险选择会触发特殊状态 -- 🏆 **多结局系统**,根据选择决定案件结局 -- 📱 **响应式设计**,支持移动端和桌面端 -- 💾 **进度保存**,自动保存游戏状态 - -## 游戏机制 - -### 选项类型 -- **正确选项**:正常推进剧情,进度+5~10% -- **错误选项**:可能触发坏结局,进度+5~10% -- **未知选项**:进度不变,需要谨慎判断 -- **危险选项**:可能触发最坏结局,进度+8~10% - -### 危机系统 -连续选择3次危险选项会触发危机状态: -- **紧张**:增加2个无关选项 -- **焦虑**:选项文本可能被隐藏 -- **恐慌**:界面特效和文字抖动 - -### 结局判定 -- **好结局**:正确找出真凶 -- **坏结局**:找到表面罪犯(错误+危险选择≥7次) -- **最坏结局**:被误认为罪犯(危险选择≥4次) - -## 项目结构 - -``` -密室杀人侦破/ -├── index.html # 主页面 -├── styles.css # 样式文件 -├── game.js # 游戏逻辑 -├── config.js # 配置文件 -├── plan1.md # 详细开发计划 -└── README.md # 项目说明 -``` - -## 快速开始 - -1. 直接打开 `index.html` 文件即可开始游戏 -2. 点击"开始推理"按钮进入游戏 -3. 阅读场景描述,选择你认为正确的选项 -4. 观察进度条变化,谨慎选择避免触发危机 -5. 达到100%进度时查看案件结局 - -## 技术栈 - -- **前端**: HTML5, CSS3, JavaScript (ES6+) -- **样式**: 响应式设计,CSS动画 -- **API**: DeepSeek AI API -- **存储**: LocalStorage - -## 安全说明 - -⚠️ **重要**: 当前版本在前端代码中硬编码了API密钥,这在实际部署中是不安全的。建议: - -1. 使用环境变量管理API密钥 -2. 通过后端代理调用API -3. 部署时移除硬编码的密钥 - -## 开发计划 - -详细开发计划请参考 [plan1.md](plan1.md) 文件。 - -## 扩展功能 - -未来可考虑添加: -- 多案件系统 -- 成就系统 -- 社交分享功能 -- 语音朗读功能 - -## 许可证 - -本项目仅供学习使用。 \ No newline at end of file diff --git a/README1.md b/README1.md new file mode 100644 index 0000000..264767d --- /dev/null +++ b/README1.md @@ -0,0 +1,125 @@ +## 简介 +我们组的项目是一个逻辑推理的小游戏,根据题目和给出的线索,玩家推理出正确的选项,回答正确可以提高百分比,到达100%时游戏结束。 + +## 如何运行 +1. 安装依赖:`uv sync` +2. 配置 Key:复制 `.env.example` 为 `.env` 并填入 Key +3. 启动:`uv run streamlit run test.py` +## 团队成员及分工 +|姓名|学号|主要贡献 (具体分工)| +|---- |----------|------------------| +|朱鹏翰|2411020127|(组长) 核心逻辑开发、程序编写| +|甘大禄|2411020129|文档撰写,文档整理| +|陈双|2411020128|文档撰写、测试与 Bug 修复| +## 1. 选题思考 +> **核心问题**:为什么做这个?解决了谁的痛苦? + +做这个项目是因为我们组的成员对游戏制作感兴趣,想要尝试制作一款自己的小游戏。制作出来是为了尝试去解决很多人对于游戏里面部分情节太死板的问题,希望可以给人带来一些变化上的乐趣。 + +## 2. AI 协作体验 + +### 2.1 初体验 +> **核心问题**:第一次用 AI 写代码的感觉? + +第一次用AI写代码,可以深刻的体验到AI带来的快感,你输入具体的要求和事项,AI即可输出你想要的结果,代码在屏幕上如野马一般狂奔,它也会分成好几个步骤完成,会一一列出来,一步步的完成,几乎不用自己在输入什么其他代码,这是视觉上的震惊,也需要等待一段时间,这取决于你想生成内容的多少和难易程度。这个是让人两眼发亮的,但AI并不是第一次就会生成让你满意的结果,就像我们这个游戏一样第一次生成出来的我们测试之后发现游戏无法结局,它只会在四个大谜团中绕来绕去,无法终结游戏。然后我们去讨论了一下发现是我们的输入还是不太清楚,就重新将要求更改了好几轮,让要求变得更加具体之后再发给AI,后面就用将近6个小时跑出来了现在的游戏设计。当然其实其中AI也会用出错的地方,这是让人想砸键盘的。后面测试结果感觉这个制作还算满意的。 + +### 2.2 Prompt 交互 +> **核心问题**:哪个 Prompt 让你直呼"牛逼"?哪个让你想砸键盘? + +- **最牛 Prompt**: + ```text + def determine_ending(choices_history: List[Dict]) -> str: + """根据选择历史判定结局类型""" + + # 统计选项类型数量 + error_count = 0 + danger_count = 0 + + for choice in choices_history: + if choice["option_type"] == "error": + error_count += 1 + elif choice["option_type"] == "danger": + danger_count += 1 + + # 根据plan1.md中的规则判定结局 + # 规则1: 错误 + 危险选项选择次数 ≥ 7次: 好结局 → 坏结局 + # 规则2: 危险选项选择次数 ≥ 4次: 坏结局 → 最坏结局 + + if danger_count >= 4: + return "worst" # 最坏结局 + elif (error_count + danger_count) >= 7: + return "bad" # 坏结局 + else: + return "good" # 好结局 + + +def get_ending_description(ending_type: str) -> Dict: + """获取结局描述""" + + endings = { + "good": { + "title": "🎉 完美破案 - 好结局", + "description": """ + 经过缜密的调查,你成功找出了真凶! + + **案件真相**: + 真凶是李明的商业合作伙伴王强。由于商业纠纷,王强利用李明书房内的密道进入现场作案。 + 现场发现的财务文件揭示了两人之间的利益冲突,而书房内的隐藏摄像头记录下了关键证据。 + + **评价**: + 你的推理能力和观察力令人钦佩,成功还原了案件真相! + """, + "color": "success" + }, + "bad": { + "title": "😔 误判真凶 - 坏结局", + "description": """ + 你找到了表面上的罪犯,但真凶另有其人。 + + **案件真相**: + 你错误地将管家李叔认定为凶手,但实际上真凶是李明的妻子张美丽。 + 她因财产纠纷策划了这起谋杀,并巧妙地将嫌疑转移给了管家。 + + **评价**: + 虽然找到了部分线索,但关键的证据被忽略了,真凶逍遥法外。 + """, + "color": "warning" + }, + "worst": { + "title": "💀 被误认为罪犯 - 最坏结局", + "description": """ + 由于错误的调查方向,你被误认为是凶手! + + **案件真相**: + 你的调查行为引起了警方的怀疑,现场留下的指纹和监控录像被错误解读。 + 真凶趁机逃脱,而你却成为了替罪羊。 + + **评价**: + 过于冒险的调查选择导致了严重的后果,需要更加谨慎地处理案件。 + """, + "color": "error" + } + } + + ``` + *这也是我觉得最神奇的地方...* + +- **最坑 Prompt / 交互**: + ai经常不知道我的需要,而是会给我一些我不需要的内容,比如一些我不需要的代码,或者一些我不需要的解释。也经常会把我明明重申了好几遍不需要的内容当作主要内容进行输出 + +### 2.3 Bug 解决 +> **核心问题**:AI 生成的 Bug 你是怎么解的? + +比如说ai不会正确使用api去随机生成接下来的场景而是就死守代码里的“备用场景”导致最后之后在3,4个场景里不断重复。后续我大胆的选择直接删除备用场景的代码,只保留随机生成场景的代码。并且引入示例代码里的调用api的代码取代原有的调用代码。保证每次运行都能随机生成不同的场景。当然代码第一次还是出现了互不兼容的情况,后续花了很长一段时间让代码可以按照我想要的方法运作 + +## 3. 自我反思 + +### 3.1 离开 AI +> **核心问题**:离开 AI,我还能写出这个吗? + +说实话,不能。数百行代码的项目,我只能写一部分最基础最简单的代码。并且更高难度的代码我也不知道怎么写。我想要的效果所对应的代码是更加复杂的,就算使用了ai也需要反复调试才能得到我想要的结果。 + +### 3.2 核心竞争力 +> **核心问题**:AI 时代,我作为程序员的核心竞争力到底是什么? + +是对ai的理解和使用能力。熟练的使用ai可以帮助我更快更准确的完成任务。我也会不断学习新的ai工具和技术,提升自己的能力。如何将自己的需要准确的表达给ai,并且精准的发现ai在我需要的内容中隐藏的问题,及时的解决问题,是我作为程序员的核心竞争力。 \ No newline at end of file