Je suis nouveau dans ce changement de pile gamedev, mais j'ai déjà utilisé les sites mathématiques et cs.
Donc, je suis dans une compétition pour créer de l'IA pour un serpent qui rivalisera avec quatre autres serpents en tours de 5 minutes où les règles ressemblent beaucoup au jeu de serpent Nokia traditionnel sauf qu'il y a cinq serpents, la planche est 30x30 et il y a un certain nombre de petits obstacles sur le terrain.
Comme le jeu Nokia, votre serpent grandit lorsque vous atteignez le fruit et si vous vous écrasez contre vous-même, un autre serpent ou le mur vous mourrez. Le jeu s'exécute avec un délai de 30 ms entre les coups et le serveur envoie le nouvel état de jeu toutes les 50 ms que le code doit analyser et ce qui ne l'est pas et produire le coup suivant.
Le gagnant est le serpent qui avait la plus longue longueur à tout moment du jeu. Les bris d'égalité sont décidés par des éliminations.
Jusqu'à présent, ce que j'ai fait est de mettre en œuvre une recherche de graphique A * à partir de chaque serpent pour déterminer si mon serpent est le plus proche de la pomme et si c'est le cas, cela vaut pour la pomme. Sinon, j'ai fait un petit algorithme pour déterminer la zone la plus vide de la planche, pour laquelle mon serpent va, pour anticiper la prochaine pomme.
À part cela, j'ai quelques petits contrôles de survie pour m'assurer que mon serpent ne marche pas dans un piège qu'il ne peut pas sortir et s'il se bloque, j'ai quelque chose pour lui donner une meilleure chance de sortir.
...
Quoi qu'il en soit, j'ai testé mon serpent sur un serveur de test et ça marche plutôt bien. En règle générale, ma stratégie consistant à n'utiliser la pomme que lorsqu'elle est sûre et de trouver de l'espace lorsqu'elle ne la fait pas pousser plus vite que tous les autres serpents (certains serpents font la même chose mais vont souvent au milieu ou dans un coin), parfois, elle gagne ces jeux d'essai, mais est le plus souvent battu par le même serpent qui semble avoir un avantage sur la capacité de survie (mon serpent grandit plus vite mais meurt d'une manière ou d'une autre et cet autre serpent marche lentement et gagne sur la cohérence.
Je me demandais donc quelles idées quelqu'un pouvait essayer d'améliorer mon serpent. Ou peut-être des idées sur une nouvelle approche à adopter. Mes fonctions et mes classes sont bonnes, donc les changements qui peuvent sembler drastiques ne devraient pas être trop mauvais. J'encourage toutes les idées.
Des pensées?
Le serpent devrait adapter sa stratégie à sa longueur actuelle.
Un très long serpent peut utiliser son corps pour barrer ses adversaires. Cela signifie qu'il doit faire un joint avec un mur.
Si le serpent se déplace vers l'est, avec une pomme au nord-est, il doit se rendre jusqu'au mur avant de tourner vers le nord, de sorte que les itinéraires possibles pour d'autres serpents sont sévèrement limités.
Ce serpent avec la tête C, devrait tourner vers le nord à e9, pas à e8, de sorte que tout adversaire en dessous, sera piégé et incapable de manger des pommes qui apparaissent au-dessus de la ligne `` e ''.
Plus la zone que vous pouvez couper est grande et plus vous pouvez la tenir longtemps, mieux c'est.
la source