# 谁是卧底游戏 - Streamlit Web应用
## 一、团队成员与贡献
| 姓名 |
学号 |
主要贡献(具体分工) |
| 王子欣 |
2411020210 |
(组长)核心逻辑开发、Prompt编写、AI集成 |
| 赵珂蔓 |
2411020219 |
前端界面设计、PPT制作、UI优化 |
| 徐晨颖 |
2411020116 |
文档撰写、测试与Bug修复、游戏规则设计 |
## 二、项目简介 & 运行指南
### 简介
这是一个基于Streamlit开发的在线"谁是卧底"游戏,解决了线下多人聚会时难以组织、角色分配不便的痛点。通过AI模拟玩家发言,让单人也能体验多人推理游戏的乐趣。
### 如何运行
1. 安装依赖:`uv sync`
2. 启动应用:`uv run streamlit run app.py`
3. 在浏览器中访问:`http://localhost:8501`
## 三、开发心得
### 1. 选题思考
**为什么做这个?解决了谁的痛苦?**
开发心得 (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的错误
价值判断能力:什么体验是"好"的,什么是"公平"的
未来编程是人与AI的协作。我的代码中,策略是人类定的,内容是AI生成的,质量是人类把关的——这就是新时代的编程模式。