1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
| import time
#fonctions
#fonction pour placer les jetons dans la grille
def ecrireTableau(tab, lig , col , val) :
tab[lig][col] = val
#fonction pour afficher la grille et les séparations en fonction des dimensions du tableau
def affiche(tab):
head = ' '
for i in range(m):
head += '%2d '%(i+1)
hrule = 8*('%c'%9552)
row = ' %c %c '%(9553,9553)
hsepdebut = ' %c'%(9556)+(m-1)*(hrule + chr(9574))+ hrule+chr(9559)
hsep = ' %c'%(9568)+(m-1)*(hrule + chr(9580))+ hrule+chr(9571)
hsepfinal = ' %c'%(9562)+(m-1)*(hrule + chr(9577))+ hrule+chr(9565)
vspace = m*(' %c '%(9553)) + ' %c'%(9553)
print(head)
print(hsepdebut)
for i in range(l) :
print(vspace)
row = ' %c '%(9553)
for j in range(m) :
row += ' %1s %c '%(p4[i][j],9553)
print(row)
print(vspace)
if i<(l-1):
print(hsep)
else :
print(hsepfinal)
# fonction pour créer le tableau (nb lignes et colonnes)
def creerTableau (lig,col) :
return [[''] * col for _ in range(lig) ]
#fonction pour la chute des jetons
def chute (tab,col, signe) :
k = 0
casevide = True
while (casevide==True and k<l) :
time.sleep(0.3)
if p4[k][c] == '':
ecrireTableau(p4,k,c,signe)
if k > 0 :
p4[k-1][c] = ''
else :
casevide = False
k+=1
print(60*'\n')
affiche(p4)
return k-1
def alignementhorizontal(tab,lig, col, nb_row, nb_col) :
signe = tab[lig][col]
nb_align = 1
for i in range(col+1, min(col+4, nb_col)): ## J'explore à droite du pion joué
if tab[lig][i] == signe : nb_align += 1
else : break
for i in range(col-1, max(-1, col-4), -1): ## J'explore à gauche du pion joué
if tab[lig][i] == signe : nb_align += 1
else : break
return nb_align >= 4
def alignementvertical(tab,lig, col, nb_row, nb_col) :
signe = tab[lig][col]
alignement = False
if lig+4<=nb_row :
### Sinon on déborde de la grille
alignement = signe == tab[lig+1][c] == tab[lig+2][c] == tab[lig+3][c]
return alignement
#programme
# définir nombre lignes et colonnes et colonne dans laquelle on met le jeton
joueur1 = input(("le joueur 1 est :"))
joueur2 = input(("le joueur 2 est :"))
joueurs = [joueur1, joueur2]
signes = ['X','0']
l= int(input ("nombre de lignes :"))
m= int(input ("nombre de colones :"))
# mettre dans la boucle du jeu
tour = 0
p4 = creerTableau (l,m)
#boucle jeu
while tour < l*m : ### Et oui car on peut remplir la grille sans avoir de vainqueur !
k=tour%2
signe = signes[k]
print(joueurs[k], "joue dans la colonne :")
tourjoueur = input("colonne :")
if tourjoueur == 'q':
print("Vous avez quitté le jeu")
break
c = int(tourjoueur)-1
r = chute(p4, c, signe)
if alignementvertical(p4,r, c, l, m) or alignementhorizontal(p4,r, c, l, m) :
print("Victoire de ",joueurs[k])
break
tour +=1 |
Partager