progect106-1/README.md

90 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 谁是卧底游戏 - Streamlit Web应用
## 一、团队成员与贡献
<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>
## 二、项目简介 & 运行指南
### 简介
这是一个基于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生成的质量是人类把关的——这就是新时代的编程模式。