Algorithme pour tetris

Fermé
velocity Messages postés 204 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 16 octobre 2014 - 13 janv. 2010 à 00:07
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 13 janv. 2010 à 21:41
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.
A voir également:

5 réponses

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
13 janv. 2010 à 19:49
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.
1
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
13 janv. 2010 à 00:38
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.
0
Bonjour ,
merci pour le liens , malheureusement j'ai un pb de son sous ubuntu, mais si tu peut me spécifire encore plus l'algorithme minx-max et m'expliquer un peut le hashage car je connais la structure d'arbremais la table de hashage j'en ai déjà entendu parlé sans l'avoir utilisée.
0
Apaachee Messages postés 248 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 25 août 2011 47
13 janv. 2010 à 01:22
Minmax pour un jeu à 1 joueur ? Je suis sceptique.
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
13 janv. 2010 à 01:26
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.
0
velocity Messages postés 204 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 16 octobre 2014 6
13 janv. 2010 à 20:57
En fait c'est pour le multijoueur avec l'ordinateur comme adversaire.
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661 > velocity Messages postés 204 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 16 octobre 2014
13 janv. 2010 à 21:41
j'imaginais de mon coté que de toute façon l'"IA" ne prendrait pas en compte ce que fait le joueur humain (trop compliqué à gérer pour toi je pense)
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
13 janv. 2010 à 08:34
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
salut ,
merci pour vos interventions .
Je suis encore perdu, pouvez vous me spécifier un peu plus les algorithme que je peut utiliser . et quels sont les structure de données dont j'aurais besoin .

merci
0