Commit ac3cda4f authored by Théo BOUTEMY's avatar Théo BOUTEMY
Browse files

écriture de fichier ok

parent 87d2ba4f
......@@ -24,10 +24,9 @@ class Joueur(metaclass = ABCMeta):
"""
def a_son_tour(self): # coder les fonctions en 2 temps pour ne pas afficher les messages d'erreur suand c l'ia
#la table de jeu appele a son tour pour effectuer un tour
bool=False # tour effectué?
def a_son_tour(self):
f = open("historique des parties.txt", mode="a") # on ouvre un fichier texte en mode append
bool=False
while not bool:
......@@ -45,7 +44,7 @@ class Joueur(metaclass = ABCMeta):
a, b = self.pieces_du_joueur()[n].coords[0], self.pieces_du_joueur()[n].coords[1]
if coup== 'entrer': # pour savoir si c'est une case extérieure, on différencie ia et joueur (message affiché)
if coup== 'entrer':
self.pieces_du_joueur()[n].tour_effectué=False
if self.nom=='IA':
i,j=randint(0,5),randint(0,5)
......@@ -56,13 +55,13 @@ class Joueur(metaclass = ABCMeta):
j = int(input('entrer la nouvelle ordonnée : '))
ori = input('droite? gauche? ou demi-tour? ou rien ? ')
if a in [0, 1, 2, 3, 4] and b in [0, 1, 2, 3, 4] : #si pion dans le plateau
if self.nom!='IA': #on ne veut pas de message pour l'ia'
if a in [0, 1, 2, 3, 4] and b in [0, 1, 2, 3, 4] :
if self.nom!='IA':
print('la piece est déjà rentrée sur le plateau')
else:
if (i == 0 or i == 4 and j in [0,1,2,3,4]) or ( j == 4 or j == 0 and i in [0,1,2,3,4]):
self.pieces_du_joueur()[n].entrer(i,j,ori)
else: #pas sur l'extérieur
else:
if self.nom!='IA':
print('une piece doit être rentrée par l exterieur du plateau')
bool=self.pieces_du_joueur()[n].tour_effectué
......@@ -71,8 +70,10 @@ class Joueur(metaclass = ABCMeta):
elif coup == 'sortir':
self.pieces_du_joueur()[n].tour_effectué = False
if (a in [0, 4] or b in [0, 4]):
self.pieces_du_joueur()[n].sortir()
if (a in [-1, 0, 1, 2, 3, 4, 5] and b in [-1, 0, 1, 2, 3, 4, 5]):
if self.pieces_du_joueur()[n].coords[0] in [i for i in range (-1,6)] and self.pieces_du_joueur()[n].coords[1] in [i for i in range (-1,6)]: # une piece est alors sortie du plateau
self.pieces_du_joueur()[n].sortir()
else:
if self.nom!='IA':
print("pour sortir une pièce, celle-ci doit être sur l'extérieur du plateau")
......@@ -100,7 +101,7 @@ class Joueur(metaclass = ABCMeta):
print('pour rentrer en poussant, vous devez mettre la piece sur une case extérieure au plateau, la mettre dans la bonne orientation et pousser')
bool = self.pieces_du_joueur()[n].tour_effectué
elif coup == 'pousser':
if coup == 'pousser':
self.pieces_du_joueur()[n].tour_effectué = False
if (a in [0, 1, 2, 3, 4] and b in [ 0, 1, 2, 3, 4]):
self.pieces_du_joueur()[n].pousser()
......@@ -113,7 +114,7 @@ class Joueur(metaclass = ABCMeta):
elif coup== 'orientation':
self.pieces_du_joueur()[n].tour_effectué=False
if (a in [0, 1, 2, 3, 4] and b in [0, 1, 2, 3, 4]):
if (a in [-1, 0, 1, 2, 3, 4, 5] and b in [-1, 0, 1, 2, 3, 4, 5]):
if self.nom=='IA':
ori=self.ori_possible[randint(0,4)]
else:
......@@ -148,16 +149,24 @@ class Joueur(metaclass = ABCMeta):
if i.coords[0] in [-1, 5] or i.coords[1] in [5, -1, -2, 6]: # une piece est alors sortie du plateau
if i.car() in ['R', 'E']:
i.sortir() # n'a pas besoin de la cond definie ici, se réfere à la fonction de pieces, sans condition sur la position
i.sortir()
if bool and self.nom=='IA':
print('l IA a joué le coup', coup, 'sur la piece numero', n)
if bool: #écriture du fichier
f.write("Au tour de {0}.\n La piece numero {1} a ete bougee avec le coup {2} \n ".format(str(self.nom),str(n), str(coup)))
f.write("La piece numero {0} est desormais en position {1}, et orientee vers {2} \n \n".format(str(n), str(self.pieces_du_joueur()[n].coords),str(self.pieces_du_joueur()[n].orientation)))
f.close()
class Theo(Joueur):
def __init__(self,plateau):
super().__init__(plateau)
self.nom='Théo'
self.nom='Theo'
self.description = 'Théo, vous êtes les elephants, qui sont par défaut orientés vers la gauche'
......
......@@ -128,7 +128,7 @@ class Animal(Piece, metaclass=ABCMeta):
if f < 0: # la force résultante est vers la droite
for piece in Hab:
piece.coords = piece.coords[0] - 1, piece.coords[1]
piece.coords =[ piece.coords[0] - 1, piece.coords[1]]
self.tour_effectué = True
else:
print('vous ne pouvez pas effectuer cette poussée: vous navez pas assez de force de poussée')
......@@ -151,7 +151,7 @@ class Animal(Piece, metaclass=ABCMeta):
if f > 0: # la force résultante est vers la droite
for piece in Hab:
piece.coords = piece.coords[0] + 1, piece.coords[1]
piece.coords = [piece.coords[0] + 1, piece.coords[1]]
self.tour_effectué = True
else:
print('vous ne pouvez pas effectuer cette poussée: vous navez pas assez de force de poussée')
......@@ -174,7 +174,7 @@ class Animal(Piece, metaclass=ABCMeta):
if f > 0: # la force résultante est vers la droite
for piece in Vab:
piece.coords = piece.coords[0], piece.coords[1] - 1
piece.coords =[ piece.coords[0], piece.coords[1] - 1]
self.tour_effectué = True
else:
print('vous ne pouvez pas effectuer cette poussée: vous navez pas assez de force de poussée')
......@@ -197,7 +197,7 @@ class Animal(Piece, metaclass=ABCMeta):
if f < 0: # la force résultante est vers la droite
for piece in Vab:
piece.coords = piece.coords[0], piece.coords[1] + 1
piece.coords = [piece.coords[0], piece.coords[1] + 1]
self.tour_effectué = True
else:
print('vous ne pouvez pas effectuer cette poussée: vous navez pas assez de force de poussée')
......@@ -239,10 +239,10 @@ class Animal(Piece, metaclass=ABCMeta):
if self.car() == 'R':
self.coords = -2, self.numero
self.coords = [-2, self.numero]
self.orientation='d'
else:
self.coords = 6, self.numero
self.coords =[ 6, self.numero]
self.orientation = 'g'
self.tour_effectué = True
......@@ -315,7 +315,7 @@ class Animal(Piece, metaclass=ABCMeta):
# def pousser(self, orientation):
class Elephant(Animal):
......
......@@ -6,6 +6,7 @@ from pieces import Piece, Montagne, Animal, Elephant, Rhinoceros
from joueur import Joueur, Theo, Pauline,IA
class Plateau(list):
num_partie=0 #variable de classe permettant de compter le nombre de plateaux générés et donc le nombre de parties jouées
"""classe décrivant le tableau de jeu, on commencera par l'initer
avec de grandes dimensions, puis il faudra le réduire à 25 cases """
......@@ -40,6 +41,13 @@ class Plateau(list):
self.joueur2=joueur2
self.partie_finie=False # devient true si une montagne sort
f = open("historique des parties.txt", mode="w") #on l'ouvre en write pour écraser la partie d'avant
f.write('NOUVELLE PARTIE \n')
f.close()
Plateau.num_partie+=1
......@@ -152,6 +160,7 @@ class Plateau(list):
winner=piece
bool=True
self.partie_finie = True
break
if m.coords[1]==5: #la montagne est sortie du plateau
......@@ -169,12 +178,18 @@ class Plateau(list):
if bool==True and winner.car()=='R':
print('partie finie, le vainqueur est', self.joueur2(self).nom)
print('la partie est finie, le vainqueur est', self.joueur2(self).nom)
f = open("historique des parties.txt", mode="a")
f.write('la partie est finie, le vainqueur est {0} \n \n \n \n'.format( self.joueur2(self).nom))
f.close()
if bool== True and winner.car()=='E' :
print ('partie finie, le vainqueur est', self.joueur1(self).nom)
f = open("historique des parties.txt", mode="a")
f.write('la partie est finie, le vainqueur est {0} \n \n \n \n '.format(self.joueur1(self).nom))
f.close()
......@@ -191,7 +206,6 @@ class Plateau(list):
def jouer(self):
self.initialiserPlateau()
bool=True
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment