Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- leurs code:
- import os
- def afficher(plateau):
- """
- Affiche le plateau de jeu avec les coups joués par les joueurs et les numéros et lettre pour les lignes et colonnes
- :param plateau: liste de liste, 0 pour vide, 1 ou 2 pour joueur
- :return: None
- """
- symboles = ['_', 'X', 'O']
- s = '\n'
- for i in range(3, -1, -1):
- s += ' ' + str(i+1) + ' '
- for c in plateau[i]:
- s += symboles[c] + ' '
- s += '\n\n'
- s += ' A B C D\n\n'
- os.system('clear')
- print(s)
- def nouveau_plateau():
- """
- Crée le plateau de jeu
- :return: liste de liste de dimension 4x4 contenant des 0
- """
- plateau = []
- for i in range(4):
- plateau.append([0]*4)
- return plateau
- def coup(plateau, joueur, dernier_coup):
- """
- Demande un coup au joueur jusqu'à ce qu'il soit valide et le joue en modifiant le plateau
- :param plateau: liste de liste, 0 pour vide, 1 ou 2 pour joueur
- :param decalage: list d'entiers, représentent le décalage des lignes du plateau
- :param joueur: entier, 1 ou 2
- :param dernier_coup: string de deux caractères, dernier coup joué
- :return: coup joué lors du tour
- """
- fini = False
- # demande au joueur d'entrer son coup, vérifie que le coup est correct, et l'effectue
- while not fini:
- c = input('joueur ' + str(joueur) + ' > ')
- if len(c) == 2 and c[0] in ['A', 'B', 'C', 'D'] and c[1] in ['1', '2', '3', '4']:
- # si pas dernier coup, déchiffre le coup pour le plateau
- if c[0:2]==dernier_coup:
- print("ce coup vient d'être joué")
- else:
- i = int(c[1]) - 1
- j = ['A', 'B', 'C', 'D'].index(c[0])
- if plateau[i][j] != joueur:
- plateau[i][j] = joueur
- fini = True
- else:
- print('cette case est déjà de votre couleur')
- else:
- print('commande invalide')
- return c[0:2]
- def fin(plateau):
- """
- Détermine si quelqu'un a gagné
- :param plateau: liste de liste, 0 pour vide, 1 ou 2 pour joueur
- :return: int, 0 si pas de gagnant, sinon le numéro du joueur gagnant
- """
- l = []
- #lignes et colonnes
- for i in range(4):
- l.append(set(plateau[i]))
- l.append(set( [plateau[j][i] for j in range(4)] ))
- # diagonales
- l.append(set( [plateau[i][i] for i in range(4)] ))
- l.append(set( [plateau[3-i][i] for i in range(4)] ))
- # vérifie si gagnant
- for s in l:
- if len(s)==1 and s != {0}:
- g = list(s)[0]
- return g
- return 0
- def boucle_jeu():
- """
- Lance une partie entre joueur et les laisse chacun jouer un coup jusqu'à ce qu'il y ait un gagnant
- :return: None
- """
- plateau = nouveau_plateau()
- joueur = 1 # 1 ou 2
- gagnant = 0
- dernier_coup = None
- # continue jusqu'à ce qu'on ait un gagnant
- while gagnant==0:
- afficher(plateau)
- dernier_coup = coup(plateau, joueur, dernier_coup)
- gagnant = fin(plateau)
- joueur = (joueur%2) + 1
- afficher(plateau)
- print('joueur', gagnant, 'gagnant')
- if __name__ == "__main__":
- boucle_jeu()
- ton code:
- import os
- def afficher(plateau):
- #os.system(cls)
- d = {0: '_', 1: 'X', 2: 'O'}
- for i in range(4):
- print(4 - i, end='\t')
- for j in range(4):
- print(d[plateau[3-i][j]], end='\t ')
- print()
- print(' A B C D')
- A
- def win(plateau):
- g = [1, 1, 1, 1], [2, 2, 2, 2]
- test = 0
- for i in range(4):
- if plateau[i] in g or [plateau[j][i] for j in range(4)] in g:
- test = 1
- if (plateau[0][0]==1 and plateau[1][1]==1 and plateau[2][2]==1 and plateau[3][3]==1 or plateau[0][3]==1 and plateau[1][2]==1 and plateau[2][1]==1 and plateau[3][0]==1 or plateau[0][0]==2 and plateau[1][1]==2 and plateau[2][2]==2 and plateau[3][3]==2 or plateau[0][3]==2 and plateau[1][2]==2 and plateau[2][1]==2 and plateau[3][0]==2):
- test=1
- return test
- def coup_valide(coup_prec, tour, plateau):
- valid = 0
- while not valid:
- coup = input()
- if len(coup) != 2 or coup[0] not in ('A', 'B', 'C', 'D') or coup[1] not in ('1', '2', '3', '4'):
- print('coup invalide')
- elif coup == coup_prec:
- print('tu ne peux pas annuler le dernier coup')
- else:
- i, j = int(coup[1]) - 1, ord(coup[0]) - 65
- if plateau[i][j] == tour:
- print("tu ne peux pas changer ta propre case")
- else:
- valid = 1
- return coup,i,j
- def boucle_jeu():
- plateau = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
- tour = 0
- coup_prec = 0
- while not win(plateau):
- tour = tour % 2 + 1
- if tour%2==1:
- print("joueur1>")
- coup_prec, i, j = coup_valide(coup_prec, tour, plateau)
- plateau[i][j] = tour
- afficher(plateau)
- if tour%2==0:
- print("joueur2>")
- coup_prec, i, j = coup_valide(coup_prec, tour, plateau)
- plateau[i][j] = tour
- afficher(plateau)
- boucle_jeu()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement