首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

世界杯开始在即,快用Python写一个让梅西都害怕的AI后卫!

四年一届的世界杯又要开始啦!本届世界杯在俄罗斯举行,对国内的时差不大,终于可以不用熬夜啃着鸭脖提神看比赛了。

今年的世界杯,实力强劲的阿根廷肯定仍是本届夺冠的热门球队之一,不知道最近屡次比赛都与冠军失之交臂的阿根廷队能否在此次比赛中有所突破。

(阿根廷队与美洲杯冠军失之交臂)

说起阿根廷队,不得不提他们那拥有极强中前场进攻实力的球员梅西,不过如果能给每一位后卫都运行上一段Python写的足球轨迹拦截脚本,我想即便是强如梅西也会头疼不已的吧。

守门员

世界杯这么精彩的赛事,极客战记当然不会错过,现在任何通关到沙漠地图的玩家,都能够在沙漠地图的右上方进入[守门员]关卡,来一场代码的足球大战。

在这一场比赛中,你的任务就是防守,命令己方的两名后卫,防住对面三名前锋的强烈进攻。

通关要求:

过关思路:

在本关我们只需要防守即可,我们可以命令我们的后卫排成一列堵在球门前,一人分管一半的球门,根据球的y坐标,即时地堵在球的前面。

代码展示:

代码解析:

我们先用findFriends()函数找到我们友方单位数组,并赋入friends变量中。

接下来,我们需要找到“球”这一单位。

很奇怪吧,球明明就在场上可见的滚来滚去,我们为什么还要找它呢?

这里的找,是要找出球这个单位并赋入一个变量内,以便于让我们的球员来实时的读取该变量的坐标,以拦截足球。

硬钢眼镜给予的技能findByType()函数,是一个很方便的函数,能够直接从可见的单位里筛选出你要的单位,并计入数组。

此时我们利用它来筛选出类型为”ball”的单位,然后得到了一个名叫ball的数组,由于场上只有一个球,所以该数组的长度仅为1,我们只需要用ball[0]来调用数组内的第一个单位,就能调用到我们要的球了。

接下来的这段代码,就是让两位后卫,一人分管一半球门的策略了。

在这里我们让后卫一(friends[0])在足球飞过半场(x30)时,及时移动到与球相同的y高度,及时的拦截足球。

后面的else部分,则是让后卫一在球未到相应区域时,先守卫在自己那一半球门的中间位置(y=40),以便于快速反应。

后卫二的代码也是同理,不过她管理的球门高度为(y30的,后卫二管理y那中间不是会有30-40的一段重复?

这是因为后卫球员的行进速度较慢,为了避免球员在球门一端,球从中间飞入,该区域的球员来不及跑回去接球的情况出现,就安排了这段重叠区域,可以让两位球员共同防守。

如此一来,后卫的铜墙铁壁代码便已形成,就算对面的前锋食人魔各个都有梅西、内马尔的实力,想要超过Python的运行速度,突破防守,也是极为困难的了。

足球大战

也许只是防守还无法让你过瘾,那也许你还可以试试前往冰川,找到地图左下角的关卡[冰球],利用更高级的算法和实时的插旗操作,向食人魔发起猛烈的进攻吧!

学编程,用玩的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180613G1VXTZ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券