Skip to content
Snippets Groups Projects
Commit 10ebdf58 authored by MAZAT Julian's avatar MAZAT Julian
Browse files

Ajoute le controlleur de jeu

parent 08071923
No related branches found
No related tags found
No related merge requests found
import numpy as np
class Grille:
# constantes
CASE_VIDE = " "
def __init__(self, nLigne, nColonne):
self.nLigne = nLigne
self.nColonne = nColonne
self.grille = np.zeros((nLigne, nColonne))
self.grille = np.full((nLigne, nColonne),self.CASE_VIDE)
# reinitialise la grille
def reinit(self):
......@@ -12,13 +15,15 @@ class Grille:
# affiche la grille
def afficherGrille(self):
print(np.flip(self.grille, 0))
for ligne in np.flip(self.grille, 0):
print('|' + ''.join(ligne) + '|')
#print(np.flip(self.grille, 0))
# retourne la première position pouvant
# accueillir un jeton
def premierLibre(self, colonne):
for ligne in range(self.nLigne):
if self.grille[ligne, colonne] == 0:
if self.grille[ligne, colonne] == self.CASE_VIDE:
return ligne
# place un jeton du joueur donné
......@@ -55,4 +60,4 @@ class Grille:
# vérifie si une colonne est pleine
def peutAccueillir(self, colonne):
return self.grille[self.nLigne - 1, colonne] == 0
\ No newline at end of file
return self.grille[self.nLigne - 1, colonne] == self.CASE_VIDE
\ No newline at end of file
main.py 0 → 100644
from grille import Grille
class Main:
# constantes
JOUEUR_1 = "X"
JOUEUR_2 = "O"
LARGEUR_GRILLE = 7
HAUTEUR_GRILLE = 6
# retourne une représentation en chaîne de
# caractères du joueur actuel
def afficherJoueur(self):
return ["Joueur 1","Joueur 2"][self.joueurActuel == self.JOUEUR_2]
# affiche l'état de la partie
def afficherTour(self):
print("=====================")
print("Tour de : " + self.afficherJoueur())
# indices des colonnes
print(' ', end='')
for i in range(self.LARGEUR_GRILLE):
print(' '*(len(self.grille.CASE_VIDE)-1) + str(i), end='')
print()
self.grille.afficherGrille()
# retourne l'action du joueur (-1 si format invalide)
def demanderAction(self):
res = input("Colonne : ")
try:
res = int(res)
except ValueError:
res = -1
return res
def __init__(self):
self.grille = Grille(self.HAUTEUR_GRILLE, self.LARGEUR_GRILLE)
self.joueurActuel = self.JOUEUR_1
# début du jeu
print("Début de la partie")
while True:
self.afficherTour()
# acquisition du choix du joueur
colonne = self.demanderAction()
while colonne < 0 or colonne >= self.LARGEUR_GRILLE or not self.grille.peutAccueillir(colonne):
print("Colonne pleine ou incorrecte.")
colonne = self.demanderAction()
# finition du tour
self.grille.placer(
self.grille.premierLibre(colonne),
colonne,
self.joueurActuel
)
if not self.grille.estGagant(self.joueurActuel):
self.joueurActuel = [self.JOUEUR_1, self.JOUEUR_2][self.joueurActuel == self.JOUEUR_1]
else: break
print("Bravo ! " + self.afficherJoueur() + " a gagné.")
Main()
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment