跳转到主要内容

Chronobio编程游戏

项目描述

Chronobio

游戏目标

  • 统治世界!成为最佳有机汤生产商,通过种植蔬菜、制造汤和销售来做到这一点。
  • 种植多种蔬菜:土豆、芹菜...
  • 雇佣工人。
  • 与银行谈判。
  • 承受市场经济的考验。
  • 注意气候意外。
  • 不要破产。

screenshot

世界纪录由Aigrisculteurs团队创下,得分为8,426,796。

record

通信

交换

在每轮游戏开始时(一轮游戏相当于一天),将发送一个包含游戏信息和所有运营农场的JSON字典。

每个农场每天必须发送至少一个订单(其语法将在后面详细说明)。

游戏开始

一个农场在没有种植的情况下开始,并拥有10万欧元的初始资金。游戏持续5年(模拟时间)。

每天

农场将获得有机农场的补贴:每块种植地5欧元,加上30欧元给农场。

注意,农业生产可以机械化,但每台拖拉机(包括其他玩家的)都会排放温室气体。从游戏开始以来排放的气体量越多,触发气候事件的概率就越高。我们面临以下风险:

  • 热浪:田地需要比原计划多浇灌两倍的水,
  • 冰雹或霜冻:田地作物被摧毁,
  • 洪水:汤的生产停止20天。如果生产已经停止,则这20天加到当前停止时间上,
  • 火灾:田地作物被摧毁,汤的生产停止40天。如果生产已经停止,则这40天加到当前停止时间上。

每次发生气候事件时,每个田地或工厂有50%的概率受到影响。

移动

当员工步行时,他可以移动到相邻的位置。如果他想走得更远,他将需要额外一天时间穿越每个经过的位置。

当员工驾驶拖拉机时,他可以从一个位置移动到相邻的位置,下一个位置,甚至是再下一个位置。如果他想走得更远,他将需要额外一天时间穿越每三公里。

要上拖拉机,员工必须走到拖拉机那里。如果他已经在同一位置,他可以直接上车。

农场地图如下:

  • 提供拖拉机并雇佣员工的地方的农场
  • 田地1
  • 田地2
  • 田地3
  • 田地4
  • 田地5
  • 汤工厂

可执行操作

每个操作需一行。每位员工每天最多只能执行一个动作。

花括号内的字段需要替换为其值。

  • {GÉRANT}:经理编号(0)
  • {OUVRIER}:工人编号(大于或等于1)
  • {LÉGUME}:以下蔬菜之一PATATEPOIREAUTOMATEOIGNONCOURGETTE
  • {CHAMP}:田地编号(1至5)
  • {SOMME}:欧元整数金额
  • {TRACTEUR}:拖拉机编号(大于或等于1)

购买田地

{GÉRANT} ACHETER_CHAMP

购买了一块新田地,10,000欧元从余额中扣除。第一块购买的田地将是最初的田地1。如果田地1已经被购买,则购买尝试将转向下一个可用的田地,按田地编号顺序。

播种

{OUVRIER} SEMER {LÉGUME} {CHAMP}

在已购买的田地上播种将替换田地上现有的作物。

灌溉

{OUVRIER} ARROSER {CHAMP}

通常需要至少灌溉10次田地,才能使其可收获。但请注意气候意外情况。

出售蔬菜

{GÉRANT} VENDRE {CHAMP}

只有在当天开始时田地不再需要灌溉,才能出售田地上的蔬菜。

蔬菜在收获后出售,收获需要两天时间:经理在接下来的两天内无法执行任何操作。

蔬菜按市场价格出售,即收获以3,000欧元减去50倍当天出售相同种类蔬菜的其他田地数量的金额出售,计算所有农场。

在收获的两天内,田地可能会受到气候意外情况的影响。在这种情况下,将忽略/取消销售。

购买拖拉机

{GÉRANT} ACHETER_TRACTEUR

拖拉机价格为30,000欧元。拖拉机每月排放100 kg eqCO₂。

在一局游戏中,不能购买超过50辆拖拉机。

存储蔬菜

{OUVRIER} STOCKER {CHAMP} {TRACTEUR}

田地中的蔬菜只有在当天早上不再需要灌溉时才能储存。

可收获的田地蔬菜储存在汤料加工厂。

运输后,工厂的库存增加了2000个田地蔬菜种类。

制造汤料并出售

{工人} 烹饪

如果原材料充足,工人每天可以制造100份汤。每制作一份汤,工人会从工厂的库存中选取。他会尽量在汤中加入尽可能多的不同蔬菜。

