Algorithme pour tetris
velocity
Messages postés
204
Date d'inscription
Statut
Membre
Dernière intervention
-
Pacorabanix Messages postés 3248 Date d'inscription Statut Membre Dernière intervention -
Pacorabanix Messages postés 3248 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous
Je suis en train de programmer Tetris en Java et là je suis à la phase de creer un joueur automatique mais je n'ai aucune piste sur quel algorithme utilisé.
Pour chaque pièce il doit déterminer la meilleurs position .
Le joueur ne connait que la pièce courant et suivante (en apercus) ,mais il doit aussi prendre en compte toutes les possibilités des pièce qui suivent (disant jusqu'a 5 pièces.
Si vous pouvez me donner quelques idées ou liens à suivre.
merci pour toutes aide que vous proposez.
Je suis en train de programmer Tetris en Java et là je suis à la phase de creer un joueur automatique mais je n'ai aucune piste sur quel algorithme utilisé.
Pour chaque pièce il doit déterminer la meilleurs position .
Le joueur ne connait que la pièce courant et suivante (en apercus) ,mais il doit aussi prendre en compte toutes les possibilités des pièce qui suivent (disant jusqu'a 5 pièces.
Si vous pouvez me donner quelques idées ou liens à suivre.
merci pour toutes aide que vous proposez.
A voir également:
- Tetris webmaster
- Webmaster ✓ - Forum Réseaux sociaux
- [Webmaster] ✓ - Forum Webmastering
- Tetris C++ - Forum C++
- Webmaster ✓ - Forum Webmastering
- Zune, mettre tetris ou autre ✓ - Forum Audio
5 réponses
Oui le truc de Char Snipeur est le plus simple : Pour une situation donnée et étant donné la pièce qu'il faut placer, tu calcules toutes les possibilités (disons dans un arbre trié, mais franchement, à part pour l'optimisation des calculs, dans ce cas ça n'a aucune importance) et tu leur associes un nombre. Ex : -1 s'il va y avoir un trou, -2 si ça va faire perdre la partie, 0 si tout va bien, +1 si tu vas remplir une ligne, +2 si tu vas remplir 2 lignes...
Toutes ces possibilités, c'est selon où tu poses la pièce (et sachant qu'il peut y avoir jusqu'à 4 possibilités pour chaque endroit selon comment elle est tournée, au moins). Ensuite, l'ordi choisi la configuration qui aura le meilleur score.
Toutes ces possibilités, c'est selon où tu poses la pièce (et sachant qu'il peut y avoir jusqu'à 4 possibilités pour chaque endroit selon comment elle est tournée, au moins). Ensuite, l'ordi choisi la configuration qui aura le meilleur score.
un algorithme classique pour ce genre de cas est l'algorithme "min-max", mais c'est plutot dur à apprendre, malgré que ce soit un algo pas très compliqué. Ce serait bien que tu aies des notions sur les arbres, et pour l'optimiser sur le hashage.
un lien parmis tant d'autre, si tu connais l'anglais : https://www.youtube.com/user/ucberkeley?blend=2&ob=4#p/c/4BBB74C7D2A1049C/15/Unh51VnD-hA
ça commence vers 2:00
le prof présente un exemple avec un jeu Tic-Tac-Toe (morpion)
Ceci dit, ce sera clairement différent nas le cas du tetris, mais tu pourras déjà avec ça apprendre pas mal de choses.
un lien parmis tant d'autre, si tu connais l'anglais : https://www.youtube.com/user/ucberkeley?blend=2&ob=4#p/c/4BBB74C7D2A1049C/15/Unh51VnD-hA
ça commence vers 2:00
le prof présente un exemple avec un jeu Tic-Tac-Toe (morpion)
Ceci dit, ce sera clairement différent nas le cas du tetris, mais tu pourras déjà avec ça apprendre pas mal de choses.
Minmax pour un jeu à 1 joueur ? Je suis sceptique.
on minimaxise par rapport aux prochaines séries de pièces qu'on pourrait avoir. un peu comme s'il y avait un "joueur adverse" qui choisirait des pièces pour bloquer celui qui doit les mettre.
Je suis d'accord que ce n'est pas vraiment un min max simple dans ce cas, mais les idées de bases avec un arbre et une évaluation chemins possibles, selon si on peut être "mortellement bloqué" ou "avoir une case vide perdue sous les autres" (mauvais) est tout à fait possible.
Je suis d'accord que ce n'est pas vraiment un min max simple dans ce cas, mais les idées de bases avec un arbre et une évaluation chemins possibles, selon si on peut être "mortellement bloqué" ou "avoir une case vide perdue sous les autres" (mauvais) est tout à fait possible.
J'aurai vu un truc plus simple. Je ne suis pas un expert en tetris, mais connaître la piece suivante, n'a pas énormément d'intéret je trouve, sauf lorsque que l'on veux enlever plein de lignes d'un coup.
Si on prend une pièce qui tombe, elle a (dans le cas général) 4 positions possible en rotation et x-largeur_piece (où x est le nombre de brique de gauche à droite). Donc tu as moins de 4*x possibilités pour chaque nouvelle pièce, c'est raisonnable.
Ce que je ferai c'est choisir la position donnant la plus grande compacité (éviter les trous) et la plus petite hauteur de l'ensemble.
Si on prend une pièce qui tombe, elle a (dans le cas général) 4 positions possible en rotation et x-largeur_piece (où x est le nombre de brique de gauche à droite). Donc tu as moins de 4*x possibilités pour chaque nouvelle pièce, c'est raisonnable.
Ce que je ferai c'est choisir la position donnant la plus grande compacité (éviter les trous) et la plus petite hauteur de l'ensemble.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question