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
fe59943f
Commit
fe59943f
authored
Jun 04, 2021
by
Pauline LEYRIT
Browse files
ok
parent
d5455caa
Changes
6
Hide whitespace changes
Inline
Side-by-side
appli1.py
View file @
fe59943f
# auteur : Pauline
from
PyQt5.QtWidgets
import
*
from
PyQt5.QtGui
import
*
...
...
@@ -45,12 +45,8 @@ class Window(QMainWindow):
button_joueur1
.
setGeometry
(
720
,
0
,
100
,
50
)
# défini sa position et sa taille
button_joueur1
.
clicked
.
connect
(
self
.
joueur1
)
# lie l'action de cliquer sur le bouton à l'appel de la fonction citée
button_joueur2
=
QPushButton
(
"joueur2"
,
self
)
button_joueur2
.
setGeometry
(
720
,
70
,
100
,
50
)
button_joueur2
.
clicked
.
connect
(
self
.
joueur2
)
button_IA
=
QPushButton
(
"IA"
,
self
)
button_IA
.
setGeometry
(
720
,
14
0
,
100
,
50
)
button_IA
.
setGeometry
(
720
,
7
0
,
100
,
50
)
button_IA
.
clicked
.
connect
(
self
.
IA
)
#on définit les boutons liés aux fonctions
...
...
@@ -252,6 +248,9 @@ class Window(QMainWindow):
self
.
prochain
=
self
.
rh
# liste des pions définis dans la classe pièce, du prohain joueur (l'autre)
self
.
dernier_bouton
=
''
# permet de cconnaitre sur quel bouton le joueur a cliqué en dernier
self
.
mont_sorti
=
self
.
mont
[
0
]
# permet de reconnaitre la fin du jeux : on connaitra quelle montagne est sorti, et donc sa position
self
.
pousse
=
False
# à l'appel de pousser(), nous permet de savoir si entrer en poussant a bien eu lieu
# si ce n'est pas le cas, on remt la pièce à sa place initiale
#pour l'ia:
self
.
qui
=
'humain'
self
.
coup_possible
=
[
"déplacer"
,
"tourner"
,
"entrer"
,
"sortir"
,
"pousser"
,
"entrer en poussant"
,
]
...
...
@@ -301,20 +300,7 @@ class Window(QMainWindow):
"fonction que vous voulez lui appliquer"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
0
)
def
joueur2
(
self
):
"""
de la même façon, mais pour le cas ou le joueur joue les rhinocéros
"""
self
.
zone_txt
.
clear
()
self
.
joueur_qg
=
self
.
liste_rh_qg
self
.
joueur
=
self
.
rh
self
.
prochain
=
self
.
ele
self
.
qui
=
'humain'
self
.
texte
=
QGraphicsTextItem
(
"c'est au tour du joueur 2: les rhinocéros"
'
\n
'
"Choisissez un de vos pions avant de choisir la"
'
\n
'
"fonction que vous voulez lui appliquer"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
0
)
def
IA
(
self
):
"""
...
...
@@ -333,9 +319,9 @@ class Window(QMainWindow):
self
.
texte
.
setPos
(
0
,
0
)
self
.
a_toune
=
False
#à l'appel d'une fonction, la pièce n'a pas encore tourné
self
.
coup
=
self
.
coup_possible
[
randint
(
0
,
4
)]
print
(
self
.
coup
)
self
.
dernier_bouton
=
str
(
self
.
coup
)
self
.
coup
=
self
.
coup_possible
[
randint
(
0
,
6
)]
self
.
dernier_bouton
=
str
(
self
.
coup
)
self
.
ok
()
...
...
@@ -352,7 +338,7 @@ class Window(QMainWindow):
if
self
.
dernier_bouton
==
'déplacer'
:
if
self
.
qui
==
'ia'
:
print
(
'ia déplace'
)
self
.
pion_select_num
=
randint
(
1
,
6
)
self
.
pion_select
=
self
.
joueur_qg
[
self
.
pion_select_num
-
1
]
abs0
,
ord0
=
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
#anciennes coords avant de se déplace
...
...
@@ -379,7 +365,7 @@ class Window(QMainWindow):
x0
,
y0
=
65.5
*
(
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
[
0
]
-
(
l
)),
(
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
[
1
]
-
(
self
.
pion_select_num
-
1
)
)
*
65.5
if
self
.
qui
==
'humain'
:
x
,
y
=
self
.
pion_select
.
x
()
-
x0
,
self
.
pion_select
.
y
()
-
y0
# mouvement effectué par rapport à la dernière case
print
(
x
,
y
,
'xy'
)
else
:
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
=
[
self
.
abs
,
self
.
ord
]
x1
,
y1
=
65.5
*
(
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
[
0
]
-
(
l
)),
(
...
...
@@ -416,7 +402,7 @@ class Window(QMainWindow):
else
:
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
=
[
self
.
abs
,
self
.
ord
]
print
(
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
)
for
k
in
range
(
len
(
self
.
joueur
)):
if
(
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
==
self
.
joueur
[
k
].
coords
and
k
!=
self
.
pion_select_num
-
1
)
or
\
(
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
==
self
.
prochain
[
k
].
coords
)
\
...
...
@@ -424,35 +410,39 @@ class Window(QMainWindow):
# on vérifie que la nouvelle position ne soit pas occupée par un autre de nos pions, un des pions
# du joueur adverse, ou par une montagne
bool1
=
False
self
.
texte
=
QGraphicsTextItem
(
"Vous ne pouvez pas vous déplacer sur une case déjà occupée"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
if
self
.
qui
==
'humain'
:
#on souhaite afficher les commentaires uniquement pour l'humain, puisque
#l'ia fait de nombreux essais avant d'arriver à un coup valide
self
.
texte
=
QGraphicsTextItem
(
"Vous ne pouvez pas vous déplacer sur une case déjà occupée"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
if
((
55
<
x
<
75
or
-
75
<
x
<
-
55
)
and
-
10
<
y
<
10
)
or
((
55
<
y
<
75
or
-
75
<
y
<
-
55
)
and
-
10
<
x
<
10
):
bool2
=
True
# deplacement autorisé
if
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
[
0
]
in
[
-
2
,
-
1
,
5
,
6
]
or
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
[
1
]
in
[
-
1
,
5
]:
# le joueur a placé sa pièce hors du plateau
self
.
texte
=
QGraphicsTextItem
(
"Vous êtes hors du plateau"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
160
)
if
self
.
qui
==
'humain'
:
self
.
texte
=
QGraphicsTextItem
(
"Vous êtes hors du plateau"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
160
)
bool3
=
False
else
:
bool3
=
True
# toujour sur le plateau
else
:
self
.
texte
=
QGraphicsTextItem
(
"Vous ne pouvez pas vous déplacer ici:"'
\n
'
"veuillez vous déplacer d'une case, horizontalement"'
\n
'
"ou verticalement"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
170
)
if
self
.
qui
==
'humain'
:
self
.
texte
=
QGraphicsTextItem
(
"Vous ne pouvez pas vous déplacer ici:"'
\n
'
"veuillez vous déplacer d'une case, horizontalement"'
\n
'
"ou verticalement"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
170
)
bool2
=
False
print
(
bool1
,
bool2
,
bool3
,
'bool'
)
if
not
(
bool1
and
bool2
and
bool3
):
self
.
texte
=
QGraphicsTextItem
(
"Votre déplacement n'est pas valide: veuillez rejouer"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
230
)
if
self
.
qui
==
'humain'
:
if
self
.
qui
==
'humain'
:
self
.
texte
=
QGraphicsTextItem
(
"Votre déplacement n'est pas valide: veuillez rejouer"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
230
)
# le coup n'était pas valide : le pion reprends sa place (quil avait juste avant le coup)
# on doit réenregistrer les anciennes coordonnées dans la liste self.joueur et changer la position du widget sur le plateau
...
...
@@ -462,18 +452,18 @@ class Window(QMainWindow):
else
:
self
.
joueur
[
int
(
self
.
pion_select_num
-
1
)].
coords
=
[
abs0
,
ord0
]
print
(
self
.
joueur
[
int
(
self
.
pion_select_num
-
1
)].
coords
,
self
.
joueur
[
int
(
self
.
pion_select_num
-
1
)].
car
())
self
.
pion_select
.
setPos
(
x0
,
y0
)
# le pion retourne à sa place
if
self
.
qui
==
'ia'
:
print
(
'pas de déplacement'
)
self
.
IA
()
#le tour n'a pas marché, l'ia doit rejouer
#
if self.qui == 'ia':
#
#
self.IA() #le tour n'a pas marché, l'ia doit rejouer
else
:
self
.
tourne
()
# si le changement de position était valide, le joueur peut aussi tourner son pion
# la fonction tourne indiquera que le tour est terminé
if
self
.
a_toune
==
True
:
if
self
.
qui
==
'ia'
:
self
.
joueur1
()
#
if self.a_toune == True:
#
if self.qui == 'ia':
#
self.joueur1()
self
.
joueur_qg
[
self
.
pion_select_num
-
1
].
setFlag
(
QGraphicsItem
.
ItemIsMovable
,
enabled
=
False
)
...
...
@@ -488,7 +478,6 @@ class Window(QMainWindow):
# code similaire à celui de la fonction entrer de la classe pièce mais on change la aussi les pioons de place
if
self
.
qui
==
'ia'
:
print
(
'ia entre'
)
self
.
pion_select_num
=
randint
(
1
,
6
)
self
.
pion_select
=
self
.
joueur_qg
[
self
.
pion_select_num
-
1
]
...
...
@@ -502,10 +491,10 @@ class Window(QMainWindow):
#on intègre les nouvelles coordonnées:
x0
,
y0
=
65.5
*
(
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
[
0
]
-
(
l
)),
(
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
[
1
]
-
(
self
.
pion_select_num
-
1
))
*
65.5
[
a0
,
b0
]
=
self
.
joueur
[
int
(
self
.
pion_select_num
-
1
)].
coords
# coordonnées avant d'avoir joué
if
self
.
qui
==
'humain'
:
x
,
y
=
self
.
pion_select
.
x
()
-
x0
,
self
.
pion_select
.
y
()
-
y0
[
a0
,
b0
]
=
self
.
joueur
[
int
(
self
.
pion_select_num
-
1
)].
coords
[
a
,
b
]
=
self
.
joueur
[
int
(
self
.
pion_select_num
-
1
)].
coords
if
x
>
0
:
...
...
@@ -520,7 +509,6 @@ class Window(QMainWindow):
self
.
joueur
[
int
(
self
.
pion_select_num
-
1
)].
coords
=
[
a
,
b
]
else
:
print
(
self
.
abs
,
self
.
ord
,
"abs ord"
)
self
.
joueur
[
int
(
self
.
pion_select_num
-
1
)].
coords
=
[
self
.
abs
,
self
.
ord
]
i
=
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
[
0
]
...
...
@@ -532,42 +520,41 @@ class Window(QMainWindow):
if
(
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
==
self
.
joueur
[
k
].
coords
and
k
!=
self
.
pion_select_num
-
1
)
\
or
(
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
==
self
.
prochain
[
k
].
coords
)
or
\
(
k
<
3
and
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
==
self
.
mont
[
k
].
coords
):
print
(
'deja prise'
)
bool1
=
False
bool2
=
False
#on va vérifier que le joueur entre sur une case du bord du plateau
if
((
i
==
0
or
i
==
4
)
and
-
1
<
j
<
5
)
or
((
j
==
4
or
j
==
0
)
and
-
1
<
i
<
5
):
print
(
self
.
joueur
[
self
.
pion_select_num
-
1
].
car
(),
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
)
bool2
=
True
if
bool
and
bool1
and
bool2
:
#toutes les conditions sont vérifiées pour pouvoir entrer
self
.
tourne
()
#on ne tourne que si toutes les conditions pour entrer sont valides
#celle ci affichera que c'est la fin du tour
print
(
self
.
a_toune
,
'toune'
)
if
self
.
a_toune
==
True
:
#vérifie que la pièce a tourné une fois
if
self
.
qui
==
'ia'
:
l
=
-
2
#car l'ia joue les rhinos
x1
,
y1
=
65.5
*
(
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
[
0
]
-
(
l
)),
(
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
[
1
]
-
(
self
.
pion_select_num
-
1
)
)
*
65.5
print
(
x1
,
y1
,
'x1'
)
self
.
pion_select
.
setPos
(
x1
,
y1
)
#le tour marche, donc on peut bouger la pièce
print
(
'piece entrée'
)
self
.
joueur1
()
#l'ia a joué, au tour du joueur 1
else
:
# mouvement non valide
self
.
texte
=
QGraphicsTextItem
(
"une pièce ne peut entrer sur le plateau que sur une case extérieure,"
"si elle est déjà sur le plateau ou si la case est déjà prise : Rejouez"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
170
)
#self.joueur1() #l'ia a joué, au tour du joueur 1
else
:
# mouvement non valide
if
self
.
qui
==
'humain'
:
self
.
texte
=
QGraphicsTextItem
(
"une pièce ne peut entrer sur le plateau que sur une case extérieure,"
"si elle est déjà sur le plateau ou si la case est déjà prise : Rejouez"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
170
)
self
.
pion_select
.
setPos
(
x0
,
y0
)
#le pion retourne à sa position précéddente car le coup n'était pas valide, le joueur doir rejouer
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
=
[
a0
,
b0
]
#on réenregistre sa postion (correspondante à celle
print
(
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
)
#qu'il a sur le plateau, donc la position initiale
if
self
.
qui
==
'ia'
:
self
.
IA
()
# le tour n'a pas marché, l'ia doit rejouer
print
(
'je rejoue dans le premier cas'
)
# if self.qui == 'ia':
# self.IA() # le tour n'a pas marché, l'ia doit rejouer
...
...
@@ -579,7 +566,7 @@ class Window(QMainWindow):
l
=
-
2
if
self
.
qui
==
'ia'
:
print
(
'ia entre'
)
self
.
pion_select_num
=
randint
(
0
,
5
)
+
1
self
.
pion_select
=
self
.
joueur_qg
[
self
.
pion_select_num
-
1
]
...
...
@@ -589,20 +576,23 @@ class Window(QMainWindow):
# fonction (comme entrer en poussant dans le cas de pièces)
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
=
[
l
,
self
.
pion_select_num
-
1
]
#coordonnées initiales de la pièce
self
.
pion_select
.
setPos
(
0
,
0
)
#remet le widget à sa position initiale
self
.
texte
=
QGraphicsTextItem
(
"Votre pièce est bien sortie du plateau, au tour des {0}"
.
format
(
self
.
prochain
[
0
].
car
()))
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
if
self
.
qui
==
'ia'
:
self
.
joueur1
()
if
self
.
qui
==
'humain'
:
self
.
texte
=
QGraphicsTextItem
(
"Votre pièce est bien sortie du plateau, au tour des {0}"
.
format
(
self
.
prochain
[
0
].
car
()))
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
# if self.qui == 'ia':
# self.joueur1()
else
:
self
.
texte
=
QGraphicsTextItem
(
"vous ne pouvez sortir su plateau que si votre pion est sur une case extérieur, rejouez"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
if
self
.
qui
==
'ia'
:
self
.
IA
()
#le tour n'a pas marché, l'ia doit rejouer
if
self
.
qui
==
'humain'
:
self
.
texte
=
QGraphicsTextItem
(
"vous ne pouvez sortir su plateau que si votre pion est sur une case extérieur, rejouez"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
# if self.qui == 'ia':
# self.IA() #le tour n'a pas marché, l'ia doit rejouer
if
self
.
dernier_bouton
==
'pousser'
:
...
...
@@ -611,7 +601,7 @@ class Window(QMainWindow):
#lorsqu'elles changent de coordonnées
if
self
.
qui
==
'ia'
:
print
(
'ia entre'
)
self
.
pion_select_num
=
randint
(
0
,
5
)
+
1
self
.
pion_select
=
self
.
joueur_qg
[
self
.
pion_select_num
-
1
]
...
...
@@ -649,7 +639,7 @@ class Window(QMainWindow):
if
piece
.
coords
[
0
]
==
i
:
V
.
append
(
piece
)
# de même pour la colonne
#on fait maintenant les mêmes cas (selon l'oorientation) que dans la fonction pousser de la classe pièce
if
orientation
==
'g'
:
if
orientation
==
'g'
and
i
in
[
0
,
1
,
2
,
3
,
4
]
and
j
in
[
0
,
1
,
2
,
3
,
4
]
:
piece_gauche
=
self
.
joueur
[
self
.
pion_select_num
-
1
]
for
k
in
range
(
len
(
H
)):
# pour etre sur de ne pas louper une piece qui serait à gauche
for
piece
in
H
:
...
...
@@ -691,26 +681,30 @@ class Window(QMainWindow):
if
piece
.
coords
[
0
]
<
0
:
#une montagne est sortie du plateau : le jeu est terminé
self
.
mont_sorti
=
piece
#on enregistre quelle montagne est sorti (pour connaitre sa position)
self
.
vainqueur
()
#on appelle la fonction qui nous indiquera le gagnant
self
.
texte
=
QGraphicsTextItem
(
"Vous avez poussé, au tour des {0}"
.
format
(
self
.
prochain
[
0
].
car
()))
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
if
self
.
qui
==
'ia'
:
self
.
joueur1
()
if
self
.
qui
==
'humain'
:
self
.
texte
=
QGraphicsTextItem
(
"Vous avez poussé, au tour des {0}"
.
format
(
self
.
prochain
[
0
].
car
()))
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
# if self.qui == 'ia':
# self.joueur1()
self
.
pousse
=
True
else
:
#la force de poussée n'était pas suffisante
self
.
texte
=
QGraphicsTextItem
(
"vous ne pouvez pas effectuer cette poussée:"'
\n
'
" vous navez pas assez de force de poussée"'
\n
'
"Rejouez"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
if
self
.
qui
==
'ia'
:
self
.
IA
()
if
self
.
qui
==
'humain'
:
self
.
texte
=
QGraphicsTextItem
(
"vous ne pouvez pas effectuer cette poussée:"'
\n
'
" vous navez pas assez de force de poussée"'
\n
'
"Rejouez"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
# if self.qui == 'ia':
# self.IA()
self
.
pousse
=
False
#on réitère pour les trois autres orientations
if
orientation
==
'd'
:
if
orientation
==
'd'
and
i
in
[
0
,
1
,
2
,
3
,
4
]
and
j
in
[
0
,
1
,
2
,
3
,
4
]
:
piece_droite
=
self
.
joueur
[
self
.
pion_select_num
-
1
]
for
k
in
range
(
len
(
H
)):
for
piece
in
H
:
...
...
@@ -751,24 +745,27 @@ class Window(QMainWindow):
if
piece
.
coords
[
0
]
>
4
:
self
.
mont_sorti
=
piece
self
.
vainqueur
()
self
.
texte
=
QGraphicsTextItem
(
"Vous avez poussé, au tour des {0}"
.
format
(
self
.
prochain
[
0
].
car
()))
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
if
self
.
qui
==
'ia'
:
self
.
joueur1
()
if
self
.
qui
==
'humain'
:
self
.
texte
=
QGraphicsTextItem
(
"Vous avez poussé, au tour des {0}"
.
format
(
self
.
prochain
[
0
].
car
()))
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
# if self.qui == 'ia':
# self.joueur1()
self
.
pousse
=
True
else
:
print
(
'vous ne pouvez pas effectuer cette poussée: vous navez pas assez de force de poussée'
)
self
.
texte
=
QGraphicsTextItem
(
"vous ne pouvez pas effectuer cette poussée:"'
\n
'
" vous navez pas assez de force de poussée"'
\n
'
"Rejouez"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
if
self
.
qui
==
'ia'
:
self
.
IA
()
if
orientation
==
'h'
:
if
self
.
qui
==
'humain'
:
self
.
texte
=
QGraphicsTextItem
(
"vous ne pouvez pas effectuer cette poussée:"'
\n
'
" vous navez pas assez de force de poussée"'
\n
'
"Rejouez"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
# if self.qui == 'ia':
# self.IA()
self
.
pousse
=
False
if
orientation
==
'h'
and
i
in
[
0
,
1
,
2
,
3
,
4
]
and
j
in
[
0
,
1
,
2
,
3
,
4
]:
piece_haut
=
self
.
joueur
[
self
.
pion_select_num
-
1
]
for
k
in
range
(
len
(
V
)):
for
piece
in
V
:
...
...
@@ -809,24 +806,27 @@ class Window(QMainWindow):
if
piece
.
coords
[
1
]
<
0
:
self
.
mont_sorti
=
piece
self
.
vainqueur
()
self
.
texte
=
QGraphicsTextItem
(
"Vous avez poussé, au tour des {0}"
.
format
(
self
.
prochain
[
0
].
car
()))
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
if
self
.
qui
==
'ia'
:
self
.
joueur1
()
if
self
.
qui
==
'humain'
:
self
.
texte
=
QGraphicsTextItem
(
"Vous avez poussé, au tour des {0}"
.
format
(
self
.
prochain
[
0
].
car
()))
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
# if self.qui == 'ia':
# self.joueur1()
self
.
pousse
=
True
else
:
print
(
'vous ne pouvez pas effectuer cette poussée: vous navez pas assez de force de poussée'
)
self
.
texte
=
QGraphicsTextItem
(
"vous ne pouvez pas effectuer cette poussée:"'
\n
'
" vous navez pas assez de force de poussée"'
\n
'
"Rejouez"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
if
self
.
qui
==
'humain'
:
self
.
texte
=
QGraphicsTextItem
(
"vous ne pouvez pas effectuer cette poussée:"'
\n
'
" vous navez pas assez de force de poussée"'
\n
'
"Rejouez"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
if
self
.
qui
==
'ia'
:
self
.
IA
()
# if self.qui == 'ia':
# self.IA()
self
.
pousse
=
False
if
orientation
==
'b'
:
if
orientation
==
'b'
and
i
in
[
0
,
1
,
2
,
3
,
4
]
and
j
in
[
0
,
1
,
2
,
3
,
4
]
:
piece_haut
=
self
.
joueur
[
self
.
pion_select_num
-
1
]
for
k
in
range
(
len
(
V
)):
for
piece
in
V
:
...
...
@@ -867,22 +867,33 @@ class Window(QMainWindow):
if
piece
.
coords
[
1
]
>
4
:
self
.
mont_sorti
=
piece
self
.
vainqueur
()
self
.
texte
=
QGraphicsTextItem
(
"Vous avez poussé, au tour des {0}"
.
format
(
self
.
prochain
[
0
].
car
()))
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
if
self
.
qui
==
'ia'
:
self
.
joueur1
if
self
.
qui
==
'humain'
:
self
.
texte
=
QGraphicsTextItem
(
"Vous avez poussé, au tour des {0}"
.
format
(
self
.
prochain
[
0
].
car
()))
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
# if self.qui == 'ia':
# self.joueur1()
self
.
pousse
=
True
else
:
print
(
'vous ne pouvez pas effectuer cette poussée: vous navez pas assez de force de poussée'
)
self
.
texte
=
QGraphicsTextItem
(
"vous ne pouvez pas effectuer cette poussée:"'
\n
'
" vous navez pas assez de force de poussée"'
\n
'
"Rejouez"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
if
self
.
qui
==
'ia'
:
self
.
IA
()
if
self
.
qui
==
'humain'
:
self
.
texte
=
QGraphicsTextItem
(
"vous ne pouvez pas effectuer cette poussée:"'
\n
'
" vous navez pas assez de force de poussée"'
\n
'
"Rejouez"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
# if self.qui == 'ia':
# self.IA()
self
.
pousse
=
False
else
:
self
.
texte
=
QGraphicsTextItem
(
"vous devez être sur le plateau pour pousser"'
\n
'
"Rejouez"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
self
.
pousse
=
False
if
self
.
dernier_bouton
==
'entrer en poussant'
:
...
...
@@ -891,10 +902,11 @@ class Window(QMainWindow):
l
=
-
2
if
self
.
qui
==
'ia'
:
print
(
'ia déplace'
)
self
.
pion_select_num
=
randint
(
1
,
6
)
self
.
pion_select
=
self
.
joueur_qg
[
self
.
pion_select_num
-
1
]
abs0
,
ord0
=
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
#anciennes coords avant de se déplace
abs0
,
ord0
=
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
# anciennes coords avant de se déplacer, piur l'ia
x0
,
y0
=
65.5
*
(
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
[
0
]
-
(
l
)),
(
...
...
@@ -902,6 +914,14 @@ class Window(QMainWindow):
self
.
tourne
()
#possibilité de tourner pour se placer face à la pièce que l'on veut pousser
if
self
.
qui
==
'humain'
:
self
.
texte
=
QGraphicsTextItem
(
"cliquez sur ok pour pousser"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
180
)
if
self
.
qui
==
'humain'
:
x
,
y
=
self
.
pion_select
.
x
()
-
x0
,
self
.
pion_select
.
y
()
-
y0
# mouvement par rapport à la dernière case
#
...
...
@@ -922,12 +942,6 @@ class Window(QMainWindow):
else
:
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
=
[
self
.
abs
,
self
.
ord
]
self
.
tourne
()
#possibilité de tourner pour se placer face à la pièce que l'on veut pousser
self
.
texte
=
QGraphicsTextItem
(
"cliquez sur ok pour pousser"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
180
)
i
,
j
=
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
...
...
@@ -936,31 +950,38 @@ class Window(QMainWindow):
#face de la pièce à pousser
self
.
pousser
()
if
self
.
qui
==
'ia'
:
self
.
joueur1
()
if
self
.
pousse
==
False
:
self
.
pion_select
.
setPos
(
0
,
0
)
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
=
[
l
,
self
.
pion_select_num
-
1
]
else
:
# if self.qui == 'ia':
# self.IA()
# else:
# if self.qui == 'ia':
# self.joueur1()
self
.
texte
=
QGraphicsTextItem
(
"pour rentrer en poussant, vous devez mettre la piece sur une"'
\n
'
" case extérieure au plateau, la mettre dans la bonne orientation"'
\n
'
"et pousser : Rejouez"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
self
.
pion_select
.
setpos
(
0
,
0
)
else
:
if
self
.
qui
==
'humain'
:
self
.
texte
=
QGraphicsTextItem
(
"pour rentrer en poussant, vous devez mettre la piece sur une"'
\n
'
" case extérieure au plateau, la mettre dans la bonne orientation"'
\n
'
"et pousser : Rejouez"
)
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
150
)
self
.
pion_select
.
setPos
(
0
,
0
)
self
.
joueur
[
self
.
pion_select_num
-
1
].
coords
=
[
l
,
self
.
pion_select_num
-
1
]
self
.
joueur_qg
[
self
.
pion_select_num
-
1
].
setFlag
(
QGraphicsItem
.
ItemIsMovable
,
enabled
=
False
)
if
self
.
qui
==
'ia'
:
self
.
joueur1
()
#
if self.qui == 'ia':
#
self.joueur1()
if
self
.
dernier_bouton
==
'tourner'
:
if
self
.
qui
==
'ia'
:
self
.
tourne
()
print
(
'tourne'
)
self
.
texte
=
QGraphicsTextItem
(
"Vous avez tourné votre pièce, au tour des {0}"
.
format
(
self
.
prochain
[
0
].
car
()))
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
200
)
if
self
.
qui
==
'humain'
:
self
.
texte
=
QGraphicsTextItem
(
"Vous avez tourné votre pièce, au tour des {0}"
.
format
(
self
.
prochain
[
0
].
car
()))
self
.
zone_txt
.
addItem
(
self
.
texte
)
self
.
texte
.
setPos
(
0
,
200
)
#print("votre pièce %c%i est entrée à la position %s, orientée vers %c" % (self. self.joueur[self.pion_select_num - 1].car(), self. self.joueur[self.pion_select_num - 1].numero, self. self.joueur[self.pion_select_num - 1].coords, self. self.joueur[self.pion_select_num - 1].orientation))
def
deplacer
(
self
):
...
...
@@ -984,15 +1005,16 @@ class Window(QMainWindow):
self
.
pion_select
=
self
.
liste_rh_qg
[
i
]
self
.
pion_select_num
=
i
+
1
self
.
texte
=
QGraphicsTextItem
(
"Vous avez choisis de déplacer votre pion {0}{1}."
'
\n
'
"Vous pouvez maintenant déplacer votre pièce"
'
\n
'
"Vous pouvez la décaler d'une case horizontalement ou"
'
\n
'
"verticalement."'
\n
'
"Lorsque vous avez posé votre pion dans la case "'
\n
'