游戏循环示意图(出自法语报告):无人机阶段、网格更新、风暴阶段和碰撞处理

编程 · 3/11

无人机救援游戏

我和搭档 Ilyane Haida 一起,在 12x12 的网格上编写了一个救援游戏。无人机要找到幸存者并把他们送到医院,同时避开风暴和建筑,而电量一直在消耗。

你可以直接在浏览器里玩。这个小组件实际运行的是下方的 Python 脚本(未经修改,实时获取),借助 Pyodide(编译为 WebAssembly 的 CPython),无需安装任何东西。移动指令输入在网格下方出现的输入框中,回答期间它始终可见。游戏界面为英文。

规则简述。

  • 网格为 12×12,列为 A 到 L,行为 0 到 11。
  • 网格上,B 是建筑,H 是医院,S 是幸存者,T 是风暴,D 是无人机。
  • 每回合最多移动 3 架无人机,每次一格(含对角线),去接幸存者并把他们送到医院。
  • 每次移动消耗 1 点电量(接幸存者另加 2 点);电量在医院充电。
  • 风暴在移动时碰到任何处于活动状态的无人机,都会使其失能 2 个回合。
  • 每送达一名幸存者到医院得 1 分。所有幸存者获救、所有无人机失能,或进行满 40 回合时,游戏结束。
  • 玩的时候,先输入要移动的无人机编号(输入 f 结束回合),再输入目的地,格式为“列 行”,例如 C 5。

程序结构

程序分为五个部分:配置加载(JSON)、随机放置实体、显示函数、移动与规则引擎,以及计分。项目报告对每一部分都有详细说明。

Documents

查看全部项目