快速在局域网内上线跑酷小游戏
Author:Daniel
2026/01/05 09:13
Description
开发FastAPI集成的2D跑酷游戏,支持局域网访问,包含Excel数据存储和排行榜功能
Tags
代码编程内容生成
Content
生成FastAPI集成游戏的提示词模板
完整提示词
请创建一个单文件集成的2D跑酷游戏,具体要求如下:
🏗️ 技术架构
• 后端框架: FastAPI
• 前端技术: HTML5 Canvas + JavaScript
• 文件组织: 所有代码集成在一个Python文件中
• 端口设置: 使用8800端口,支持局域网访问(host="0.0.0.0")http://10.205.138.150:8800/
🎮 游戏功能
• 游戏类型: 2D侧边视角跑酷游戏
• 角色控制: 自动奔跑,空格键或鼠标点击跳跃
• 游戏机制: 随机生成障碍物,碰撞即游戏结束
游戏控制: 开始、暂停、重新开始功能
🔧 技术要求
• 代码风格: 精简高效,采用科学的代码结构,用户只需运行 python 文件,即可开始游戏,无需其他依赖文件
• 数据存储: 游戏将数据写入 Excel 文件 day3.xlsx,包括员工工号、姓名、游戏得分、如果 day3.xlsx 不存在,自动创建并添加表头;如果已存在,则只追加记录,不清空原数据登录时间,
• API设计: 使用Pydantic数据模型,RESTful API风格
• 前端架构: ES6类封装游戏逻辑,模块化设计,所有 HTML、CSS、JavaScript 必须作为字符串内嵌在 Python 脚本中,使用 FastAPI 的 Jinja2 模板或 HTMLResponse 渲染 11. 使用 openpyxl 操作 Excel 文件 12. 页面不需要动画,界面响应快,所有功能简洁清晰规则要求:
🗑️ 游戏规则:
1. 游戏目标:
o 玩家控制一个小人,在跑酷过程中捡垃圾并将其分类到对应的垃圾桶。
o 游戏中的垃圾桶有三种类型:可回收、厨余、其他。
o 每种垃圾桶对应一种垃圾,玩家需要将垃圾分类正确才能得分。
2. 游戏角色:
o 玩家控制的小人最多可以在两只手中各拣起一件垃圾,总共最多可以拿到两件垃圾。
o 拣垃圾的过程没有得分,只有将垃圾放进正确的垃圾桶后才能得分。
3. 垃圾和垃圾桶:
o 游戏中会随机刷出垃圾和垃圾桶,玩家必须根据垃圾桶的类型来分类垃圾。
o 如果手中有对应类型的垃圾,则可以撞到垃圾桶并消耗手中的垃圾。
o 如果手中的垃圾与当前垃圾桶不匹配,玩家需要跳过去,否则游戏失败。
o 撞击垃圾桶时没有得分,只有正确分类垃圾时才能得分。
o 只有当垃圾被正确放入垃圾桶中时,才加一分。
4. 跳跃机制:
o 如果玩家手中的垃圾与当前垃圾桶类型不匹配,则需要跳过垃圾桶。
o 跳跃本身没有加分,只是避免失败。
5. 得分规则:
o 只有将垃圾正确投放进对应的垃圾桶后,才能获得1分。
o 时间不加分,得分完全取决于垃圾分类的准确性。
6. 游戏失败:
o 如果玩家在游戏过程中碰到不匹配的垃圾桶且没有及时跳过,则游戏失败。
📱 界面要求
• 样式设计: 简洁美观的CSS样式,响应式布局,游戏页面背景为白色,风格简洁现代,模拟办公室
• 游戏画布: HTML5 Canvas实现游戏渲染
• 用户界面: 显示得分、控制按钮、游戏状态,玩家首先输入姓名和工号,点击开始按钮后,开始计时
• 排行榜:提供一个路由 /dashboard,展示排行榜页面,读取 Excel 文件中的数据,按游戏用时升序排序显示,列包括排名、工号、姓名、游戏时间、登录时间
•
• 📁 【素材路径说明】
• - 所有图片都保存在:C:\Users\nsclonli\Desktop\Day3\BIN
• - 角色图片:BIN\role.png
• - 厨余垃圾及其桶在:BIN\Kitchen Waste\
• - 可回收垃圾及其桶在:BIN\Recyclable Waste\
• - 其他垃圾及其桶在:BIN\Other Waste\
•
• 📦 【垃圾分类说明】
• 1. 厨余垃圾(绿色桶):Fish bones.png、Fruit pits.png、Leftover dishes.png、Meat bones.png、Orange peels.png、Kitchen waste bin.png
• 2. 可回收垃圾(蓝色桶):Old books.png、Plastic water bottles.png、Used cardboard boxes.png、Recyclable waste bin.png
• 3. 其他垃圾(橙色桶):Cigarette butts.png、Glue.png、Milk tea cup.png、Plastic bags.png、Wet wipes.png、Other waste bin.png
•
• 👤 【人物角色】
• - 使用 BIN\role.png 做为可控制角色(键盘方向键或鼠标拖动)
• - 角色可以移动,将垃圾拖动到对应的垃圾桶进行投放
•
• 🕹 【游戏功能要求】
• - 界面大小建议:1280x720
• - 拖拽垃圾图标到正确垃圾桶可得分,错误扣分
• - 随机生成垃圾在屏幕上方
• - 拖动到垃圾桶范围内判断类型是否正确
• - 显示当前得分
• - 倒计时或计时器功能(比如60秒挑战)
🎯 核心特性
• 单文件部署: 所有代码在一个.py文件中,直接运行
• 局域网支持: 可在局域网内多设备访问
• 性能优化: 流畅的游戏循环和渲染
• 错误处理: 基本的异常处理和用户反馈
________________________________________
🔧 关键技术点提示
FastAPI结构
from fastapi import FastAPI
from fastapi.responses import HTMLResponse
import uvicorn
from pydantic import BaseModel
游戏类设计
class ParkourGame {
constructor() { /* 初始化 */ }
start() { /* 开始游戏 */ }
update() { /* 游戏逻辑 */ }
render() { /* 渲染画面 */ }
gameLoop() { /* 主循环 */ }
}
网络配置
uvicorn.run(
app,
host="0.0.0.0", # 局域网访问
port=8800, # 指定端口
log_level="warning"
)
________________________________________
📋 可选扩展提示
如需增加功能,可在提示词中添加:
• 音效支持: Web Audio API实现跳跃和碰撞音效
• 难度系统: 逐渐增加游戏速度和障碍物密度
• 视觉效果: 粒子系统、背景动画、角色动画
• 数据持久化: SQLite数据库存储历史得分
• 多人功能: WebSocket实现实时排行榜
• 移动适配: 触摸控制和移动端优化
________________________________________
🎯 输出期望
最终应生成一个集成其中的Python文件,包含:
1. 完整的FastAPI应用
2. 内嵌的HTML/CSS/JavaScript游戏代码
3. API接口用于数据交互
4. 清晰的代码注释和模块化结构
5. 可直接运行的完整应用
✅ 三类垃圾提示词 + 路径映射
你提到的垃圾分类结构如下:
📁 主目录路径:
C:\Users\nsclonli\Desktop\Day3
📁 垃圾素材文件夹路径:
C:\Users\nsclonli\Desktop\Day3\BIN
________________________________________
🟩 可回收垃圾(Recyclable Waste)
python
复制编辑
recyclable_waste = {
"旧书": r"BIN\Recyclable Waste\Old books.png",
"塑料水瓶": r"BIN\Recyclable Waste\Plastic water bottles.png",
"纸箱": r"BIN\Recyclable Waste\Used cardboard boxes.png",
"可回收垃圾桶": r"BIN\Recyclable Waste\Recyclable waste bin.png"
}
________________________________________
🟧 其他垃圾(Other Waste)
python
复制编辑
other_waste = {
"烟头": r"BIN\Other Waste\Cigarette butts.png",
"胶水": r"BIN\Other Waste\Glue.png",
"奶茶杯": r"BIN\Other Waste\Milk tea cup.png",
"塑料袋": r"BIN\Other Waste\Plastic bags.png",
"湿纸巾": r"BIN\Other Waste\Wet wipes.png",
"其他垃圾桶": r"BIN\Other Waste\Other waste bin.png"
}
________________________________________
🟫 厨余垃圾(Kitchen Waste)
假设你将“Fish bones”、“Fruit pits”等放在:
BIN\Kitchen Waste 目录下
python
复制编辑
kitchen_waste = {
"鱼骨": r"BIN\Kitchen Waste\Fish bones.png",
"果核": r"BIN\Kitchen Waste\Fruit pits.png",
"剩饭剩菜": r"BIN\Kitchen Waste\Leftover dishes.png",
"肉骨头": r"BIN\Kitchen Waste\Meat bones.png",
"橘子皮": r"BIN\Kitchen Waste\Orange peels.png",
"厨余垃圾桶": r"BIN\Kitchen Waste\Kitchen waste bin.png"
}