2026-01-09 00:19:12 +08:00
|
|
|
|
# 谁是卧底游戏 - Streamlit Web应用
|
2026-01-08 23:41:05 +08:00
|
|
|
|
|
2026-01-09 00:19:12 +08:00
|
|
|
|
## 一、团队成员与贡献
|
2026-01-08 23:41:05 +08:00
|
|
|
|
|
2026-01-09 00:19:12 +08:00
|
|
|
|
<table>
|
|
|
|
|
|
<tr>
|
|
|
|
|
|
<td>姓名</td>
|
|
|
|
|
|
<td>学号</td>
|
|
|
|
|
|
<td>主要贡献(具体分工)</td>
|
|
|
|
|
|
</tr>
|
|
|
|
|
|
<tr>
|
|
|
|
|
|
<td>王子欣</td>
|
|
|
|
|
|
<td>2411020210</td>
|
|
|
|
|
|
<td>(组长)核心逻辑开发、Prompt编写、AI集成</td>
|
|
|
|
|
|
</tr>
|
|
|
|
|
|
<tr>
|
|
|
|
|
|
<td>赵珂蔓</td>
|
|
|
|
|
|
<td>2411020219</td>
|
|
|
|
|
|
<td>前端界面设计、PPT制作、UI优化</td>
|
|
|
|
|
|
</tr>
|
|
|
|
|
|
<tr>
|
|
|
|
|
|
<td>徐晨颖</td>
|
|
|
|
|
|
<td>2411020116</td>
|
|
|
|
|
|
<td>文档撰写、测试与Bug修复、游戏规则设计</td>
|
|
|
|
|
|
</tr>
|
|
|
|
|
|
</table>
|
2026-01-08 23:41:05 +08:00
|
|
|
|
|
2026-01-09 00:19:12 +08:00
|
|
|
|
## 二、项目简介 & 运行指南
|
2026-01-08 23:41:05 +08:00
|
|
|
|
|
2026-01-09 00:19:12 +08:00
|
|
|
|
### 简介
|
|
|
|
|
|
这是一个基于Streamlit开发的在线"谁是卧底"游戏,解决了线下多人聚会时难以组织、角色分配不便的痛点。通过AI模拟玩家发言,让单人也能体验多人推理游戏的乐趣。
|
2026-01-08 23:41:05 +08:00
|
|
|
|
|
2026-01-09 00:19:12 +08:00
|
|
|
|
### 如何运行
|
|
|
|
|
|
1. 安装依赖:`uv sync`
|
|
|
|
|
|
2. 启动应用:`uv run streamlit run app.py`
|
|
|
|
|
|
3. 在浏览器中访问:`http://localhost:8501`
|
2026-01-08 23:41:05 +08:00
|
|
|
|
|
2026-01-09 00:19:12 +08:00
|
|
|
|
## 三、开发心得
|
2026-01-08 23:41:05 +08:00
|
|
|
|
|
2026-01-09 00:19:12 +08:00
|
|
|
|
### 1. 选题思考
|
|
|
|
|
|
**为什么做这个?解决了谁的痛苦?**
|
2026-01-08 23:41:05 +08:00
|
|
|
|
|
2026-01-09 00:51:04 +08:00
|
|
|
|
开发心得 (Development Reflection)
|
|
|
|
|
|
1. 选题思考
|
|
|
|
|
|
为什么做这个?解决了谁的痛苦?
|
|
|
|
|
|
我一直是桌游爱好者,但现实中朋友时间难凑,线上平台体验又差。这个项目让我一个人也能体验推理乐趣。它服务于三类用户:想练习技巧的爱好者、想学习规则的新手、需要团建的组织者。通过AI模拟真实玩家,让单人游戏也有社交体验。
|
|
|
|
|
|
2. AI 协作体验
|
|
|
|
|
|
2.1 初体验
|
|
|
|
|
|
第一次用AI写代码很震撼。它能快速生成框架,但常理解错需求。我意识到AI是"超级实习生",需要明确指令和严格监督。
|
|
|
|
|
|
2.2 Prompt 交互
|
|
|
|
|
|
最牛的Prompt:
|
|
|
|
|
|
请用Python实现一个Streamlit页面,要求:
|
|
|
|
|
|
1. 使用2列布局展示游戏信息
|
|
|
|
|
|
2. 左侧显示当前玩家列表(用紫色标签突出显示卧底)
|
|
|
|
|
|
3. 右侧放置发言输入框和投票按钮
|
|
|
|
|
|
4. 添加"显示/隐藏身份"切换开关
|
|
|
|
|
|
5. 底部设置重置游戏按钮
|
|
|
|
|
|
注意:组件间距保持20px,整体使用暗黑主题
|
|
|
|
|
|
这个Prompt精准明确,AI生成了完美的界面代码。
|
|
|
|
|
|
最坑的Prompt/交互:
|
|
|
|
|
|
帮我做个谁是卧底游戏
|
|
|
|
|
|
这个模糊prompt让AI生成了无法运行的伪代码,混合了Flask和Streamlit语法,还用了过时的st.beta_columns。经过3次迭代才纠正方向。
|
|
|
|
|
|
2.3 Bug 解决
|
|
|
|
|
|
AI生成投票系统的Bug:
|
|
|
|
|
|
AI生成的投票统计代码有严重问题:
|
|
|
|
|
|
# AI的错误代码
|
|
|
|
|
|
def handle_vote(votes):
|
|
|
|
|
|
counts = {}
|
|
|
|
|
|
for v in votes:
|
|
|
|
|
|
counts[v] += 1 # 没有初始化字典,会KeyError
|
|
|
|
|
|
return max(counts)
|
|
|
|
|
|
如何发现并修复:
|
|
|
|
|
|
测试时系统频繁崩溃。我添加调试信息发现是字典未初始化。修正为:
|
|
|
|
|
|
def handle_vote(votes):
|
|
|
|
|
|
counts = defaultdict(int)
|
|
|
|
|
|
for v in votes.values():
|
|
|
|
|
|
counts[v] += 1
|
|
|
|
|
|
return max(counts.items(), key=lambda x: x[1])[0]
|
|
|
|
|
|
这个Bug让我明白:AI能写代码,但不会考虑边界情况,必须人工验证。
|
|
|
|
|
|
3. 自我反思
|
|
|
|
|
|
3.1 离开 AI
|
|
|
|
|
|
离开AI我能完成基础版,但达不到现在的质量。我能做界面和逻辑框架,但AI发言系统和复杂投票机制需要AI协助。AI让开发从2周缩短到3天。
|
|
|
|
|
|
3.2 核心竞争力
|
|
|
|
|
|
AI时代,程序员的核心竞争力是:
|
|
|
|
|
|
问题定义能力:知道要解决什么问题
|
|
|
|
|
|
系统整合能力:将AI生成的模块组合成完整系统
|
|
|
|
|
|
质量把关能力:发现并修复AI的错误
|
|
|
|
|
|
价值判断能力:什么体验是"好"的,什么是"公平"的
|
2026-01-09 00:52:41 +08:00
|
|
|
|
未来编程是人与AI的协作。我的代码中,策略是人类定的,内容是AI生成的,质量是人类把关的——这就是新时代的编程模式。
|