全网独家认证,磁芯大战,程序员的世界大战,即将打响!

今天,磁芯大战即将拉开序幕,这是一场程序员的战斗,用程序员的方式来结束比赛,获得胜利;这是一个跨越不同语言,只看最终结果的 0 和 1 的游戏。

如果你是个程序员,那么就来竞技场和各路大神过过算法招;如果你是小白,那么通过磁芯大战,你将快速点亮你的技能。


什么是磁芯大战?

磁芯大战由菠萝同学发起并开发完成,我参与监制及开发以外的工作。

这是一款「新手」->「骨灰」程序员皆宜的游戏,目的是通过游戏帮助python零基础同学从零开始学习python,并能够自己制作客户端,控制战斗逻辑来取得胜利,在游戏中体验编程的乐趣。

而会python的也不会因为简单而感到无聊,因为游戏是公平的,你不可能处于绝对优势,总有人能够编写出一套强大逻辑的客户端来战胜你。

在玩游戏的同时提高自己的python实战能力,其乐无穷2_02.png


来看下游戏的实际战斗画面

这是一段视频,记录了两个玩家加入游戏、游戏开始、对战过程,及最终取得胜利的示意。

640?wx_fmt=gif


游戏流程

本游戏适用于2-10人的对战,运行客户端后:

  1. 创建自己的玩家

  2. 可以选择创建游戏房间,或直接加入现有的游戏房间。

  3. 当玩家进入游戏房间后,会随机分配一个单元作为基地。

  4. 等待其它玩家之后,就可以开始游戏了。

  5. 游戏开始后,玩家可以自由攻击。

  6. 攻击到并占领对方基地后,则宣告游戏胜利;

  7. 若玩家基地被敌人占领了,则宣告游戏失败。

将游戏过程绘制成流程图,如下:

640?wx_fmt=png

在攻击时有两点需要注意:

  • 只能攻击己方单位的上下左右邻近一个单位,即从自己基地开始,逐步扩张。

  • 单元被占领时间越长,攻击它需要时间越短。

针对第二点,简单来说就是一个单元10秒内未被攻击过,可能1秒便可攻占成功;一个单元3秒内被攻击过,占领成功则需要5秒。(此处仅为说明逻辑,以实际为准)


游戏规则

玩家:这里指的是PlayerId,在游戏中创建玩家,需要指定玩家昵称、玩家颜色。

颜色是用于在游戏中标识一个玩家。我们提供了10种供大家使用:

0: 香蕉

1: 樱桃

2: 葡萄

3: 菜瓜

4: 柠檬

5: 桑葚

6: 生梨

7: 菠萝

8: 萝卜

9: 西瓜

当玩家加入某一房间失败时,其原因只可能是与该房间中某玩家的颜色及昵称冲突了。可以重新创建玩家加入。


房间:这里指的是GameId,可以加入某个房间进行对战,也可以观看其它玩家之间的比赛。我们可以通过公众号的入口查看比赛进程,目前还未开放。

640?wx_fmt=jpeg


地图:在创建GameId时,可以指定Map地图类型。我们会提供多种地图供大家使用,但是目前先开放一张地图:

 
 

map_name = "RectPhone"

实际的地图样子如下图所示:

640?wx_fmt=png

<RectPhone>地图▲


单元:这里指的是地图中的每个小格子,我们称之Cells、单元。Cells是一个二维数组。


坐标:我们可以用(x,y)来表示每个格子,暂且称之为坐标。我们可以用下图这个方式去理解它。

640?wx_fmt=jpeg


玩家基地:在玩家加入某一房间后,会随机分配一个单元做为该玩家的基地。在地图中会深灰色背景标识。


单元状态:

  • 单元在未被占领时,正常灰色背景;

  • 单元被某个玩家占领成功后,则显示为该玩家的标识;

  • 单元处于被攻击中的状态时,显示为闪烁的状态。

我们可以通过这张GIF图再回顾下游戏中这些概念:

640?wx_fmt=gif


你说了算

为什么说这是程序员的战斗呢?因为全程客户端所有逻辑都由你来编写。服务端只提供相应的API接口供大家调用。

640?wx_fmt=jpeg

服务端目前已经升级到2.0,而游戏的各种参数,我并不会全部公布,毕竟大家都是程序员,完全可以靠不断测试得出你觉得正确的结果。

我可以透露2点:

  1. 不要试图使用疯狂请求「攻击API」来达到侵略的目的,磁芯大战2.0做了线程优化,每位玩家同时只能操作2个线程。

  2. 游戏是有能量概念的,能量是有最大值和CD的,所以消耗完你的能量后,你将等待至下一次充能后方可攻击。

想象一下决定胜负的条件有哪些:

  • 算法:你就是磁芯大战的指挥官,你需要合理的调度攻击线程来帮助你战胜对方。

  • CPU:好的CPU可以帮助你快速的处理你的线程逻辑。

  • 网络:这个才是最关键的,不要试图对服务端进行攻击,我会检测来访请求,如果是恶意请求直接关小黑屋,当然你可以申诉,最好带着你的py来。


福利

磁芯大战将以积分制形式展开,积分可兑换实物奖励(未上线),并且会举办月赛、季度赛、年赛等活动。

星球内有大量大航海高级算法教程,组队PK赛,零基础直播大航海等一系列活动。目前星球正式对外运营1个月,加入成员450+,【从零单排】【实战项目】【Python面试题】【大航海】系列每天都有精华产出。快来加入我们,扫描下方二维码,和小伙伴一起打卡学习python,讨论问题,交流py。

现在将本文分享到朋友圈,并获得18个点赞,截图给我(公众号回复:关注作者),即可获得星球返利红包18.8,加入星球后,来找我。

640?wx_fmt=jpeg


推荐阅读:

历时3个月,最专业的原创Python知识星球横空出世!四重惊喜等着你!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值