由于我需要在不久的将来组织一个系统思维研讨会,所以我需要一个啤酒游戏来开始它。
啤酒游戏本身由四个角色组成:零售商、批发商、分销商和工厂。通过物流的时滞性质来理解系统视角,可以更好地理解系统边界。
由于这是一个几个小时的工作坊,我希望这款啤酒游戏能够实现以下功能。
这是一款多人游戏。
啤酒游戏本身会有很多参与者在供应链中扮演不同的角色,但我希望能够有多个供应链同时竞争,看看谁得分更高。这样,我们就可以同时了解到他们的系统策略。
游戏主机应该能够看到每个人的状态。
由于有多个队伍同时参赛,作为主持人我需要能够看到每个队伍目前的进度和得分。
游戏流程必须简单且易于控制节奏。
正如我一开始所说的,这是一个简短的研讨会,所以我需要让每个人快速上手,并且我需要能够控制每一轮的细节。
此外,每轮开始时玩家的用户界面中都会出现一个计时器,通过倒计时来推进游戏节奏。
能够自定义角色。
经典的啤酒游戏由四个角色组成,但角色越多,游戏时间就越长。所以我想调整一下游戏节奏,最好是三个角色。
经过一番查找,发现无论是开源项目还是已经上线的项目都不能完美满足这些需求。所以,我还是自己做一个吧。
啤酒游戏项目
https://github.com/wirelessr/beer_game
主机界面
玩家界面
整个项目是业务驱动开发和测试,覆盖率超过90%,请放心使用。
准备工作
在项目文件夹中创建一个机密文件。您应该看到我将其复制到 Dockerfile 中。
.streamlit/secrets.toml
[mongo] uri = "<your mongo connection>" [admin] key = "<your admin key>" [player] key = "<your player key>" </your></your></your>
由于该项目使用MongoDB,因此您必须在链接中填写您的帐户密码。另外,admin.key和player.key对应UI上的关键字段
毕竟我是将应用程序上传到公共云,所以我仍然需要一个基本的身份验证机制。如果您仅在本地运行并且觉得身份验证很麻烦,您可以删除相应的源代码。
安装与使用
该项目附加了 Dockerfile,因此可以直接使用 docker 运行。
docker build -t beer_game . docker run --rm --name beer -p 8501:8501 beer_game
对于开发,除了requiremnts.txt之外,还应该安装运行单元测试的requirements-test.txt。然后你可以通过Makefile运行所有的单元测试。
pip install -r requiremnts.txt pip install -r requirements-test.txt make test
游戏流程
整个游戏分为主持人模式和参与者模式,分别对应UI右上角的选项。
主持人创建游戏时首先分配一个game_id,所有参与者都要用这个id填写player_game。
同一供应链上的所有玩家都需要使用相同的player_id,因此这个id也称为供应链ID,具有相同player_id的参与者通过player_role进行角色划分。
当参与者加入时,您可以在主持人的屏幕上看到状态。
让我们看看从主持人的角度看完整的迭代会是什么样子。
所有需要操作的组件都在这张图中,每一轮都是按刷新按钮开始,按下周结束。
本轮向所有供应链发送多少订单,由下单触发。
值得一提的是,下单本身是幂等的,所以改变数字再按一次就可以了,会使用最后一个数字。每个参与者界面的下单也将是幂等的。
主人下单后,店铺玩家即可接单。
同样,供应链中的每个角色都以“刷新”开始,以“下订单”结束,商店玩家采取行动,然后零售商玩家采取行动,依此类推。
最后,回到主持人,再次按“刷新”即可查看本轮所有状态,按“下周”即可结束本轮。
游戏详情
刷新期间实际完成了几件事。
- 它根据四个星期前的订单从下游补充库存。
- 它接收来自上游的订单。
- 根据可以销售的库存来决定销售多少。
由于下订单是幂等的,因此刷新本身也是幂等的。
未来的工作
现在基本上满足了我所有的需求,但还有一些改进的地方。
例如,虽然主持人可以看到所有参与者的状态,但如果有一个图表来显示库存和成本信息随时间的变化会很有帮助,这对于比赛结束后回顾比赛很有用.
还有一个更基本的问题:当前的UI根本没有测试覆盖率,主要是因为当前的游戏流程相当简单。只需在 UI 上点击几下即可涵盖所有 UI 流程,因此我不太依赖自动测试。不过如果有UI修改的话,还是会有点繁琐,所以最好有一个UI单元测试。
总的来说,这些要求是优化,但缺少它们并不影响功能。
如果您有其他想法,也可以提交 Pull Request,欢迎贡献。
以上是回合制多人啤酒游戏的详细内容。更多信息请关注PHP中文网其他相关文章!

Arraysinpython,尤其是Vianumpy,ArecrucialInsCientificComputingfortheireftheireffertheireffertheirefferthe.1)Heasuedfornumerericalicerationalation,dataAnalysis和Machinelearning.2)Numpy'Simpy'Simpy'simplementIncressionSressirestrionsfasteroperoperoperationspasterationspasterationspasterationspasterationspasterationsthanpythonlists.3)inthanypythonlists.3)andAreseNableAblequick

你可以通过使用pyenv、venv和Anaconda来管理不同的Python版本。1)使用pyenv管理多个Python版本:安装pyenv,设置全局和本地版本。2)使用venv创建虚拟环境以隔离项目依赖。3)使用Anaconda管理数据科学项目中的Python版本。4)保留系统Python用于系统级任务。通过这些工具和策略,你可以有效地管理不同版本的Python,确保项目顺利运行。

numpyarrayshaveseveraladagesoverandastardandpythonarrays:1)基于基于duetoc的iMplation,2)2)他们的aremoremoremorymorymoremorymoremorymoremorymoremoremory,尤其是WithlargedAtasets和3)效率化,效率化,矢量化函数函数函数函数构成和稳定性构成和稳定性的操作,制造

数组的同质性对性能的影响是双重的:1)同质性允许编译器优化内存访问,提高性能;2)但限制了类型多样性,可能导致效率低下。总之,选择合适的数据结构至关重要。

到CraftCraftExecutablePythcripts,lollow TheSebestPractices:1)Addashebangline(#!/usr/usr/bin/envpython3)tomakethescriptexecutable.2)setpermissionswithchmodwithchmod xyour_script.3)

numpyArraysareAreBetterFornumericalialoperations andmulti-demensionaldata,而learthearrayModuleSutableforbasic,内存效率段

numpyArraySareAreBetterForHeAvyNumericalComputing,而lelethearRayModulesiutable-usemoblemory-connerage-inderabledsswithSimpleDatateTypes.1)NumpyArsofferVerverVerverVerverVersAtility andPerformanceForlargedForlargedAtatasetSetsAtsAndAtasEndCompleXoper.2)

ctypesallowscreatingingangandmanipulatingc-stylarraysinpython.1)usectypestoInterfacewithClibrariesForperfermance.2)createc-stylec-stylec-stylarraysfornumericalcomputations.3)passarraystocfunctions foreforfunctionsforeffortions.however.however,However,HoweverofiousofmemoryManageManiverage,Pressiveo,Pressivero


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器