空间收集器编程游戏
项目描述
空间收集器
空间收集器游戏
规则
- 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时行星在基地站,否则为0S {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 查看哈希值)