Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Théo BOUTEMY
siam
Commits
221373f7
Commit
221373f7
authored
May 25, 2021
by
Théo BOUTEMY
Browse files
tests unitaires
parent
bd477c6c
Changes
3
Hide whitespace changes
Inline
Side-by-side
joueur.py
View file @
221373f7
...
...
@@ -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
()
...
...
pieces.py
View file @
221373f7
...
...
@@ -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):
...
...
test.py
View file @
221373f7
import
unittest
import
math
import
numpy
as
np
from
table
au
_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):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment