最终结果在这里!
介绍
该游戏的灵感很大程度上来自Manu的《城镇游戏》。它发生在剑与魔法的世界中。统治整个大陆的国王刚刚去世,许多城市国家的君主现在正在争夺领土。您是其中一位领主,您的目标是征服和统治每个小镇。
原理
人们分为8类:
Warlocks : Fighter (magic)
Crusaders : Fighter (melee)
Amazons : Fighter (range)
Corsairs : Utility (steal, guard, transport)
Bishops : Utility (convert, exorcize)
Necromancers : Utility (resurrect)
Architects : Utility (build)
Peons : Resource (income, recruits)
游戏开始时,您将统治一个城镇。每个城镇有100人。您必须将它们分成这8个类别。
然后,基于回合的实际游戏开始。转弯包括12个阶段,其中7 个阶段是交互式的(向机器人询问命令)。下一个阶段开始于每个城镇都已执行上一个阶段时(阶段1:城镇1,城镇2,城镇3 ...;阶段2:城镇1,城镇2,城镇3 ...):
1. Raise Taxes - AUTOMATED
2. Steal Money - INTERACTIVE
3. Recruit Troops - INTERACTIVE
4. Pay Wages - AUTOMATED
5. Try Revolt - AUTOMATED
6. Convert Soldiers - INTERACTIVE
7. Attack Town - INTERACTIVE
8. Raise Corpses - INTERACTIVE
9. Move Army or Tribute - INTERACTIVE
10. Defend against Threats - AUTOMATED
11. Construct Buildings - INTERACTIVE
12. Make Children - AUTOMATED
控制器通过命令参数为您提供输入,您的程序必须通过stdout输出。
句法
输出(准备)
在游戏开始之前,控制器将调用您的提交而没有参数。这意味着您必须将100个人分配到8个类别中。
您需要输出:
Warlocks Crusaders Amazons Corsairs Bishops Necromancers Architects Peons
例如:15 10 12 10 7 5 1 40
。
每个城镇还以500枚金币和5具尸体开始。
输入
每次调用程序时,它将接收以下格式的参数:Round;Phase;YourPlayerId;YourTownId;PlayerId_TownId_Gold_Corpses_Warlocks_Crusaders_Amazons_Corsairs_Bishops_Necromances_Architects_Peons_Temples_Barracks_Estates_Palaces;PlayerId_TownId_Gold_Corpses_Warlocks_Crusaders_Amazons_Corsairs_Bishops_Necromances_Architects_Peons_Temples_Barracks_Estates_Palaces;...
输入示例
1;2;1;1;0_0_600_5_15_10_12_10_7_5_1_40_0_0_0_0;1_1_700_5_15_10_12_10_7_5_1_40_0_1_0_2;...
在这里,您看到它是第一轮第二阶段,您是城镇1的玩家1。您有700金,5具尸体,15个术士,10个十字军,12个亚马逊,10个海盗,7个主教,5个死灵法师,1个建筑师, 40个ons,0个庙宇,1个营房,0个庄园和2个宫殿。
输出量
查看游戏玩法。
游戏玩法
所有阶段
命令 W
=等待
无效的命令 =等待
第一阶段:提高税收
收入是根据您的人口和完成的建筑物产生的:
+5 gold * Peons
+2 gold * (Warlocks + Bishops + Necromancers) * TEMPLES
+2 gold * (Crusaders + Amazons) * BARRACKS
+2 gold * (Corsairs + Peons) * ESTATES
+10 gold * PALACES
第二阶段:偷钱
在此阶段,您可以通过发送Corsairs从一个城镇偷钱。每个海盗船最多可以窃取10金(即12名海盗船最多可以窃取120金)。如果目标城镇没有足够的黄金,您的海盗将偷走所有东西,最高债务额为200黄金。如果您尝试发送的Corsair数量超出您的所有权,该程序将使用您所有可用的Corsair。
命令语法:S DestinationId Corsairs
第三阶段:招募部队
在这里,您可以花一些金钱来训练牡丹。只要您有足够的牡丹和金,您就可以招募任意数量的单位。如果您尝试招募的人数超出实际能力,则游戏将随机招募,直到花费完所有东西为止。该计划会尊重您的最大配额(如果您尝试仅用8个peon招募10个十字军和5个amazon,它将例如招募6个十字军和2个amazon,而不是8个amazon或8个术士)。
Warlock : 10 gold
Crusader : 10 gold
Amazon : 10 gold
Corsair : 12 gold
Bishop : 20 gold
Necromancer : 20 gold
Architect : 15 gold
命令语法:R Warlocks Crusaders Amazons Corsairs Bishops Necromancers Architects
阶段4:工资
工资是根据您的人口扣除的:
-1 gold * (Warlock + Crusaders + Amazons)
-2 gold * (Corsairs + Bishops + Necromancers + Architects)
阶段5:尝试起义
如果您的余额为负数,则将您对城镇的控制权移交给了Outlaws。发生叛乱后,该镇的黄金重置为初始价值:500黄金。人口保持在目前的水平。
阶段6:转换士兵
您的每个主教都可以从选定的城镇转换1名敌方士兵(术士,十字军或亚马逊),每单位收费50金。转换后的部队加入驻扎在您镇上的部队。与招募一样,如果您没有足够的黄金或主教,该计划将在遵守配额的前提下随机转换。
命令语法:C DestinationId Warlocks Crusaders Amazons
阶段7:攻击镇
您可以派遣术士,十字军和亚马逊军队来征服城镇。如果您尝试发送的邮件超过了您发送的邮件,该程序将发送给所有人。
士兵按照以下模式获得1.5战斗奖励:(Mage > Range > Melee > Mage
即与亚马逊战斗的术士获得1.5力量)。只有多余的单位才能获得此奖励(即,与术士战斗的术士而亚马逊没有获得此奖励)。奖金归因于进攻和防守。
损失根据获胜者的总力量(例如,进攻力量:12 vs.防御力量:14)在获胜者的各个单位之间随机分配,国防部获胜并失去12个单位。宽松的人松开了他所有的单位。每个死亡单位都会添加到被攻击城镇的尸体数量中。如果获胜,城镇将被占领,并由攻击者所有。他还保留了该镇的黄金,尸体和牡丹。海盗,主教,死灵法师和建筑师逃离了潜在的压迫。
防守一无所获。
命令语法:A DestinationId Warlocks Crusaders Amazons
阶段8:募集尸体
您的每个死灵法师可以通过消耗尸体和消费黄金来复活最多5牡丹。每个复活的牡丹要花费1具尸体和20金。如果您尝试复活的更多,该程序将花费您所有的一切。
命令语法:R Corpses
阶段9:调动军队或进贡
您可以将单位发送到另一个城镇。如果您尝试发送的邮件超过了您发送的邮件,该程序将发送给所有人。
命令语法:M DestinationId Warlocks Crusaders Amazons Corsairs Bishops Necromancers Architects
或者,您可以通过租用Corsairs的船来发送黄金。每个海盗船最多可以运送200枚金币。如果您尝试发送的内容超出了您的要求,程序将发送您所拥有的内容。
命令语法:T DestinationId Gold
阶段10:抵御威胁
几种威胁威胁到您的城镇的威胁:
- 僵尸:死者并不总是像他们看上去那样死。您镇上10%(泛滥)的尸体会醒来并吃掉大脑。每个僵尸都会吃1牡丹,然后游荡到虚无之中(僵尸尸体和食用的牡丹都被消耗掉)。
- 恶魔:您的狮子需要听布道,否则它们将开始唤起黑暗之灵。您的每位主教都能满足多达50牡丹的需求。你的异端邪术(过量的牡丹)中有10%(被淹没)会生成恶魔。恶魔每人杀死1个Peon,然后下地狱(将Peones of Peons添加到城镇计数中)。
- 土匪:不法分子住在附近。Outlaws的总人口在城镇之间平均分配,并被窃取财富。您唯一的防御是海盗巡逻。每个海盗船最多可以阻止5条不法分子。每个未停止的不法分子都会从您的镇中窃取10金(最大市镇债务为200金)
游戏开始时至少会生成1个城镇的Outlaws(100个人口),然后每5个玩家再增加1个城镇(即1-4个玩家:1个Outlaws,5-9个玩家:2个Outlaws ...)。with徒可以被承认id = -1
阶段11:建造建筑物
到达此阶段时,您所在城镇中建筑物的建造将根据建筑师的数量进行。每个建筑师将单个建筑物的竣工量增加8%。当建筑物达到100%时,它将完成并在下一个“税收”阶段开始产生收入。施工队列是自动管理的(先到先得)。
然后,您也可以开始建造其他建筑物(BuildingId =括号中的字母):
TEMPLE (T) : 200 Gold
BARRACKS (B) : 200 Gold
ESTATE (E) : 200 Gold
PALACE (P) : 500 Gold
您可以开始建造任意数量的建筑物,如果您没有足够的黄金,建筑物将被忽略。您的新建筑物的建设将在下一轮开始。
命令语法:B BuildingId BuildingId BuildingId ...
阶段12:让孩子
每五个回合(第5、10、15回合……),新牡丹就会诞生并准备战斗。每对牡丹将制造1个牡丹(即23个牡丹将产生11个新牡丹)。
规则
- 不得将Bot写为击败或支持其他特定的Bot。
- 允许写入文件。请写入“ yoursubmissionname.txt”,游戏开始前该文件夹将被清空。禁止使用其他外部资源。
- 您的提交有1秒的响应时间(每个城镇)。
- 提供命令以编译和运行提交。
获奖
获胜者是经过100轮比赛后拥有最多城镇的人。如果玩家占领了所有城镇,游戏将停止并获胜。如果多个玩家的城镇数量相同,则总人口将计算在内,然后是黄金数量。
控制者
您可以在github上找到控制器。它还包含2个用Java编写的samplebot。在Eclipse中将其打开,将已编译的bot放置在根文件夹中,然后将一个类添加到控制程序中(就像samplebots一样)。
打架
战斗方式是这样的:
对于每个士兵阶层(术士,十字军,亚马逊):
- 计算进攻与防守之间的平衡(即,每个班级中谁拥有更多班级?
- 对于多余的士兵(即,正余额的值),请查看有多少“弱目标”(请参见阶段7图)。
- 将符合条件的士兵的战斗力(即“弱目标”与“多余的士兵”相比)乘以奖励,并将其余的乘以战斗力1。
您可以在此处尝试模拟器:http : //ideone.com/ArJosE(只需更改士兵的值,您将获得奖金和总实力)
以下是一些测试案例:
Attack Defense A. Bonus D. Bonus A. Str D. Str Winner
20/10/0 12/12/12 8/0/0 0/2/10 34.0 42.0 Defense
40/0/5 12/12/12 12/0/0 0/12/0 51.0 42.0 Attack
0/60/8 10/30/2 0/10/6 8/0/0 76.0 46.0 Attack
20/20/40 90/5/5 0/15/5 40/0/0 90.0 120.0 Defense
最终结果
平均10场比赛。句法 :Player(Towns, Population, Gold)
1. Opportunist(6.4, 4165, 2895626)
2. Politician(6.4, 1048, 42542)
3. Outlaw(2.8, 1575, 349073)
4. YoungEarl(0.4, 3424, 941624)
5. Aegis(0, 0, 0)
. Butter(0, 0, 0)
. Commander(0, 0, 0)
. Lannister(0, 0, 0)
. Machiaveli(0, 0, 0)
. Monarch(0, 0, 0)
. Serenity(0, 0, 0)
. Sehtimianer(0, 0, 0)
. Sleeper(0, 0, 0)
. Zealots(0, 0, 0)
10场比赛的结果:http://pastebin.com/GdufEYjm
2个游戏的完整日志:http : //pastebin.com/GQDZ0JdY&http : //pastebin.com/m3UBTDuC
大家玩得很好,政客和Oppotunist之间的斗争真的很紧密。
The total Outlaws population is divided equitably between towns and sent to steal wealth.
一共有几个土匪?