Introdução
O jogo se passa em um mundo pequeno, com diferentes cidades. Os governantes das cidades se odeiam e gostariam de governar o mundo. As pessoas são divididas em dois grupos, guerreiros e nascidos baixos. No entanto, nascidos baixos podem criar guerreiros. Você é o governante de três dessas cidades.
Jogabilidade
Quando o jogo começa, você governa três cidades. Em cada cidade, existem 100 pessoas. Você tem que dividi-los em cavaleiros e nascidos baixos.
Então o jogo atual começa, que é baseado em turnos. Uma curva fica assim: "Produce" knights
=> execute command of first town
=> execute command of next town
(repita para todas as cidades) => try a rebellion
.
- A cada turno, seu programa será chamado para cada cidade que pertence a você . Você pode atacar uma cidade , apoiar uma cidade ou simplesmente esperar . Essas ações serão executadas sequencialmente, não simultaneamente.
- A cada terceiro turno, você recebe um cavaleiro por 2 nascidos baixos (23 nascidos baixos => 11 cavaleiros). A quantidade de nascidos baixos permanece a mesma.
- Cavaleiros dentro de uma cidade têm um bônus de defesa de 1,2. Se você for atacado, seus cavaleiros serão multiplicados por esse número (por exemplo
78 knights
, você o terá93 knights
durante o ataque). Após o ataque, os cavaleiros extras serão removidos (se82 knights
sobreviver, você ainda terá78 knights
). - Em um ataque, cada cavaleiro mata um inimigo antes que ele morra. Por exemplo:
30 knights
ataque100 knights
(sem bônus de defesa) => 70 cavaleiros sobrevivem. - Você pode capturar uma cidade matando todos os cavaleiros dentro dela . Todos os nascidos de baixa idade pertencem a você agora e seus cavaleiros sobreviventes estão estacionados na cidade. Na próxima rodada, você pode governar esta cidade, além de todas as suas outras cidades .
- Depois que uma cidade é capturada, ela não recebe bônus de defesa por 2 turnos completos (porque os portões estão quebrados). No terceiro turno, os portões serão reparados.
- Para impedir que os recém-nascidos se rebelem, você precisa de pelo menos metade do número de cavaleiros que existem (23 nascidos-baixos em uma cidade precisam de pelo menos 12 cavaleiros na mesma cidade). Caso contrário, os nascidos baixos matarão todos os cavaleiros e a cidade se tornará "neutra" (sem um líder, indicado por um PlayerId
-1
). - Cidades neutras "produzirão" cavaleiros, mas não atacarão nem apoiarão nenhuma outra cidade.
Sintaxe
O controlador fornece entrada através de argumentos de comando, seu programa deve ser enviado via stdout.
Saída (preparação)
Antes do jogo começar, o controlador invoca sua submissão sem argumentos. Isso significa que você deve distribuir suas 100 pessoas (para cada cidade) em cavaleiros e nascidos baixos. Você precisa produzir KnightCount KnightCount KnightCount
, por exemplo 95 80 95
.
Entrada
Round;YourPlayerId;YourTownId;PlayerId_TownId_knights_lowborns;PlayerId_TownId_knights_lowborns;...
Na primeira rodada, isso será algo como
1;2;2;0_0_100_0;1_1_50_50;2_2_80_20
. Aqui, você vê que é a primeira rodada, você é o jogador 2 da cidade 2. Você tem 80 cavaleiros e 20 nascidos baixos.
Mais tarde no jogo, poderia ser algo parecido 20;2;1;0_0_100_0;2_1_30_50;2_2_40_20
. Você ainda é o jogador 2 (isso nunca muda), mas capturou a cidade 1 (que você está controlando agora).
Saída
A TownId NumberOfKnights
ou S TownId NumberOfKnights
ou W
(em espera).
Exemplo: A 2 100
(cidade de ataque 2 com 100 cavaleiros) ou S 3 2
(cidade de apoio 3 com 2 cavaleiros).
Regras
- Os bots não devem ser escritos para vencer ou suportar outros bots específicos.
- A gravação em arquivos é permitida. Por favor escreva para "nome da sua submissão .txt", a pasta será esvaziada antes do início do jogo. Outros recursos externos não são permitidos.
- Seu envio tem 1 segundo para responder (por cidade).
- Forneça comandos para compilar e executar seus envios.
Ganhando
O vencedor é aquele com mais cidades após 100 rodadas. Se um jogador captura todas as cidades, o jogo para e ele vence. Se vários jogadores tiverem a mesma quantidade de cidades, a quantidade de cavaleiros contará, e a quantidade de nascidos baixos.
Controlador
Você pode encontrar o controlador no github. Ele também contém 2 samplebots, escritos em Java. Abra-o no Eclipse, coloque os bots compilados na pasta raiz e adicione uma classe ao programa de controle (como os samplebots).
Resultados
Para os resultados finais, corri 10 jogos. Esta é a média:
Cidades dos Jogadores 1. Libertador 37.5 2. Sehtimianer 8.2 3. SuperProducer 5.4 4. Dormitório 1.4 5. Frankenstein 1.2 6. Manteiga 0.8 (mais cavaleiros) 7. TheKing 0.8 (menos cavaleiros) 8. Êxodo 0.6 9. Tartaruga 0.5 (mais cavaleiros) 10. AttackOn3 0.5 (menos cavaleiros) 11. Democracia 0.3 12. CalculatedFail 0.2 13. Revolucionário 0.1
Você pode ler um exemplo de jogo aqui: exemplo de jogo no github
A
apóia outra cidadeB
, o número determinado de cavaleiros é simplesmente transferido deA
paraB
, após o qual eles são controlados pelo proprietárioB
, correto?