Bonjour Ă tous. Je m'appelle Valentine.
Le 10 juillet, j'ai lu
le post d' Oli
Ollisteka sur Habr sur la plate-forme
codingame.com et j'ai décidé de
m'essayer à des tâches logiques, ainsi qu'au concours Legends of Code and Magic.
Compte tenu de la grande quantité de temps libre, je me suis intéressé aux énigmes et aux tâches présentes sur cette ressource. Ce qui est bien, c'est que chaque tâche, chaque puzzle vous fait chercher une solution, bien que parfois pas évidente.

Vous trouverez ci-dessous une brève information sur les règles de la compétition, ainsi que des choses évidentes ou pas pour les débutants.
Légendes du code et de la magie
Le concours, qui se déroule du 25 juillet au 24 août. Le jeu est à certains égards similaire à Hearthstone, cependant, certaines choses ont été améliorées vers l'équilibre entre les joueurs.
Le jeu se déroule entre deux joueurs, et c'est un jeu au tour par tour. Chaque joueur a son propre jeu de cartes, sélectionné parmi les options disponibles pendant la phase de draft avant la phase de bataille.
Phase de projet
Pendant la phase de draft, chaque joueur forme son propre jeu de 30 cartes. En conséquence, les 30 premiers coups, chaque coup offre au joueur un choix de 3 cartes, dont une qu'il peut choisir.
Au moment de la rédaction, il existe 4 types de cartes dans le jeu:
- Les créatures sont essentiellement des monstres. Ils sont la principale ressource du joueur, ce qui lui permet à la fois de défendre et d'attaquer l'ennemi.
- Articles verts. Utilisé sur les créatures alliées. Augmentez la valeur de l'attaque / défense. Ajoutez des capacités à la créature.
- Articles rouges. Utilisé sur les créatures ennemies. Réduit l'attaque / la défense. Emportez des capacités. Peut tuer instantanément une créature ennemie (-99 en défense)
- Articles bleus. Ces cartes sont utilisées uniquement sur l'adversaire. Ils prennent souvent des vies et l'ennemi, reconstituent parfois la santé de son propriétaire.
Dans le jeu, il existe également 6 types de capacités pour les créatures:
- Percée Si une créature avec cette capacité inflige plus de dégâts que la santé de la créature de l'adversaire, les blessures restantes iront à l'adversaire. (Capacité utile, mais comme la pratique l'a montré, peu de gens utilisent ces cartes pour l'usage auquel elles sont destinées)
- Charge Vous permet d'attaquer sur le même tour qui a été déclenché.
(Indispensable dans la stratégie de bataille rapide, cependant, presque toutes les cartes avec la capacité Charge ont une faible valeur d'attaque / défense et si la bataille continue, la probabilité de perdre augmente) - Égoutter L'attaque sur les créatures ennemies / ennemies rétablit la santé comparable à l'attaque (Capacité Uber. Le nombre de cartes requis vous permet d'augmenter la santé à 50-70 points (par rapport aux 30 initiaux), mais la plupart des cartes avec cette capacité ont également de faibles valeurs d'attaque / défense)
- Garde La capacité protège contre les attaques directes contre le joueur. Vous devez d'abord détruire les créatures avec cette capacité (à mon avis, la carte a la capacité la plus utile. Cependant, cela vaut la peine de considérer le fait que certaines cartes avec cette capacité n'ont aucune attaque)
- Mortel. Détruit une créature qui attaque. (En règle générale, les cartes avec un flyer ont une seule défense, ce qui signifie qu'elles peuvent retirer un maximum d'une carte)
- Ward. Essentiellement - protection contre les premiers dommages. Après la première attaque, la défense disparaît essentiellement et la carte devient ordinaire. (Cette capacité contre-attaque et vole et fait des percées et des drains. Mais la carte ne protège pas le propriétaire contre les dégâts, donc je n'ai pas vu beaucoup de la carte avec le pupille dans les stratégies des autres joueurs).
Après avoir choisi des cartes dans son deck, la phase de Draft se termine. La phase de bataille commence
Phase de bataille
Dans cette phase, l'objectif principal est de vaincre l'adversaire, de réduire le montant de sa santé à 0.
Dans ce cas, le joueur a un paramètre tel que Mana. Pendant le 1er tour de la phase de combat, la valeur de mana est 1. Ensuite, à chaque tour, l'indicateur augmente de 1 jusqu'à ce qu'il atteigne la valeur maximale de 12. Des points de mana sont dépensés pour invoquer des créatures, ainsi que pour utiliser des objets.

Au début de chaque coup, le joueur a des informations sur ses cartes sur ses mains et sur la table, ainsi que sur les cartes sur la table de l'adversaire. Sur la base de ces données, le bot (programme) devrait créer une ligne de commande.
Chaque mouvement du deck collecté reçoit une carte aléatoire. Si la santé tombe à 25, 20, 15, 10 ou 5 points, plus de cartes seront appelées au tour suivant.
Au coup suivant, l'adversaire pioche 3 cartes du paquet.En règle générale, si les adversaires sont à peu près égaux en force, le jeu se termine environ 200 coups, mais j'ai également eu un jeu avec 240-250 coups. La limite inférieure est d'environ 80-85, à condition que les joueurs n'aient pas survolé les erreurs avec une mauvaise utilisation des équipes.
Stratégies utiles possibles
La principale différence entre ce concours et l'ancien Code de Kutulu est qu'il s'agit d'un jeu de cartes et qu'il y a un élément de chance et de chance.
Pendant le concours, plusieurs stratégies ont été testées:
- Un ensemble de créatures avec une charge, un vol et une percée pour une victoire rapide.
- Un ensemble de créatures avec Garde pour une sécurité maximale + des cartes avec une charge et un drain.
- Ensemble de créatures avec garde + cartes vertes et rouges.
- Un ensemble de créatures avec un maximum d'attaque / défense, la présence d'indicateurs + à la santé du joueur ou - à la santé de l'adversaire et seulement ensuite en fonction de leurs capacités.
Classiquement, les stratégies peuvent être divisées en 2 catégories.
Victoire rapide - les créatures n'attaquent que les créatures ennemies et gardent, le cas échéant.
Victoire complète - les créatures de l'ennemi sont détruites, et s'il n'y a pas de créatures, l'ennemi lui-même.
Maintenant, brièvement sur chaque stratégie:
Ensemble de créatures avec charge, mortelle et percée pour une victoire rapide
La stratégie a montré son échec en raison d'un élément de hasard. Vous pouvez piocher beaucoup de cartes qui coûtent 1 à 2 points de mana, mais il n'y en aura pas du tout dans les cartes de départ. Cette stratégie ne doit être utilisée que pour une victoire rapide et si l'ennemi n'a pas appelé une seule créature avec Garde. Pendant le concours, j'ai rencontré cette stratégie avec d'autres joueurs, même par le haut, mais en règle générale, si le jeu dépassait 100-120 coups, ils ont rapidement perdu.
Ensemble de créatures avec garde pour une sécurité maximale + cartes avec charge et drain
L'une des meilleures stratégies pour un jeu rapide. Cartes défenseurs appelés. Et s'il n'y en a pas, chargez et videz. Cette stratégie vous permet de détruire efficacement les créatures défensives ennemies tout en restant protégé. Dans le cas d'une transition vers un jeu long, la stratégie ne perd pas sa force, car il existe des créatures avec Garde et ayant des indicateurs d'attaque / défense élevés.
Ensemble de créatures avec garde + cartes vertes et rouges.
La stratégie est pire que la précédente, car les cartes d'objet ont plus un caractère auxiliaire qu'une carte de base. Par conséquent, il a été décidé de changer la priorité aux créatures.
Un ensemble de créatures avec une attaque / défense maximale
Lors de l'élaboration de cette stratégie, il a été guidé par le travail des patrons de robots, ainsi que de plusieurs joueurs. La stratégie ne convient que pour une partie prolongée, car en règle générale, lors des mouvements initiaux, il n'y a pas assez de mana à invoquer.
Inconvénients Ainsi que des solutions de contournement
Lors de la compilation d'un bot pour la dernière stratégie, il a été constaté que si l'équipe d'appel vise une carte qui ne peut pas être appelée par manque de mana ou une attaque sur une carte qui ne peut pas être attaquée, cette commande est marquée car l'action n'est pas légale. D'une part, c'est une merveilleuse caractéristique du concours, peu de participants ont pris en compte la santé des créatures lors d'une attaque ou l'impact des éléments de la carte, donc si toutes les créatures ont attaqué une carte qui a déjà été détruite, toutes les équipes sont automatiquement passées à non légales.
Cependant, il est devenu possible de former un grand nombre d'équipes à la fois.

En théorie, vous pouvez écrire des équipes pour attaquer avec une carte pour chacune des créatures ennemies, puis pour l'ennemi lui-même. Écrivez toutes les combinaisons possibles de SUMMON et ATTACK.
Ce qui sera fait sera exécuté, et le reste ira à l'action n'est pas légale.
Résultats
Au moment d'écrire ces lignes, mon bot est à la 120e place de la ligue de bronze.
Et à 950 place dans le top général. Cependant, à la fin du concours, je suis sorti du top 1000.
Résultat modeste. Cela est dû en partie à la première expérience de participation au concours. Les notes des joueurs sont calculées sur la base de l'algorithme True Skill. Selon cet algorithme, au début, 10 à 20 combats sont organisés avec les meilleurs de cette ligue, sur la base des résultats, la place de départ dans le tableau est déterminée, puis des combats avec une note de ± 10 sont organisés, chaque victoire augmente la note, chaque défaite diminue. Ainsi, plus de 100 combats sont organisés et la place dans le tableau est déterminée. Et puis, le bot continue de se battre avec les joueurs qui envoient leur programme pour traitement. Ainsi, vous pouvez augmenter votre note simplement en étant dans le tableau. J'ai envoyé encore et encore l'algorithme au traitement dans l'espoir d'être immédiatement au top.
Il reste à attendre et à se préparer pour le prochain concours sur
codingame.com . De plus, j'attends que le jeu passe en multijoueur, ce qui améliorera mon code.