🏆 麦当劳程序员创意开发大赛(M-China 麦当劳开发者创新挑战)参赛作品 赛事官方仓库:https://github.com/M-China/mcd-developer-innovation-challenge
一句话价值:把会员等餐、餐后的碎片时间,变成一场有麦当劳真实产品陪伴的消消乐——玩得开心、看得见新品,城市榜每周发试吃券,是一个有人文温度的会员互动 Demo。
作品内容(产品、真实 kcal 营养数据)在开发阶段通过麦当劳 MCP 获取真实数据后融入作品,符合活动「开发时调用 MCP 取内容」的要求;游戏内直接展示 kcal,也让数据来源可被一眼验证。详细取数记录见 MCP_INTEGRATION.md。
从技术形态上看,本作品是一个面向微信小程序场景的 HTML5 单文件消消乐(match-3)——Demo 阶段以单个 HTML 文件交付,浏览器或直接嵌入小程序 web-view 打开即可运行。
核心玩法(消消乐)
- 8×8 棋盘,点击或滑动交换相邻方块,横 / 竖 ≥3 个相同即消除,连锁掉落补充;
- 手机端支持「点选交换」与「滑动交换」两种手势(Pointer Events 统一处理);
- 每消除 1 个方块获得「kcal ÷ 100」m 币——kcal 为麦当劳 MCP 营养库真实数据;
- 单局 90 秒,倒计时结束自动结算,弹窗展示本局每款产品消除明细与 kcal 汇总。
会员与赛季机制
- 每周赛循环:周五 00:00 → 周四 23:59 累计,周四 23:59 冻结进奖池,周五 00:00–23:59 领奖,周五 23:59 未操作清零;
- 防沉迷:每日最多 50 局、单日 m 币上限 20000;
- 分享有礼(二选一,每日 1 次):达到当日限额时可分享,选择「限额翻倍(50→100 局)」或「得 200 m 币」;
- 对战模式:双人同屏(同设备轮流各 90 秒)、分享邀请朋友异步约战(各自玩 90 秒比 m 币);对战 m 币同样累计进本周,无论输赢。
奖池与发券
- 推广导向券:新品免费试吃券 / 主推套餐买一送一 / 新品第二份半价(前 3 名专属),第 4–100 名得指定新品 8 折入围券;
- 各城市独立排名,每城前 100 名发券;城市由会员登录授权定位自动确定,无需手动选择;
- 长榜单折叠:只显示前 10 名 + 我的名次(中间省略),可点「查看完整榜单」展开全部。
| 数据 | 来源 | 用在哪里 |
|---|---|---|
| 160 个餐品营养成分(kJ / kcal / 蛋白质 / 脂肪 / 碳水 / 钠 / 钙) | 麦当劳 MCP list-nutrition-foods |
筛选 6 款演示方块、标注真实 kcal |
| 6 款方块产品真实 kcal:猪柳蛋麦满分 387 / 中薯条 289 / 麦乐鸡5块 213 / 圆筒冰淇淋 93 / 大杯玉米杯 87 / 可乐中杯 147 | 同上 | 游戏计分(kcal÷100)与结算明细 |
| 套餐 / 菜单信息 | 麦当劳 MCP query-meals |
产品筛选研究 |
调用时间、返回字段与嵌入方式详见 MCP_INTEGRATION.md。 Demo 阶段只筛选 6 款产品做演示;生产形态下方块可由服务端周期性调用 MCP 拉取「在售 / 当季新品 / 主推活动」产品池。
零依赖、单文件、双击即玩:
- 下载
mcdonalds_match.html到本地; - 用任意现代浏览器(Chrome / Safari / Edge)直接打开;
- 点「▶ 开始游戏」即可。手机端打开同样可用(支持触摸滑动)。
无需安装、无需构建、无需后端、无需任何密钥。
备注:Demo 使用
localStorage持久化;在部分隐私 / 沙箱环境下存储会被禁用,此时内存状态照常、仅不落盘,不影响演示。
- 开局:点「▶ 开始游戏」→ 90 秒倒计时开始;
- 消除:点两个相邻方块交换,或直接滑动某块朝相邻方向划动;≥3 个相同即消除并获得 m 币;
- 结算:倒计时归零自动弹窗——本局每款产品消除个数与 kcal、总 kcal、获得 m 币、本周累计;
- 分享提限:达到当日 50 局上限后点开始,会提示可分享二选一(限额翻倍 / 200 m 币);
- 对战:「⚔️ 对战」页选双人同屏,或「分享邀请朋友对战」生成邀约海报 / 链接后各自开玩,结束比 m 币;
- 领奖:「🎟️ 奖池」页按定位城市看排名,前 100 名可领券或兑积分。
- 参赛评审:快速把玩完整闭环(游戏 → 分享 → 对战 → 城市榜 → 奖池发券);
- 麦当劳会员(成品形态):等餐陪伴、亲子友好、餐后轻互动,新产品以游戏方块形式自然曝光;
- 运营 / 市场(成品形态):方块即推广位,奖池券可配置为新品试吃 / 买一送一等,按城市独立发券。
- m 币口径:按固定口径 10000 m 币 = 1 普通积分 换算,登录授权后归集麦当劳会员积分体系;
- 优惠券去向:游戏内兑换的券自动同步到麦当劳会员小程序「卡包」,经会员 / 券系统发放到账户,到店核销;
- 产品池刷新:方块产品由服务端周期性调用 MCP 刷新(在售 / 新品 / 活动池),前端不直连 MCP、不持有密钥;
- 游戏只负责「玩法 + 发奖」环节,会员账户与券资产归麦当劳自有体系。
| 文件 | 赛事要求 | 状态 |
|---|---|---|
README.md |
项目介绍、安装方法、使用示例、目标用户(文件名不可改动) | ✅ 本文件 |
CONTEST_DECLARATION.md |
参赛声明,文件名及内容均不可改动,须用官方原件 | ✅ 官方原件,未改一字(取自官方仓库根目录) |
MCP_INTEGRATION.md |
实际使用的 MCP Server / Tool、调用流程、业务价值(文件名不可改动) | ✅ |
mcdonalds_match.html |
源代码(项目主体,形式不限) | ✅ 单文件游戏原型 |
mcdonalds_nutrition.html |
源代码(MCP 营养数据参考表,附属) | ✅ |
mcp-config.example.json |
脱敏配置示例,仅环境变量占位符 | ✅ 不含任何真实密钥 |
workbuddy.md |
WorkBuddy 专项奖励所需(文件名不可改动),记录从需求到成品的完整开发过程 | ✅ 已导出 |
另附选配文件(非赛事强制要求,用于被发现 / SEO):index.html(SEO 落地页,建议用 GitHub Pages 托管)、SEO_GUIDE.md(手动配置与发布清单)。
- 本作品为独立开发的参赛 Demo,非麦当劳官方产品,未获麦当劳品牌背书;
- 游戏内 kcal 为麦当劳 MCP 营养库真实字段,与麦当劳中国菜单的法定营养标识一致,属透明信息披露;该数值仅用于游戏积分换算,不构成营养 / 饮食建议;
- 餐品信息、价格及供应状态以麦当劳官方渠道实时结果为准;
- 对「麦当劳」等名称的使用仅限描述性指代,不构成任何商标授权;
- 本项目未执行任何真实下单、领券或积分消费操作;所有会员、对战成绩、发券均为本地模拟。