최종 결과는 여기에 있습니다!
소개
이 게임은 Manu의 Game of Town에서 영감을 받았습니다 . 그것은 칼과 마술의 세계에서 일어난다. 대륙 전체를 다스린 왕이 막 죽었고 많은 도시 국가의 군주들은 이제 영토를 놓고 싸우고 있습니다. 당신은이 군주 중 하나이며 당신의 목표는 모든 마을을 정복하고 통치하는 것입니다.
원리
사람들은 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 라운드, 2 단계, 당신은 마을 1의 플레이어 1이라는 것을 알 수 있습니다. 당신은 700 골드, 5 개의 시체, 15 개의 워록, 10 개의 십자군, 12 개의 아마존, 10 개의 해적, 7 명의 주교, 5 명의 네크로맨서, 1 명의 건축가, 40 개 작살, 0 개 사원, 1 개 막사, 0 개 부동산 및 2 개 궁전.
산출
게임 플레이를 참조하십시오.
게임 플레이
모든 단계
명령 W
= WAIT
잘못된 명령 = WAIT
1 단계 : 세금 인상
소득은 인구와 완성 된 건물에 따라 생성됩니다.
+5 gold * Peons
+2 gold * (Warlocks + Bishops + Necromancers) * TEMPLES
+2 gold * (Crusaders + Amazons) * BARRACKS
+2 gold * (Corsairs + Peons) * ESTATES
+10 gold * PALACES
2 단계 : 돈 훔치기
이 단계에서 해적을 보내 한 도시에서 돈을 훔칠 수 있습니다. 각 해적은 최대 10 골드 를 훔칠 수 있습니다 (즉 12 개의 해적은 최대 120 골드를 훔칠 수 있습니다). 대상 도시에 금이 충분하지 않으면 해적은 최대 채무 금액 인 200 골드 까지 모든 것을 훔칩니다 . 소유 한 것보다 더 많은 해적을 보내려고하면 프로그램은 사용 가능한 모든 해적을 사용합니다.
명령 구문 :S DestinationId Corsairs
3 단계 : 신병 모집
여기서 당신은 금을 소비함으로써 모란을 훈련시킬 수 있습니다. 모란과 금이 충분하면 원하는만큼 유닛을 모집 할 수 있습니다. 당신이 실제로 할 수있는 것보다 더 많이 모집하려고하면 게임은 모든 것이 소비 될 때까지 무작위로 모집합니다. 이 프로그램은 최대 할당량을 준수합니다 (만약 8 개의 작살로 10 개의 성전사와 5 개의 아마존을 모집하려고하면, 예를 들어 8 개의 아마존이나 8 개의 흑 마법사가 아닌 6 개의 십자군과 2 개의 아마존을 모집합니다).
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 단계 : 반란을 시도하십시오
잔액이 마이너스이면 도시의 통제권을 무법자 에게 넘깁니다 . 반란 후 마을의 금은 시작 값으로 재설정됩니다 : 500 금 . 인구는 현재 수준으로 유지됩니다.
6 단계 : 병사 전환
각 주교는 선택한 마을에서 적군 병사 1 명 (워록, 십자군 또는 아마존)을 개당 50 골드의 수수료로 전환 할 수 있습니다. 개종 한 부대는 당신의 도시에 배치 된 부대에 합류합니다. 신입 사원과 마찬가지로, 충분한 금 또는 주교가없는 경우, 프로그램은 할당량을 존중하면서 무작위로 변환합니다.
명령 구문 :C DestinationId Warlocks Crusaders Amazons
7 단계 : 공격 마을
흑 마법사, 성전사, 아마존 군대를 보내 마을을 정복 할 수 있습니다. 가지고있는 것보다 더 많이 보내려고하면 프로그램이 모든 사람을 보내 게됩니다.
병사들은 이 패턴에 따라 1.5 전투 보너스를Mage > Range > Melee > Mage
받습니다 : (즉, 아마존과 싸우는 흑 마법사는 1.5 힘을 얻습니다). 초과하는 부대 만이이 보너스를받습니다 (즉, 흑 마법사와 싸우는 흑 마법사와 아마존은이 보너스를 얻지 못합니다). 보너스는 공격과 방어 모두에 기인합니다.
총 전력이 느슨하면 (예 : 공격력 : 12 대 방어력 : 14, 방어 승리 및 12 대), 승리는 두 유닛간에 무작위로 분배됩니다. 느슨해지면 모든 유닛이 느슨해집니다. 모든 죽은 유닛은 공격 한 도시의 시체 수에 추가됩니다. 공격이 성공하면 해당 도시가 점령되어 공격자가 소유하게됩니다. 그는 또한이 도시에 있던 금, 시체, 모란을 가지고 있습니다. 해적, 주교, 강령 술사 및 건축가는 잠재적 압제 앞에서 도망칩니다.
방어는 아무것도 얻지 못합니다.
명령 구문 :A DestinationId Warlocks Crusaders Amazons
8 단계 : 시체 올리기
각 네크로맨서는 시체를 소비하고 금을 소비하여 최대 5 명의 작약을 부활시킬 수 있습니다. 부활 한 작약 1 개는 시체 1 개와 금 20 개입니다. 당신이 할 수있는 것보다 더 많은 부활을 시도한다면, 프로그램은 당신이 가진 모든 것을 소비 할 것입니다.
명령 구문 :R Corpses
9 단계 : 군대 또는 공물 이동
다른 도시로 유닛을 보낼 수 있습니다. 가지고있는 것보다 더 많이 보내려고하면 프로그램이 모든 사람을 보내 게됩니다.
명령 구문 :M DestinationId Warlocks Crusaders Amazons Corsairs Bishops Necromancers Architects
또는 해적선을 전세하여 금을 보낼 수도 있습니다. 각 해적은 최대 200 골드 까지 운송 할 수 있습니다 . 가지고있는 것보다 더 많이 보내려고하면 프로그램이 가지고있는 것을 보냅니다.
명령 구문 :T DestinationId Gold
10 단계 : 위협으로부터 방어
당신의 마을을 해칠 몇 가지 위협이 있습니다.
- 좀비 : 죽은 사람이 보이는 것처럼 항상 죽은 것은 아닙니다. 당신 마을의 시체 중 10 %가 깨어 뇌를 먹습니다. 각 좀비는 1 Peon을 먹은 다음 아무것도 아닌 곳으로 방황합니다 (Zombies와 식사 한 Peons 모두의 코프가 소비 됨).
- 악마 : 당신의 모란이 설교를들을 필요가 있거나 그들이 다크 스피릿을 불러 오기 시작할 것입니다. 각 주교는 최대 50 명의 Peons의 요구를 충족시킵니다. 이단의 10 % (바닥)가 초과하면 악마가 생성됩니다. 악마는 각각 1 개의 Peon을 죽이고 지옥으로 돌아갑니다.
- 산적 : 이웃에 무법자가 거주하고 있습니다. 총 무법자 인구는 도시간에 공평하게 분배되어 부를 훔치기 위해 보내집니다. 유일한 방어는 해적 순찰입니다. 각 해적은 최대 5 개의 무법자를 막을 수 있습니다. 각 무법자는 자신의 마을에서 10 골드를 훔치지 않습니다 (최대 마을 부채는 200 골드입니다)
게임 시작시 최소 1 개의 무법자 마을 (100 명 인구)이 생성 된 다음 5 명의 플레이어마다 1 개씩 더 생성됩니다 (예 : 1-4 명의 플레이어 : 1 명의 무법자, 5-9 명의 플레이어 : 2 명의 무법자 ...). 무법자는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 라운드 (5, 10, 15 ...)마다 새로운 작약이 태어나 싸울 준비가됩니다. 각 Peon 쌍은 1 Peon을 만듭니다 (즉, 23 Peons는 11 개의 새로운 Peon을 생성합니다).
규칙
- 봇은 다른 특정 봇을 이길 수 있도록 작성해서는 안됩니다.
- 파일 쓰기가 허용됩니다. "yoursubmissionname.txt"에 쓰면 게임이 시작되기 전에 폴더가 비워집니다. 다른 외부 리소스는 허용되지 않습니다.
- 제출 한 내용은 1 초 (도시 당)입니다.
- 제출물을 컴파일하고 실행하는 명령을 제공하십시오.
승리
승자는 100 라운드 이후 가장 많은 도시를 가진 사람입니다. 플레이어가 모든 도시를 점령하면 게임이 중단되고 승리합니다. 다수의 플레이어가 같은 마을을 가지고 있다면, 총 인구가 계산되고 그 다음에 금의 양이 계산됩니다.
제어 장치
github에서 컨트롤러를 찾을 수 있습니다. 또한 Java로 작성된 2 개의 샘플 봇이 포함되어 있습니다. Eclipse에서 열고 컴파일 된 봇을 루트 폴더에 넣고 제어 프로그램에 클래스를 추가하십시오 (샘플 봇과 동일).
싸움
싸우는 공식은 다음과 같습니다.
각 병사 클래스 (Warlock, Crusader, Amazon) :
- 공격과 방어 사이의 균형을 계산하십시오 (예 : 누가 각 클래스를 더 갖고 있고 더 많은 수는 누구입니까?)
- 초과 군인 (예 : 양의 균형 값)에 대해서는 "약한 목표"(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
두 게임의 전체 로그 : http://pastebin.com/GQDZ0JdY & http://pastebin.com/m3UBTDuC
모두와의 경기는 정치인과 기회 주의자 사이에서 정말 가까웠습니다.
The total Outlaws population is divided equitably between towns and sent to steal wealth.
총 산적 수는 몇 명입니까?