introduction
Le jeu se déroule dans un petit monde avec différentes villes. Les dirigeants des villes se détestent et aimeraient diriger le monde. Les gens sont divisés en deux groupes, les guerriers et les petits-nés. Cependant, les lowborns peuvent devenir des guerriers. Vous êtes le dirigeant de trois de ces villes.
Gameplay
Lorsque le jeu commence, vous dirigez trois villes. Dans chaque ville, il y a 100 personnes. Vous devez les diviser en chevaliers et enfants bas-nés.
Ensuite, le jeu commence et se fait au tour par tour. Un tournant ressemble à ceci: "Produce" knights
=> execute command of first town
=> execute command of next town
(à répéter pour toutes les villes) => try a rebellion
.
- A chaque tour, votre programme sera invoqué pour chaque ville qui vous appartient . Vous pouvez soit attaquer une ville , soutenir une ville ou simplement attendre . Ces actions seront exécutées séquentiellement et non simultanément.
- Tous les trois tours, vous obtenez un chevalier pour 2 enfants nés de basse race (23 enfants nés de naissance => 11 chevaliers). La quantité de lowborns reste la même.
- Les chevaliers à l'intérieur d'une ville ont un bonus de défense de 1,2. Si vous êtes attaqué, vos chevaliers seront multipliés par ce nombre (par exemple
78 knights
, vous l’auriez93 knights
pendant l’attaque). Après l'attaque, les chevaliers supplémentaires seront enlevés (si vous82 knights
survivez, vous aurez toujours78 knights
). - Lors d'une attaque, chaque chevalier tue un ennemi avant de mourir. Par exemple:
30 knights
attaque100 knights
(sans bonus de défense) => 70 chevaliers survivent. - Vous pouvez capturer une ville en tuant tous les chevaliers qui s'y trouvent . Tous les lowborns vous appartiennent maintenant et vos chevaliers survivants sont en poste dans la ville. Au tour suivant, vous pourrez diriger cette ville en plus de toutes vos autres villes .
- Une fois la ville capturée, elle n’a plus de bonus de défense pendant 2 tours complets (car les portes sont brisées). Au troisième tour, les portes seront réparées.
- Pour éviter la rébellion des lowborns, vous avez besoin d'au moins la moitié du nombre de chevaliers qu'il y a de lowborn (23 dans la ville ont au moins 12 chevaliers dans la même ville). Sinon, les lowborns tueront tous les chevaliers et la ville deviendra "neutre" (sans chef, indiqué par un PlayerId
-1
). - Les villes neutres "produiront" des chevaliers, mais n'attaqueront ni ne soutiendront aucune autre ville.
Syntaxe
Le contrôleur vous fournit une entrée via des arguments de commande, votre programme doit sortir via stdout.
Sortie (préparation)
Avant le début du jeu, le contrôleur appelle votre soumission sans argument. Cela signifie que vous devez répartir vos 100 habitants (pour chaque ville) en chevaliers et enfants peu-nés. Vous devez produire KnightCount KnightCount KnightCount
, par exemple 95 80 95
.
Entrée
Round;YourPlayerId;YourTownId;PlayerId_TownId_knights_lowborns;PlayerId_TownId_knights_lowborns;...
Au premier tour, ce sera quelque chose comme
1;2;2;0_0_100_0;1_1_50_50;2_2_80_20
. Ici, vous voyez que c’est le premier tour, vous êtes le joueur 2 dans la ville 2. Vous avez 80 chevaliers et 20 enfants nains.
Plus tard dans le jeu, cela pourrait être quelque chose comme 20;2;1;0_0_100_0;2_1_30_50;2_2_40_20
. Vous êtes toujours le joueur 2 (cela ne change jamais), mais vous avez capturé la ville 1 (que vous contrôlez maintenant).
Sortie
A TownId NumberOfKnights
ou S TownId NumberOfKnights
ou W
(pour attendre).
Exemple: A 2 100
(attaquez la ville 2 avec 100 chevaliers) ou S 3 2
(soutenez la ville 3 avec 2 chevaliers).
Règles
- Les robots ne doivent pas être écrits pour battre ou soutenir d'autres robots.
- L'écriture dans des fichiers est autorisée. S'il vous plaît écrivez à " yoursubmissionname .txt", le dossier sera vidé avant le début d'une partie. Les autres ressources externes sont interdites.
- Votre soumission a 1 seconde pour répondre (par ville).
- Fournissez des commandes pour compiler et exécuter vos soumissions.
Gagnant
Le gagnant est celui qui compte le plus grand nombre de villes après 100 tours. Si un joueur s'empare de toutes les villes, le jeu s'arrête et il gagne. Si plusieurs joueurs ont le même nombre de villes, le nombre de chevaliers comptera, puis le nombre de mort-nés.
Manette
Vous pouvez trouver le contrôleur sur github. Il contient également 2 samplesbots, écrits en Java. Ouvrez-le dans Eclipse, placez les robots compilés dans le dossier racine et ajoutez une classe au programme de contrôle (comme les samplebots).
Résultats
Pour les résultats finaux, j'ai couru 10 jeux. C'est la moyenne:
Villes de joueurs 1. Libérateur 37,5 2. Sehtimianer 8.2 3. SuperProducer 5.4 4. Sleeper 1.4 5. Frankenstein 1.2 6. Beurre 0.8 (plus de chevaliers) 7. TheKing 0.8 (moins Knights) 8. Exode 0.6 9. Tortue 0.5 (plus de chevaliers) 10. AttackOn3 0.5 (moins les chevaliers) 11. Démocratie 0.3 12. CalculatedFail 0.2 13. Révolutionnaire 0.1
Vous pouvez lire un exemple de jeu ici: exemple de jeu sur github
A
soutient une autre villeB
, le nombre donné de chevaliers est simplement transféré deA
àB
, après quoi ils sont contrôlés par le propriétaire deB
, n'est-ce pas?