2026-01-08 19:32:08 +08:00
|
|
|
|
## 简介
|
|
|
|
|
|
我们组的项目是一个逻辑推理的小游戏,根据题目和给出的线索,玩家推理出正确的选项,回答正确可以提高百分比,到达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也需要反复调试才能得到我想要的结果。ai还具有更多优点,比如可以快速的生成代码,并且快速自动检索出项目中的问题,及时的解决问题。ai本身在编译代码上有着自己的优势,比如可以快速的编译出符合要求的代码,并且可以及时的发现代码中的问题。
|
|
|
|
|
|
|
|
|
|
|
|
### 3.2 核心竞争力
|
|
|
|
|
|
> **核心问题**:AI 时代,我作为程序员的核心竞争力到底是什么?
|
|
|
|
|
|
|
|
|
|
|
|
是对ai的理解和使用能力。熟练的使用ai可以帮助我更快更准确的完成任务。我也会不断学习新的ai工具和技术,提升自己的能力。如何将自己的需要准确的表达给ai,并且精准的发现ai在我需要的内容中隐藏的问题,及时的解决问题,同时选择合适的ai工具和技术使得最后呈现的效果符合我的需求甚至超出我的预期,是我作为程序员的核心竞争力。
|