分享下自己的EmpireofCode进攻策略 https://empireofcode.com/ https://empireofcode.com/game/#

# 没什么用,该游戏的模块调用不友好,取数据难
import queue
from battle import commander # import mathunit_client = commander.Client() doing_last_order = True towerid = [] towerrg = [] towerfr = [] towerps = [] tower_id = 0 towers = [] safe_posi=[40,40] center1 = [[40,0],[20,0]] center2 = [[20,7],[20,17]] center3 = [[20,7],[20,18]] # START Possible orders: def get_time(*args, **kawargs):my_time = unit_client.ask_cur_time()unit_client.when_time(my_time, get_to)def get_to(*args, **kawargs):global safe_posiunit_posi = unit_client.ask_units()safe_posi = [int(unit_posi[0]['coordinates'][0]/2 unit_posi[1]['coordinates'][0]/2), int(unit_posi[0]['coordinates'][1]/2 unit_posi[1]['coordinates'][1]/2)]unit_client.do_move(safe_posi)def gather(*args, **kawargs):unit_client.do_message_to_craft(get_to)def attack_center(*args, **kawargs):center = unit_client.ask_center()unit_client.do_attack(center['id'])def attack_nearest(data=None, *args, **kawargs):enemy = unit_client.ask_nearest_enemy()unit_client.do_attack(enemy['id'])def go_to_center1(*args, **kwargs):global safe_posiunit_client.do_moves(center1)safe_posi = center1[1]return safe_posidef go_to_center2(*args, **kwargs):global safe_posiunit_client.do_moves(center2)safe_posi = center2[1]return safe_posidef go_to_center3(*args, **kwargs):global safe_posiunit_client.do_moves(center3)safe_posi = center3[1]return safe_posidef go_to_center_safe(*args, **kwargs):unit_client.do_move(safe_posi)def info_get(*args, **kwargs):global safe_posiglobal tower_idglobal toweridglobal towerrgglobal towerfrglobal towersglobal towerpstowers = unit_client.ask_towers()for i in range(len(towers)):towerid.append(towers[i]["id"])towerfr.append(towers[i]["firing_range"])towerps.append(towers[i]["coordinates"])x, y = towers[i]["coordinates"]lenth = pow((x-safe_posi[0])**2 (y-safe_posi[1])**2,0.5)towerrg.append(int(lenth))def attack_posi(*args, **kwargs):global toweridglobal towersglobal safe_posiglobal tower_idglobal towerrgglobal towerfr# global towers# towers = unit_client.ask_towers()first = towerrg.index(min(towerrg))attac_posi = towerrg[first]-towerfr[first]-1percent = attac_posi/towerrg[first]safe_posi = (towerps[first][0] - safe_posi[0])*percent, (towerps[first][1] - safe_posi[1])*percentunit_client.do_move(safe_posi)tower_id = towerid[first]unit_client.do_attack(tower_id)my_info = unit_client.ask_my_info()safe_posi = my_info["coordinates"]towerid.pop(first)towerrg.pop(first)towerfr.pop(first)towerps.pop(first) ## END## START Orders, captain! orders = queue.Queue() # orders.put_nowait(gather) orders.put_nowait(go_to_center1) orders.put_nowait(go_to_center2) # orders.put_nowait(attack_nearest) orders.put_nowait(get_to) orders.put_nowait(info_get) # orders.put_nowait(get_time) # orders.put_nowait(attack_nearest) # orders.put_nowait(attack_nearest) # orders.put_nowait(attack_posi) # orders.put_nowait(go_to_center3) # orders.put_nowait(attack_posi) # orders.put_nowait(attack_posi) # orders.put_nowait(attack_posi) # orders.put_nowait(attack_posi) orders.put_nowait(attack_center) # orders.put_nowait(attack_nearest) # orders.put_nowait(attack_nearest) # orders.put_nowait(attack_nearest) # orders.put_nowait(attack_nearest)#Loop engine: def mark_as_idle(*args, **kwargs):global doing_last_orderdoing_last_order = False# print('ORDERS DOING: Is now', doing_last_order)unit_client.when_idle(global_scheduler)def mark_as_doing(*args, **kwargs):global doing_last_orderdoing_last_order = True# print('ORDERS DOING: Is now', doing_last_order)def global_scheduler(*args, **kwargs):global doing_last_order# print('LOOP: scheduler woke')# print('ORDERS COUNT:', orders.qsize())# print('DOING ORDER ?:', doing_last_order) # needed only if coding asyncwhile not doing_last_order and not orders.empty():mark_as_doing()next_order = orders.get()# print('ORDERS: next is "%s"' % next_order.__name__)next_order()# print('ORDERS: doing "%s"' % next_order.__name__)unit_client.when_idle(mark_as_idle)# print('LOOP: scheduler set')print ('ORDERS START COUNT:', orders.qsize()) mark_as_idle()

 


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python多篇新闻自动采集

