跳转到主要内容

空间收集器编程游戏

项目描述

空间收集器

空间收集器游戏

规则

  • 20,000 x 20,000 平方公里
  • 随机数量的行星(2到8个)和行星位置,中心对称,以便每个团队“看到”相同的地图
  • 使用您的收集器收集您的行星
    • 慢速
  • 用您的五名攻击者攻击敌人
    • 快速
    • 高能量攻击 < 5,000 公里
      • 选择角度
      • 攻击者之间等待1秒才能开火
  • 用您的探险家探索
    • 普通速度
    • 看到其行星和其宇宙飞船
    • 看到其周围 < 5,000 公里的敌方宇宙飞船
  • 当一个单位被高能量攻击击中时
    • 必须返回其基地进行维修
      • 攻击者不能攻击
      • 探险家不能使用其雷达来看到敌方宇宙飞船
      • 收集者不能收集行星,他们丢失了收集到的行星(留在原地)
  • 当一支队伍收集了其所有行星时,游戏停止
  • 当游戏运行了5分钟时,游戏停止

命令

通用语法

COMMAND {ship_id} {参数}

  • {ship_id}:宇宙飞船标识符
    • 1, 2, 3, 4, 5:攻击者
    • 6, 7:探险家
    • 8, 9:收集者
  • {parameters}:命令参数
    • {angle}:整数,度数,介于0到359之间,逆时针,0指向右
    • {speed}:公里每秒的整数

每个命令都返回一个响应,由以下组成

  • {planet_id}介于0到65535之间
  • {ship_id}介于1到9之间
  • {abscissa}{ordinate}介于0到19,999之间((0, 0)是左下角)

移动

MOVE {ship_id} {angle} {speed}

更改太空船的速度和角度。

最大速度

  • 收集者:1,000公里/秒
  • 探险家:2,000公里/秒
  • 攻击者:3,000公里/秒

响应是OK

如果收集者距离其行星小于200公里,则收集该行星(如果尚未携带行星且未损坏)。

如果收集者携带行星且距离基地小于200公里,则收集行星。玩家积分增加1,000分。

开火

FIRE {ship_id} {angle}

发射高能攻击,角度为{angle}。攻击长度为5,000公里。

距离高能攻击小于200公里的任何敌对太空船现在已损坏。玩家积分增加一些分数。

  • 攻击者:15分
  • 探险家:20分
  • 收集者:30分

此命令仅适用于攻击者。

响应是OK(即使未遵守射击频率——每艘太空船每秒最多一次射击——此命令将被忽略)。

雷达

RADAR {ship_id}

启动探险家的雷达。

响应是一行字符串。由多个元素组成,元素之间用逗号分隔。元素包括

  • P {planet_id} {abscissa} {ordinate} {ship_id} {saved}:一个位于给定位置的行星,ship_id是收集行星的收集者ID,如果没有收集,则为-1,saved为1时行星在基地站,否则为0
  • S {team} {ship_id} {abscissa} {ordinate} {broken}:一艘太空船,团队0是您的,团队1到3是对手,broken为0或1,1表示该船被高能攻击击中(即使探险家损坏,您的太空船也总是存在的)
  • B {abscissa} {ordinate}:您的基地站的位置(雷达信息中总是存在)

如果探险家损坏,则无法看到敌对太空船。如果不损坏,则可以查看距离探险家小于5,000公里的敌对太空船。

命令

安装

python3.11 -m venv venv
. venv/bin/activate
# to play
pip install --upgrade space_collector
# to get development dependencies and improve the game
pip install --upgrade space_collector[dev]

启动游戏

# In an activated virtual environment

# choose a free port
PORT=12345
# start the server
python -m space_collector.game.server -p $PORT --timeout 10 &
# start the viewer
python -m space_collector.viewer -p $PORT &
# start the viewer on small screens
python -m space_collector.viewer -p $PORT --small-window&
# start players
# using serial port
SERIAL=COM8          # on Windows
SERIAL=/dev/ttyUSB0  # on Linux
python -m space_collector.serial2tcp -p $PORT --serial $SERIAL --team-name "CHANGE ME"

杀死所有客户端和服务器

# For Linux and Mac, in an activated virtual environment
python -m space_collector.killall

安装git钩子

pre-commit install

代码风格检查

flake8

启动测试

pytest

发布

python -m build
python3 -m twine upload dist/*

自动评估

以下是对项目进行评估的标准

标准 分数
使用CMSIS RTOS v2 1
每艘船一个线程 1
通过串行通信进行健壮的通信 1
线程间通信 1
回收行星 1
移动,管理最大速度 1
使用高能射程的攻击 1
限制射击频率 1
使用雷达 2
修复太空船 1
文档(依赖项安装、启动) 1
编写测试 4
质量指标 1
使用GitHub action自动化 2
如果质量下降或测试失败,拒绝拉取请求/推送 1
竞赛排名 2
本地预提交和持续集成 1
报告:逐步方法 3
报告:3个最大困难,以及实施的解决方案 6
报告:所学知识,经验反馈 1

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。

源分布

space_collector-1.tar.gz (19.1 MB 查看哈希值)

上传时间

构建分布

space_collector-1.0.0-py3-none-any.whl (18.9 MB 查看哈希值)

上传时间 Python 3

支持