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

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	joueur.py
parents 1937f497 04d6a904
""
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_()
......@@ -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
......
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
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