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

tests unitaires

parent bd477c6c
......@@ -62,11 +62,6 @@ class Joueur(metaclass = ABCMeta):
elif coup=='pousser':
self.pieces_du_joueur()[n].tour_effectué=False
self.pieces_du_joueur()[n].pousser()
for i in self.plateau:
if i.coords[0]==-1 or i.coords[0]==5 or i.coords[1]==5 or i.coords[1]==-1: # une piece est alors sortie du plateau
if i.car() in['R','E']:
i.sortir()
bool= self.pieces_du_joueur()[n].tour_effectué
......@@ -85,6 +80,12 @@ class Joueur(metaclass = ABCMeta):
else:
print('numéro de piece non valide')
for i in self.plateau: #ici on s'assure qu'une piece ne soit pas accidentellement sortie du plateau de jeu, auquel cas on la remet à sa position initiale
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()
......
......@@ -41,7 +41,7 @@ class Piece(metaclass=ABCMeta):
Renvoie
s: str
La chaîne de caractères qui sera affichée via ''print''
La chaîne de caractères qui sera affichée en sortie
"""
return "{0} : position {1} orientation {2}".format(self.car(), self.coords, self.orientation)
......@@ -54,6 +54,7 @@ class Piece(metaclass=ABCMeta):
"""
class Montagne(Piece):
"""
classe spécifiant Piece pour représenter une montagne
......@@ -101,8 +102,7 @@ class Animal(Piece, metaclass=ABCMeta):
nb_montagnes = 0
for piece in self.plateau:
if piece.coords[1] == j:
H.append(
piece) # à ce stade on a la liste des pieces qui sont sur la même ligne que l'animal en question
H.append(piece) # à ce stade on a la liste des pieces qui sont sur la même ligne que l'animal en question
if piece.coords[0] == i:
V.append(piece)
......@@ -209,19 +209,17 @@ class Animal(Piece, metaclass=ABCMeta):
else:
bool = True
while bool:
i = int(input('entrer la nouvelle abscisse : '))
j = int(input('entrer la nouvelle ordonnée : '))
if (i == 0 or i == 4) or (j == 4 or j == 0):
self.coords = i, j
self.changement_orientation()
self.tour_effectué = True
i = int(input('entrer la nouvelle abscisse : '))
j = int(input('entrer la nouvelle ordonnée : '))
if (i == 0 or i == 4) or (j == 4 or j == 0):
self.coords = i, j
self.changement_orientation()
self.tour_effectué = True
bool = False
else:
print('une pièce ne peut entrer sur le plateau que sur une case extérieure : rééssayez ')
else:
print('une pièce ne peut entrer sur le plateau que sur une case extérieure : rééssayez ')
def entrer_en_poussant(self):
if self.coords[0] in [0, 1, 2, 3, 4] and self.coords[1] in [0, 1, 2, 3, 4]:
......@@ -229,21 +227,20 @@ class Animal(Piece, metaclass=ABCMeta):
else:
bool = True
while bool:
i = int(input('entrer la nouvelle abscisse : '))
j = int(input('entrer la nouvelle ordonnée : '))
if i == -1 or i == 5 or j == -1 or j == 5:
self.coords = i, j
self.changement_orientation()
self.tour_effectué = False
self.pousser()
bool = False
else:
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 ')
i = int(input('entrer la nouvelle abscisse : '))
j = int(input('entrer la nouvelle ordonnée : '))
if i == -1 or i == 5 or j == -1 or j == 5:
self.coords = i, j
self.changement_orientation()
self.tour_effectué = False
self.pousser()
if self.tour_effectué==False: #ca veut dire que la pièce n'a pas pu entrer correctement
self.sortir() #on remet la piece à sa position initiale
self.tour_effectué=False # au final le tour n'est pas joué
else:
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 ')
# if randint(0,2) == 0:
# if randint(0,2) == 0:
......@@ -262,14 +259,13 @@ class Animal(Piece, metaclass=ABCMeta):
def sortir(self):
self.tour_effectué = True
if self.car() == 'R':
self.coords = -2, self.numero
else:
self.coords = 6, self.numero
print("votre pièce %c%i est sorti du plateau" % (
self.car(), self.numero))
self.tour_effectué = True
def changement_orientation(self):
"""
......@@ -313,32 +309,33 @@ class Animal(Piece, metaclass=ABCMeta):
Lorsque la pièce change de case elle peut aussi changer d'orientation
"""
i = int(input('entrer la nouvelle abscisse : '))
j = int(input('entrer la nouvelle ordonnée : '))
bool2 = True # on vérifie que la case n'est pas déjà occupée
bool3 = False # on vérifie que le déplacement est bien réglementaire, c'est à dire sur une case adjacente, et pas en diagonale
for k in (self.plateau): # on vérifie que la case n'est pas déjà occupée
if k.coords == (i, j):
print("la case choisie est déjà prise, choisir d'autres coordonnées")
bool2 = False
break
if ((i == self.coords[0] + 1 or i == self.coords[0] - 1) and j == self.coords[1] )\
or ((j == self.coords[1] + 1 or j == self.coords[1] - 1) and i == self.coords[0]):
bool3 = True
else:
print("le déplacement n'est pas réglementaire, choisir d'autres coordonnées")
bool = True
while bool:
i = int(input('entrer la nouvelle abscisse : '))
j = int(input('entrer la nouvelle ordonnée : '))
bool2 = True # on vérifie que la case n'est pas déjà occupée
bool3 = False # on vérifie que le déplacement est bien réglementaire, c'est à dire sur une case adjacente, et pas en diagonale
for k in (self.plateau): # on vérifie que la case n'est pas déjà occupée
if k.coords == (i, j):
print("la case choisie est déjà prise, choisir d'autres coordonnées")
bool2 = False
if ((i == self.coords[0] + 1 or i == self.coords[0] - 1) and j == self.coords[1]) \
or ((j == self.coords[1] + 1 or j == self.coords[1] - 1) and i == self.coords[0]):
bool3 = True
else:
print("le déplacement n'est pas réglementaire, choisir d'autres coordonnées")
if bool2 and bool3:
self.coords = i, j
self.changement_orientation()
self.tour_effectué = True
else:
print("le déplacement n'est pas réglementaire, choisir d'autres coordonnées")
if bool2 and bool3:
self.coords = i, j
self.changement_orientation()
bool = False
self.tour_effectué = True
# def pousser(self, orientation):
......
import unittest
import math
import numpy as np
from tableau_de_jeu import *
from piece import *
import table_de_jeu as t
import pieces as p
from joueur import *
'''
'''
table_jeu1 = Plateau(5, 5, 3, 'theo', 'Pauline')
class TestTableau_de_jeu(unittest.TestCase):
class TestElephant(unittest.TestCase):
def test_var(self):
plateau = t.Plateau(xmax=5, ymax=5, nb_montagne=3, joueur1=Theo, joueur2=Pauline)
elephant1 = p.Elephant(1, 0, 'g', plateau)
elephant2 = p.Elephant(4,3, 'b', plateau)
self.assertEqual(elephant1.orientation, 'g')
self.assertEqual(elephant1.coords, [1, 0])
self.assertEqual(elephant2.orientation, 'b')
self.assertEqual(elephant2.coords, [4, 3])
def test_type(self):
plateau = t.Plateau(xmax=5, ymax=5, nb_montagne=3, joueur1=Theo, joueur2=Pauline)
elephant1 = p.Elephant(1, 0, 'g', plateau)
self.assertIsInstance(elephant1, p.Elephant)
self.assertIsInstance(elephant1, p.Animal)
an = p.Rhinoceros(4,4,'g',plateau)
self.assertNotIsInstance(an, p.Elephant)
def test_coords(self):
plateau = t.Plateau(xmax=5, ymax=5, nb_montagne=3, joueur1=Theo, joueur2=Pauline)
elephant = p.Elephant(4, 3, 'h', plateau)
rhinoceros=p.Rhinoceros(4,3,'h',plateau)
self.assertEqual(elephant.coords, rhinoceros.coords)
self.assertIsNot(elephant.coords, rhinoceros.coords)
self.assertIs(elephant.coords, elephant.coords)
class TestPlateau(unittest.TestCase):
def test_init(self):
table_jeu1 = t.Plateau(5, 5, 3, Theo, Pauline)
table_jeu2 = t.Plateau(9, 6, 5, Theo, Pauline)
self.assertEqual(table_jeu1.xmax, 5)
self.assertEqual(table_jeu1.ymax, 5)
self.assertEqual(table_jeu1.nb_montagne, 3)
self.assertIsInstance(table_jeu1.initialiserPlateau().ele, np.ndarray)
self.assertEqual(table_jeu2.xmax, 9)
self.assertEqual(table_jeu2.ymax, 6)
self.assertEqual(table_jeu2.nb_montagne, 5)
# self.assertIsInstance(table_jeu1.initialiserPlateau().ele, np.ndarray)
# def test_initialiserPlateau(self):
# for k in range(1, 4):
......
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