Je voudrais coder un algorithme génétique qui apprend à jouer à un jeu similaire à Tetris. Le jeu en lui-même est relativement simple; J'ai écrit le comportement complet de celui-ci ci-dessous.Comment pourrais-je coder cet algorithme génétique?
Le jeu:
- Grille base, 12x16.
- Vous devez effacer les blocs de la grille.
- Une rangée de nouveaux blocs est ajoutée toutes les 5 ticks, vers le bas, en poussant les blocs vers le haut.
- Vous ne pouvez effacer que les clusters du même type.
- Le nombre de types de blocs augmente à mesure que le jeu se poursuit.
- Vous ne pouvez supprimer que les clusters de 3 ou plus.
- Pour chaque cluster effacé,
(CLUSTER_SIZE - 3)^2
est ajouté à BLOCK_SCORE. - Une fois qu'une grappe a été retirée de la grille, les blocs ci-dessus glissent pour remplir les espaces, et s'il y a des trous horizontaux (sur la rangée du bas), le côté gauche de l'espace se déplace pour la remplir.
- Le but de ce jeu est de survivre le plus longtemps possible. Le temps est mesuré en ticks, ou le nombre de coups que vous avez faits.
- Votre score (ou Condition physique) est déterminé par
(TIME_ALIVE * BLOCK_SCORE)
- Le jeu est terminé une fois qu'un bloc atteint le sommet de la grille.
Le score de ce jeu intègre à la fois la longévité et l'efficacité. Plus les grappes que vous effacez sont grandes, plus la forme physique est élevée.
J'ai codé quelques GA maintenant, mais ils ont été basés sur la concurrence locale, des choses comme les objectifs de collecte et autres, VS d'autres individus. Mon problème est que je ne sais pas comment aborder ce problème. Chaque individu différent de cette nouvelle AG ne devrait avoir que la grille actuelle pour travailler en entrée. (Au moins, c'est ce que je pense serait nécessaire)
Comment puis-je commencer à coder le GA pour cela? Je ne peux pas pour la vie de moi le faire.
.
Merci à tous,
Steffan 'Ruirize James
De votre comportement, chaque individu joue le jeu et obtient un score qui peut être comparé à d'autres personnes - je ne suis pas sûr de savoir quel est le problème? –
Le problème est de configurer ceci en code; De quel type de traits vais-je avoir besoin, etc. –
Qu'est-ce qu'un 'move'? Avez-vous le choix du type de bloc ajouté, ou pouvez-vous déplacer un bloc nouvellement ajouté, ou quoi? –