昨天用python写了一个天气预报采集,今天趁着兴头写个新闻采集的。 目标是,将腾讯新闻主页上所有新闻爬取下来,获得每一篇新闻的名称、时间、来源以及正文。 接下来分解目标,一步一步地做。 步骤1:将主页上所有链接爬取…

使用ADF BC管理保存点

在使用ADF BC时,我们通常依赖于在数据库中执行DML操作的框架。 在DBTransaction提交周期内,该框架正确地在数据库中进行了所有必要的更新。 很酷的事情是,在这种情况下,数据库事务将被自动管理。 因此,如果出现问题&am…

sql优化(转)

(转)SQL 优化原则一、问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加&a…

2017-12-04HTML table布局

<!DOCTYPE html> <html> <head lang"en"> <meta charset"UTF-8"> <title>table布局</title> </head> <body marginwidth"0px" marginheight"0px"> <table width"…

Java EE 8发生了什么? (第2部分)

Java EE 8的工作仍处于初期阶段&#xff0c;预计在来年会紧跟潮流&#xff0c;我们将看到专家组的形成完成&#xff0c;围绕用例/功能的更多讨论&#xff0c;许多JIRA&#xff0c;以及各种规范的草案版本&#xff08;本会很有趣&#xff01;&#xff09;。 在第1部分中 &#…

foreach语句的的解析

我这个虾米&#xff0c;今天才知道foreach语句是这样解析的&#xff0c;惭愧啊&#xff01;幸好我最新在原生态的学习这门编程语言。 //程序中我们这样写foreachforeach (Person item in Persons){Console.WriteLine(item);} //其实如果要使用foreach,需要实现IEnumerator接口&…

滚动条位置判断

//获取滚动条距离顶部位置function getScrollTop() { var scrollTop 0; if (document.documentElement && document.documentElement.scrollTop) { scrollTop document.documentElement.scrollTop; } else if (document.body) { scrollTop d…

如何处理Java注释

Java 8的很酷的新功能之一就是对lambda表达式的支持。 Lambda表达式在很大程度上依赖于FunctionalInterface 注释 。 在本文中&#xff0c;我们将介绍注释以及如何处理它们&#xff0c;以便您可以实现自己的出色功能。 注解 Java 5中添加了注释 。Java语言附带了一些预定义的…

(转)MFC技巧学习五

51. 如何获得其他程序的图标,并显示在View中 [问题提出] 有的时候,如:类资源管理器会遇到获得程序图标并显示的操作,如何实现呢? [解决方法] SDK函数SHGetFileInfo来获得有关文件的很多信息:如大小图标,属性,类型等.  [程序实现] 建立名为My的SDI工程.在OnPaint()函数中…

使用navicat premium将数据库从Oracle迁移到SQL Server,或从Oracle迁移到MySQL

有时候我们有迁移数据库的需求&#xff0c;例如从Oracle迁移到SQL Server&#xff0c;或者从MySQL迁移到Oracle。 很多江湖好汉一时不知如何手工操作&#xff0c;所幸的是Navicat提供了迁移的自动化操作界面。 当然&#xff0c;Navicat的数据库迁移无法做到完美&#xff0c;一些…