汤料出售

  • 1欧元一份的单一蔬菜汤
  • 2欧元一份的双蔬菜汤
  • 4欧元一份的三蔬菜汤
  • 6欧元一份的四蔬菜汤
  • 8欧元一份的五蔬菜汤

汤料自动运送到负责所有事务(运输、向最终客户销售)的商店。

雇佣工人

{经理} 雇佣

经理以无固定期限劳动合同(CDI)形式雇佣一名额外工人。员工第一个月的工资是1,000欧元(每月都是30天!)。每月工资增加1%(增加数向上取整)。员工在每月的第一天领取上个月的工作工资(即使员工没有上满一个月,也会支付完整工资)。在一个部分中,不能雇佣超过300人。

不能在一个部分中雇佣超过300人。

解雇工人

{经理} 解雇 {工人}

经理解雇一名工人(这是一项就业保障计划……)。经理必须支付相当于工人下个月工资的解雇赔偿金。这会超过正常工资按比例计算的工资。

借款

{经理} 借款 {金额}

经理从银行借款一定金额。借款期限为2年。要偿还的金额是借款金额乘以1.10,即每年大约5%。这笔金额每月平均偿还。

借款金额必须是正数,且小于10亿。

在一个部分中最多可以进行10次借款。

胜利或失败条件

胜利在5年模拟结束时决定。

  • 无效操作会导致玩家锁定:玩家将无法进行任何操作,直到游戏结束。
  • 无资金购买将导致玩家锁定。
  • 无法支付开销的玩家将被锁定。
  • 最终拥有最多可用资金(扣除借款总成本)的玩家获胜。

如何游戏

  • 创建一个私有存储库,并给我提供访问权限(至少是读取权限,https://github.com/vpoulailleau)
  • 创建一个客户端以连接到游戏服务器
    • 根据提供的示例进行启发
    • 您的项目必须能够通过命令行启动(使用 argparse
      • -a : 服务器的IP地址
      • -p : 服务器的端口号
      • 首先编写一个尽可能简单的代码,连接到服务器(例如,购买一个田地,然后不再进行任何操作),然后按照以下步骤进行,最后改进您的代码。
    • 您的项目必须包含至少一个最小化文档,以使用户能够安装和使用您的软件
  • 设置持续集成
    • 自动测试(《pytest》)和测试覆盖率(应接近100%)(使用《GitHub actions》)
    • 质量度量(使用《flake8》和插件,或《ruff》)以制作高质量软件
    • 类型注解检查(使用《mypy》)
    • 使用覆盖率、质量度量类型注解,确保拒绝降低软件质量级别的拉取请求
  • 可能的话,设置预提交钩子(https://pre-commit.git-scm.cn/
  • 编写您的策略
    • 首先从简单的策略开始:在一个农场种植蔬菜并出售
    • 在整个项目中,确保保持高水平的质量(测试覆盖率接近100%,无错误的安全报告,类型注释已验证)
    • 改进您的策略:使用所有字段,优化蔬菜生产,使用拖拉机,制作汤

自我评估

以下是一个评估项目的标准

标准 分数
可以通过命令行启动的项目 0,5
文档(依赖项安装,启动) 1
购买田地 0,5
购买拖拉机 0,5
员工 0,5
播种 1
灌溉 1
出售蔬菜 1
存储 1,5
烹饪 1
许可 1
借款 0,5
编写测试(pytest 2
测试覆盖率测量 1
测试覆盖率百分比 2
质量度量(flake8和插件) 1
GitHub操作 1
如果覆盖率或质量下降,拒绝拉取请求/推送 1
竞赛排名 2
加分项(预提交,类型注释,类型注释验证) 3

命令

安装

python3.11 -m venv venv
. venv/bin/activate
# pour jouer
pip install --upgrade chronobio
# pour développer
pip install --upgrade chronobio[dev]

启动游戏

# Dans un environnement virtuel activé

# choisir un port non utilisé
PORT=12345
# lancer le serveur
python -m chronobio.game.server -p $PORT &
# lancer le viewer
python -m chronobio.viewer -p $PORT &
# lancer un joueur
python -m mon_code -p $PORT

终止所有启动的程序

# Pour Linux et Mac, dans un environnement virtuel activé
python -m chronobio.killall

发布

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

项目详情


下载文件

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

源分布

chronobio-0.0.1.tar.gz (2.7 MB 查看哈希

上传时间

构建分布

chronobio-0.0.1-py3-none-any.whl (1.2 MB 查看哈希

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面