Jeu morpion
Résolu/Fermé
A voir également:
- Jeu morpion
- 94 jeu - Télécharger - Puzzle & Réflexion
- Jeu zuma - Télécharger - Jeux vidéo
- Jeu 94 degrés - Télécharger - Divers Jeux
- Logo jeu - Télécharger - Jeux vidéo
- Jeu serpent pomme - Guide
11 réponses
Utilisateur anonyme
10 nov. 2021 à 20:18
10 nov. 2021 à 20:18
Pour moi le terme matrice est impropre, car il désigne un outil mathématique et là c’est pas des maths
Par contre, en effet quelque chose qui a un « représentation » matricielle serait probablement plus pratique pour ton exercice.
Tu pourrais n’avoir qu’un objet qui contient les cases du robot et du joueur, et itérer dessus
Par exemple, une liste peut contenir pleins de type de données, y compris des listes.
Mais avec une seule liste tu peux arriver à un résultat similaire.
Si la liste contient 9 items (par exemple des V pour vides).
Les 3 premiers sont la première ligne
Les 3 suivants la 2eme ligne
Et les 3 derniers la dernière ligne.
Par contre, en effet quelque chose qui a un « représentation » matricielle serait probablement plus pratique pour ton exercice.
Tu pourrais n’avoir qu’un objet qui contient les cases du robot et du joueur, et itérer dessus
Par exemple, une liste peut contenir pleins de type de données, y compris des listes.
Mais avec une seule liste tu peux arriver à un résultat similaire.
Si la liste contient 9 items (par exemple des V pour vides).
Les 3 premiers sont la première ligne
Les 3 suivants la 2eme ligne
Et les 3 derniers la dernière ligne.
Utilisateur anonyme
Modifié le 11 nov. 2021 à 09:53
Modifié le 11 nov. 2021 à 09:53
Avec 3 listes de 3 items, tu peux avoir une représentation "spatiale" de ton jeu.
Je vais prendre _ pour une case vide, X pour le joueur, et O pour le robot.
A un moment de la partie on peut arriver à
Intuitivement, j'imagine
X_X
___
O_O
mais ça peut aussi représenter
X_O
___
X_O
ou encore
O_O
___
X_X
bref c'est toi qui voit.
Supposons
X_X
___
O_O
Pour savoir s'il y a une ligne gagnante, le robot, regarde chaque liste et dès qu'il en trouve une dans laquelle il y a 2 O et un _ alors il remplace le _ par O et gagne.
Maintenant supposons
X_O
___
X_O
Pour regarder en colonne, il faut prendre l'élément "n" de la liste 1, le "n" de la liste 2 et le "n" de la liste 3 et ensuite c'est pareil dès qu'une colonne contient 2 0 et un _ le robot gagne.
Je vais prendre _ pour une case vide, X pour le joueur, et O pour le robot.
A un moment de la partie on peut arriver à
["X", "_", "X"]et
["_", "_", "_"]et
["0", "_", "0"]
Intuitivement, j'imagine
X_X
___
O_O
mais ça peut aussi représenter
X_O
___
X_O
ou encore
O_O
___
X_X
bref c'est toi qui voit.
Supposons
X_X
___
O_O
Pour savoir s'il y a une ligne gagnante, le robot, regarde chaque liste et dès qu'il en trouve une dans laquelle il y a 2 O et un _ alors il remplace le _ par O et gagne.
Maintenant supposons
X_O
___
X_O
Pour regarder en colonne, il faut prendre l'élément "n" de la liste 1, le "n" de la liste 2 et le "n" de la liste 3 et ensuite c'est pareil dès qu'une colonne contient 2 0 et un _ le robot gagne.
Utilisateur anonyme
10 nov. 2021 à 18:17
10 nov. 2021 à 18:17
Bonjour
En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
On pourra commencer à essayer de t’aider quand tu auras reposté correctement ton code.
En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
On pourra commencer à essayer de t’aider quand tu auras reposté correctement ton code.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je le reposte correctement
Bonjour,
j'aimerais codé un jeu de morpion qui se joue seul contre l'ordinateur mais il y a un passage que je n'arrive pas à optimisé. A un moment je veux décrire quel est l'ordre de priorité (jsp quel thermes utiliser pour l'appeler donc je vais l'appeler robot) de l'action qu'il va faire. Il commence par regarder si il a déjà deux case et la troisième est disponible, ce qui le fait gagner. Si il ne peut pas gagner à ce tours, il vérifie que sont adversaires ne gagnera pas à sont prochain tours si le robot de réagit pas. Et pour finir il suivra différant plans que j'aurais programmé. C'est dans les deux première priorité du robot que j'ai du mal.
je pourrais faire ça mais c long pas optimisé du tout et très brouillon
a1|a2|a3
__|___|____
b1|b2| b3
__|___|____
c1|c2 |c3
(c'est un reproduction du cadrillage du plateau de jeu pour vous montrer comment j'ai nommé chaque case)
voici à peu près ce que ça donnerait je pourrait un peu l'optimisé mais il serait quand même très mal optimisé :
etc...
je pense qu'il faut faire un truc avec des matrices mais jsp comment faire et je n'ai rien trouvé qui pourrait m'aider
après j'ai un autre problème d'optimisation pour celui ci vous n'avez pas besoins de mise en contexte ce qui j'ai fait va suffire à vous faire comprendre
Voilà, j'espère que maintenant vous pouvez voir les programmes correctement.
merci beaucoup pour votre aide
Bonjour,
j'aimerais codé un jeu de morpion qui se joue seul contre l'ordinateur mais il y a un passage que je n'arrive pas à optimisé. A un moment je veux décrire quel est l'ordre de priorité (jsp quel thermes utiliser pour l'appeler donc je vais l'appeler robot) de l'action qu'il va faire. Il commence par regarder si il a déjà deux case et la troisième est disponible, ce qui le fait gagner. Si il ne peut pas gagner à ce tours, il vérifie que sont adversaires ne gagnera pas à sont prochain tours si le robot de réagit pas. Et pour finir il suivra différant plans que j'aurais programmé. C'est dans les deux première priorité du robot que j'ai du mal.
je pourrais faire ça mais c long pas optimisé du tout et très brouillon
a1|a2|a3
__|___|____
b1|b2| b3
__|___|____
c1|c2 |c3
(c'est un reproduction du cadrillage du plateau de jeu pour vous montrer comment j'ai nommé chaque case)
voici à peu près ce que ça donnerait je pourrait un peu l'optimisé mais il serait quand même très mal optimisé :
cdj = [] #contient toutes les cases du joueur cdr = [] #contient toutes les case du robot cc = [] #contient toutes les case qui sont déjà prises if a1 in cdr and a2 in cdr and a3 not in cc: cdr.append(a3) print("perdu") if a1 in cdr and a3 in cdr and a2 not in cc: cdr.append(a2) print("perdu") if a in cdr and a2 in cdr and a1 not in cc: cdr.append(a1) print("perdu") if b1 in cdr and b3 in cdr and b2 not in cc: cdr.append(b2) print("perdu") if b1 in cdr and b2 in cdr and b3 not in cc: cdr.append(a3) print("perdu")
etc...
je pense qu'il faut faire un truc avec des matrices mais jsp comment faire et je n'ai rien trouvé qui pourrait m'aider
après j'ai un autre problème d'optimisation pour celui ci vous n'avez pas besoins de mise en contexte ce qui j'ai fait va suffire à vous faire comprendre
if a == "a1": a = a1 elif a == "a2": a = a2 elif a == "a3": a = a3 elif a == "b1": a = b1 elif a == "b2": a = b2 elif a == "b3": a = b3 elif a == "c1": a = c1 elif a == "c2": a = c2 elif a == "c3": a = c3
Voilà, j'espère que maintenant vous pouvez voir les programmes correctement.
merci beaucoup pour votre aide
Utilisateur anonyme
10 nov. 2021 à 18:55
10 nov. 2021 à 18:55
Comme tu le vois, il n’y a toujours pas d’indentation.
Option 1, tu n’en as pas non plus dans ton code chez toi, et dans ce cas ton programme ne peut pas marcher du tout
Option 2, tu l’as copié collé depuis ton premier message, dans lequel y’a plus d’indentation donc….
Option 3….
Option 1, tu n’en as pas non plus dans ton code chez toi, et dans ce cas ton programme ne peut pas marcher du tout
Option 2, tu l’as copié collé depuis ton premier message, dans lequel y’a plus d’indentation donc….
Option 3….
Ha, maince, désolé, c'était l'option 2, je vais les réécrire à la main entre les deux balises.
voici le premier programme :
et voici le deuxième
voici le premier programme :
cdj = [] #contient toutes les cases du joueur cdr = [] #contient toutes les case du robot cc = [] #contient toutes les case qui sont déjà prises if "a1" in cdr and "a2" in cdr and "a3" not in cc: cdr.append("a3") print("perdu") if "a1" in cdr and "a3" in cdr and "a2" not in cc: cdr.append("a2") print("perdu") if "a3" in cdr and "a2" in cdr and "a1" not in cc: cdr.append("a1") print("perdu") if "b1" in cdr and "b3" in cdr and "b2" not in cc: cdr.append("b2") print("perdu") if "b1" in cdr and "b2" in cdr and "b3" not in cc: cdr.append("a3") print("perdu")
et voici le deuxième
if a == "a1": a = a1 elif a == "a2": a = a2 elif a == "a3": a = a3 elif a == "b1": a = b1 elif a == "b2": a = b2 elif a == "b3": a = b3 elif a == "c1": a = c1 elif a == "c2": a = c2 elif a == "c3": a = c3
Utilisateur anonyme
10 nov. 2021 à 19:27
10 nov. 2021 à 19:27
Quand tu dis ne pas savoir faire avec les matrices, ce que tu ne sais pas c’est coder une « matrice » en python ou alors quel algorithme appliquer sur une matrice ?
ni l'un ni l'autre, c'est un ami à moi qui pour un programme un peu similaire m'avait conseillé de d'utiliser des matrice mais j'ai abandonné se projet car à l'époque je n'avais pas les compétences pour le finir proprement