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
f72d12b8
Commit
f72d12b8
authored
May 23, 2021
by
Théo BOUTEMY
Browse files
Merge remote-tracking branch 'origin/master'
# Conflicts: # joueur.py
parents
1937f497
04d6a904
Changes
3
Hide whitespace changes
Inline
Side-by-side
Monappli.py
0 → 100644
View file @
f72d12b8
""
import
sys
from
PyQt5
import
QtGui
,
QtCore
,
QtWidgets
,
uic
from
interface
import
Ui_Siam
from
pieces
import
Piece
from
table_de_jeu
import
Plateau
# l'approche par héritage simple de la classe QMainWindow (même type de notre fenêtre
# créée avec QT Designer. Nous configurons après l'interface utilisateur
# dans le constructeur (la méthode init()) de notre classe
class
MonAppli
(
QtWidgets
.
QMainWindow
):
def
__init__
(
self
):
super
().
__init__
()
self
.
ui
=
uic
.
loadUi
(
'C:/Users/33651/siam1/siam.ui'
,
self
)
self
.
painter
=
QtGui
.
QPainter
()
self
.
ui
.
plateau
.
paintEvent
=
self
.
paintEvent
# "dessine_moi" se traduit par paintEvent
#self.resize(9,9)
self
.
ui
.
bouton_pousser
.
clicked
.
connect
(
self
.
pousser
)
self
.
ui
.
bouton_entrer
.
clicked
.
connect
(
self
.
entrer
)
self
.
ui
.
bouton_entrerp
.
clicked
.
connect
(
self
.
entrer_en_poussant
)
self
.
ui
.
bouton_tourner
.
clicked
.
connect
(
self
.
changement_orientation
)
self
.
ui
.
bouton_sortit
.
clicked
.
connect
(
self
.
sortir
)
self
.
ui
.
bouton_deplacer
.
clicked
.
connect
(
self
.
changement_position
)
self
.
jeux
=
Plateau
(
xmax
=
self
.
ui
.
plateau
.
width
(),
ymax
=
self
.
ui
.
plateau
.
height
(),
nb_montagne
=
3
,
joueur1
=
'Theo'
,
joueur2
=
'Pauline'
)
pixmap
=
QtGui
.
QPixmap
(
"plateau9x7.PNG"
)
pal
=
QtGui
.
QPalette
()
pal
.
setBrush
(
QtGui
.
QPalette
.
Background
,
QtGui
.
QBrush
(
pixmap
))
#self.ui.plateau.lower()
#self.ui.plateau.stackUnder(self)
self
.
ui
.
plateau
.
setAutoFillBackground
(
True
)
self
.
ui
.
plateau
.
setPalette
(
pal
)
def
pousser
(
self
):
print
(
"je pousse"
)
self
.
ui
.
plateau
.
update
()
# la méthode update génère l'évènement paintEvent qui lui-même appelle la méthode draw_ecosys
self
.
jeux
.
jouer
()
# self.jeux.unTour()
def
entrer
(
self
):
print
(
"j'entre"
)
self
.
ui
.
plateau
.
update
()
self
.
jeux
.
jouer
()
def
entrer_en_poussant
(
self
):
print
(
"j'entre en poussant"
)
self
.
ui
.
plateau
.
update
()
self
.
jeux
.
jouer
()
def
changement_orientation
(
self
):
print
(
"je tourne"
)
self
.
ui
.
plateau
.
update
()
self
.
plateau
.
jouer
()
def
sortir
(
self
):
print
(
"je sors"
)
self
.
ui
.
plateau
.
update
()
self
.
plateau
.
jouer
()
def
changement_position
(
self
):
print
(
"je bouge"
)
self
.
ui
.
plateau
.
update
()
self
.
plateau
.
jouer
()
def
mousePressEvent
(
self
,
e
):
largeur_case
=
self
.
ui
.
plateau
.
width
()
//
9
hauteur_case
=
self
.
ui
.
plateau
.
height
()
//
7
# Les coordonnées du point cliqué sont e.x() et e.y()
# Transformation des coordonnées écran en coordonnées dans
# le plateau de jeu
j
=
e
.
x
()
//
largeur_case
-
4
i
=
e
.
y
()
//
hauteur_case
-
2
# Vérification
print
(
'Vous avez cliqué sur la case : '
,
(
i
,
j
))
if
e
.
button
()
==
QtGui
.
LeftButton
:
e
.
accept
()
self
.
expanded
^=
True
self
.
toggled
.
emit
(
self
)
self
.
update
()
else
:
return
QtGui
.
mousePressEvent
(
self
,
e
)
# On réaffiche
self
.
repaint
()
def
paintEvent
(
self
,
e
):
p
=
QtGui
.
QPainter
(
self
.
ui
.
plateau
)
p
.
setBrush
(
QtGui
.
QBrush
(
QtCore
.
Qt
.
SolidPattern
))
# Dessin de la grille
largeur_case
=
self
.
ui
.
plateau
.
width
()
//
9
hauteur_case
=
self
.
ui
.
plateau
.
height
()
//
7
for
i
in
range
(
10
):
p
.
drawLine
(
0
,
i
*
hauteur_case
,
self
.
width
(),
i
*
hauteur_case
)
for
i
in
range
(
8
):
p
.
drawLine
(
i
*
largeur_case
,
0
,
i
*
largeur_case
,
self
.
height
())
self
.
painter
.
begin
(
self
.
ui
.
plateau
)
# variable intermédiraire pour alléger le code
qp
=
self
.
painter
# boucle pour parcourir les pions et gérer les images (vu ci-dessus)
for
pion
in
self
.
jeux
:
if
pion
.
car
()
==
'R'
:
qp
.
setPen
(
QtCore
.
Qt
.
red
)
# définir la couleur du pinceau
qp
.
drawEllipse
(
pion
.
abscisse
,
pion
.
ordonnee
,
5
,
5
)
else
:
qp
.
setPen
(
QtCore
.
Qt
.
green
)
qp
.
drawRect
(
pion
.
abscisse
,
pion
.
ordonnee
,
5
,
5
)
# on informe le peintre qu'on a fini
self
.
painter
.
end
()
# Dessin des pions
# On parcourt la représentation du jeu et on affiche
# for i in range(3):
# for j in range(3):
# if jeu[i][j] !=0:
# if jeu[i][j] == 1:
# p.setBrush(QtGui.QColor(255, 0, 0))
# else:
# p.setBrush(QtGui.QColor(255, 255, 0))
# p.drawEllipse(j * largeur_case, i * hauteur_case,
# largeur_case, hauteur_case)
if
__name__
==
"__main__"
:
app
=
QtWidgets
.
QApplication
(
sys
.
argv
)
window
=
MonAppli
()
window
.
show
()
app
.
exec_
()
joueur.py
View file @
f72d12b8
...
...
@@ -10,7 +10,7 @@ class Joueur(metaclass = ABCMeta):
def
__init__
(
self
,
plateau
):
self
.
plateau
=
plateau
self
.
winner
=
False
@
abstractmethod
def
pieces_du_joueur
(
self
):
...
...
@@ -28,7 +28,7 @@ class Joueur(metaclass = ABCMeta):
while
not
bool
:
n
=
input
(
'quelle piece voulez-vous bouger: 0? 1? 2? 3? 4?'
)
coup
=
input
(
'quel coup souhaitez-vous faire: entrer? sortir? orientation? position? pousser?
entrer en poussant?
'
)
coup
=
input
(
'quel coup souhaitez-vous faire: entrer? sortir? orientation? position? pousser?'
)
if
coup
not
in
[
'entrer'
,
'sortir'
,
'orientation'
,
'position'
,
'pousser'
,
'entrer en poussant'
]:
print
(
'coup non reconnu'
)
...
...
@@ -41,18 +41,12 @@ class Joueur(metaclass = ABCMeta):
self
.
pieces_du_joueur
()[
n
].
entrer
()
bool
=
self
.
pieces_du_joueur
()[
n
].
tour_effectué
elif
coup
==
'sortir'
:
self
.
pieces_du_joueur
()[
n
].
tour_effectué
=
False
self
.
pieces_du_joueur
()[
n
].
sortir
()
bool
=
self
.
pieces_du_joueur
()[
n
].
tour_effectué
elif
coup
==
'entrer en poussant'
:
self
.
pieces_du_joueur
()[
n
].
tour_effectué
=
False
self
.
pieces_du_joueur
()[
n
].
entrer_en_poussant
()
bool
=
self
.
pieces_du_joueur
()[
n
].
tour_effectué
a
,
b
=
self
.
pieces_du_joueur
()[
n
].
coords
...
...
@@ -65,15 +59,22 @@ class Joueur(metaclass = ABCMeta):
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'
]:
if
i
.
car
()
in
[
'R'
,
'E'
]:
i
.
sortir
()
else
:
#c'est qu'une montagne est sortie
self
.
vainceur
=
True
print
(
'la partie est finie, le vainceur est'
,
self
)
bool
=
self
.
pieces_du_joueur
()[
n
].
tour_effectué
elif
coup
==
'sortir'
:
self
.
pieces_du_joueur
()[
n
].
tour_effectué
=
False
self
.
pieces_du_joueur
()[
n
].
sortir
()
bool
=
self
.
pieces_du_joueur
()[
n
].
tour_effectué
elif
coup
==
'orientation'
:
self
.
pieces_du_joueur
()[
n
].
tour_effectué
=
False
...
...
@@ -95,11 +96,8 @@ class Joueur(metaclass = ABCMeta):
class
Theo
(
Joueur
):
def
__init__
(
self
,
plateau
):
super
().
__init__
(
plateau
)
self
.
nom
=
'Théo'
self
.
description
=
'Théo, vous êtes les elephants, qui sont par défaut orientés vers la gauche'
self
.
nom
=
'Théo, vous êtes les elephants, qui sont par défaut orientés vers la gauche'
def
__str__
(
self
):
return
'Théo'
def
pieces_du_joueur
(
self
):
return
self
.
plateau
.
ele
...
...
@@ -107,11 +105,8 @@ class Theo(Joueur):
class
Pauline
(
Joueur
):
def
__init__
(
self
,
plateau
):
super
().
__init__
(
plateau
)
self
.
nom
=
'Pauline'
self
.
description
=
'Pauline, vous êtes les rhinoceros, qui sont par défaut orientés vers la droite'
self
.
nom
=
'Pauline, vous êtes les rhinoceros, qui sont par défaut orientés vers la droite'
def
__str__
(
self
):
return
'Pauline'
def
pieces_du_joueur
(
self
):
return
self
.
plateau
.
rhino
...
...
test.py
View file @
f72d12b8
def
test
():
a
=
int
(
input
(
'demander a '
))
print
(
a
+
1
)
import
unittest
import
math
import
numpy
as
np
from
tableau_de_jeu
import
*
from
piece
import
*
from
joueur
import
*
if
__name__
==
'__main__'
:
print
(
test
(
1
))
\ No newline at end of file
'''
'''
table_jeu1
=
Plateau
(
5
,
5
,
3
,
'theo'
,
'Pauline'
)
class
TestTableau_de_jeu
(
unittest
.
TestCase
):
def
test_init
(
self
):
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
)
# def test_initialiserPlateau(self):
# for k in range(1, 4):
# self.assertEqual(table_jeu1.initialiserPlateau().table_jeu[2, k].car(),
# 'R') # test: initialiserPlateau place bien les rochers au centre de la table
# self.assertEqual(jeu.orientation(0, 1, 'O'), None) # la case est vide
if
__name__
==
'__main__'
:
unittest
.
main
()
\ No newline at end of file
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