书评:Mockito Essentials

Sujoy Acharya的Mockito Essentials副标题&#xff08; Packt Publishing &#xff0c;2014年10月&#xff09;是&#xff1a;“实用指南&#xff0c;可帮助您使用Mockito进行单元测试并开始运行。” Mockito Essentials中的前言和七章涵盖大约190个实质性页面。 前言 在序言中…

Oracle ORA-07445 [evaopn3()+384] 错误 分析

1.OS 和 DB 版本Oracle Version&#xff1a; 11.2.0.2Operation System&#xff1a;HP-UXItanium 11.312.Alert log中信息Tue Oct 16 22:27:31 2012Exception [type: SIGSEGV,Address not mapped to object] [ADDR:0xC00000000] [PC:0x400000000631B880,evaopn3()384] [flags: …

http网站转换成https网站

https&#xff0c;https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题 一&#xff1a;什么是https SSL&#xff08;Security Socket Layer&#xff09;全称是加密套接字协议层&#xff0c;它位于HTTP协议层和TCP协议层之间&#x…

EAGER的获取是代码的味道

介绍 休眠获取策略确实可以使几乎没有爬网的应用程序和响应速度很快的应用程序有所不同。 在这篇文章中&#xff0c;我将解释为什么您应该选择基于查询的获取而不是全局获取计划。 取得101 Hibernate定义了四种关联检索策略 &#xff1a; 提取策略 描述 加入 原始SELECT语…

基于S2SH的电子商务网站系统性能优化

对于经常逛网页的人来说最受不了的事情就是访问的网页加载太慢&#xff0c;除去网络的原因网站的系统性能对加载的快慢非常重要&#xff0c; 网上有个统计&#xff1a; 每慢500ms Google访问量降低20% 每慢400ms Yahoo 访问量降低5-9% 每慢100ms Amazon销售额降低1% 对于商务网…

玩Java并发

最近&#xff0c;我需要将一些文件&#xff08;每个文件都有JSON格式的对象列表&#xff08;数组&#xff09;&#xff09;转换为每个文件都具有相同数据&#xff08;对象&#xff09;的分隔行的文件。 这是一次性的任务&#xff0c;很简单。 我使用Java nio的某些功能进行了读…

ExtJs的Reader

ExtJs的Reader Reader : 主要用于将proxy数据代理读取的数据按照不同的规则进行解析,讲解析好的数据保存到Modle中 结构图 Ext.data.reader.Reader 读取器的根类 Ext.data.reader.Json JSON格式的读取器 Ext.data.reader.Array 扩展JSON的Array读取器 Ext.data.reader.Xml XML格…

sound

sound类在 flash3.0中算是很常见的功能&#xff0c;也是很常用的&#xff0c;下面 简单的运用了 sound类&#xff0c;加载了一首歌&#xff0c;控制 播放 暂停 停止&#xff0c;和控制音量大小&#xff1b; package {import flash.display.MovieClip;import fl.controls.*;imp…

Java Lambdas和低延迟

总览 有关在Java和低延迟中使用Lambda的主要问题是&#xff1a; 它们会产生垃圾吗&#xff0c;您能做些什么吗&#xff1f; 背景 我正在开发一个支持不同有线协议的库。 这样的想法是&#xff0c;您可以描述要写入/读取的数据&#xff0c;并且有线协议确定它是否使用带有JSon或…

HTTP协议/RTSP协议/RTMP协议的区别

RTSP、 RTMP、HTTP的共同点、区别 共同点&#xff1a; 1&#xff1a;RTSP RTMP HTTP都是在应用应用层。 2&#xff1a; 理论上RTSP RTMP HTTP都可以做直播和点播&#xff0c;但一般做直播用RTSP RTMP&#xff0c;做点播用HTTP。做视频会议的时候原来用SIP协议&#xff0c;现…