Commit 87d2ba4f authored by Pauline LEYRIT's avatar Pauline LEYRIT
Browse files

boite de dialogue

parent 1b160964
""
#
#
# import sys
# from PyQt5 import QtGui, QtCore, QtWidgets, uic
#
# 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('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()
# #i, j = self.mousePressEvent
#
# print (i,j)
# # if self.ui.plateau.mousePressEvent[0] in [0,1,2,3,4] and self.ui.plateau.mousePressEvent[1] in [0,1,2,3,4]:
# # print ('la piece est déjà rentrée sur le plateau')
# #
# #
# # 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
# #
# # bool = False
# # else :
# # print ('une pièce ne peut entrer sur le plateau que sur une case extérieure : rééssayez ')
# #
# # print("votre pièce %c%i est entrée à la position %s, orientée vers %c" % (
# # self.car(),self.numero, self.coords, self.orientation))
#
# 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 = 36.77777778
# hauteur_case = 37.2857142
# # 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
# i = e.x() // largeur_case - 6
# j = e.y() // hauteur_case - 3
# # # Vérification
#
# # print('Vous avez cliqué sur la case : ', ((i,j))
#
# # On réaffiche
# self.repaint()
# print(i,j)
# #return [i,j]
#
# 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())
#
# # Dessin des pions
# # On parcourt la représentation du jeu et on affiche
# for i in range(5):
# p.setPen(QtCore.Qt.red)
# p.drawEllipse(0* largeur_case, (i+1) * hauteur_case,
# largeur_case, hauteur_case)
# p.setPen(QtCore.Qt.green)
# p.drawEllipse(8* largeur_case, (i+1) * hauteur_case,
# largeur_case, hauteur_case)
#
# # # 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()
#
#
#
#
# if __name__ == "__main__":
# app = QtWidgets.QApplication(sys.argv)
# window = MonAppli()
# window.show()
# sys.exit(app.exec_())
#
# from PyQt5.QtWidgets import QApplication, QMainWindow, QGraphicsScene, QPushButton, QGraphicsView, QGraphicsItem
# from PyQt5.QtGui import QBrush, QPen, QFont
# from PyQt5.QtCore import Qt
# import sys
#
#
# class Window(QMainWindow):
# def __init__(self):
# super().__init__()
#
# self.setWindowTitle("Pyside2 QGraphic View")
# self.setGeometry(300, 200, 640, 520)
#
# self.create_ui()
#
# self.show()
#
# def create_ui(self):
# button = QPushButton("Rotate - ", self)
# button.setGeometry(200, 450, 100, 50)
# button.clicked.connect(self.rotate_minus)
#
# button2 = QPushButton("Rotate + ", self)
# button2.setGeometry(320, 450, 100, 50)
# button2.clicked.connect(self.rotate_plus)
#
# scene = QGraphicsScene(self)
#
# greenBrush = QBrush(Qt.green)
# blueBrush = QBrush(Qt.blue)
#
# blackPen = QPen(Qt.black)
# blackPen.setWidth(5)
#
# ellipse = scene.addEllipse(10, 10, 200, 200, blackPen, greenBrush)
#
# rect = scene.addRect(-100, -100, 200, 200, blackPen, blueBrush)
#
# scene.addText("Codeloop.org", QFont("Sanserif", 15))
#
# ellipse.setFlag(QGraphicsItem.ItemIsMovable)
# rect.setFlag(QGraphicsItem.ItemIsMovable)
#
# self.view = QGraphicsView(scene, self)
# self.view.setGeometry(0, 0, 640, 440)
#
# def rotate_minus(self):
# self.view.rotate(-14)
#
# def rotate_plus(self):
# self.view.rotate(14)
#
#
# app = QApplication(sys.argv)
# window = Window()
# sys.exit(app.exec_())
from PyQt5.QtWidgets import *
import sys
class Window(QWidget):
def __init__(self):
QWidget.__init__(self)
layout = QGridLayout()
self.setLayout(layout)
radiobutton = QRadioButton("Australia")
radiobutton.setChecked(True)
radiobutton.country = "Australia"
radiobutton.toggled.connect(self.onClicked)
layout.addWidget(radiobutton, 0, 0)
radiobutton = QRadioButton("China")
radiobutton.country = "China"
radiobutton.toggled.connect(self.onClicked)
layout.addWidget(radiobutton, 0, 1)
radiobutton = QRadioButton("Japan")
radiobutton.country = "Japan"
radiobutton.toggled.connect(self.onClicked)
layout.addWidget(radiobutton, 0, 2)
def onClicked(self):
radioButton = self.sender()
if radioButton.isChecked():
print("Country is %s" % (radioButton.country))
layout = QGridLayout()
droite = QRadioButton("Button1")
droite.setChecked(True)
#droite.toggled.connect(lambda: self.btnstate(self.droite))
layout.addWidget(droite)
gauche = QRadioButton("Button2")
#gauche.toggled.connect(lambda: self.btnstate(self.gauche))
layout.addWidget(gauche)
self.setLayout(layout)
layout.addWidget(gauche)
self.setLayout(layout)
scene = QGraphicsScene(self)
self.view = QGraphicsView(scene, self)
self.view.setGeometry(0, 0, 640, 440)
# app = QApplication(sys.argv)
# screen = Window()
# screen.show()
# sys.exit(app.exec_())
print(-65//60)
\ No newline at end of file
......@@ -89,20 +89,6 @@ class Window(QMainWindow):
self.scene.addPixmap(self.p)
# el = QPixmap('ele.PNG') tentative de crétion de pions avec des images mais je n'arrive pas à les bouger
# label1 = QLabel(self)
# label1.setPixmap(el)
# label1.setText('ele1')
# label1.move(3000, 2000)
# scene.addWidget(label1)
#
# ele = el.scaled(70,70)
#
# # scene.addPixmap(ele)
# self.pixmap = QPixmap('ele.PNG')
# self.pixmap.setPos(*random.sample(range(-100, 100), 2))
# pixmap_item = QGraphicsPixmapItem(QPixmap('ele.PNG'))
# pixmap_item.setPos(12, 12)
elephants = QBrush(Qt.green)
rhino = QBrush(Qt.blue)
......@@ -223,19 +209,16 @@ class Window(QMainWindow):
#listes de caractère
for k in range (5):
#self.append(Elephant(5, k, 'g', self) )
self.rh.append(Rhinoceros(-2, k, 'd', self))
self.rh[k].numero = k
#self.append(el for el in self.ele)
#self.append(Rhinoceros(-1, k, 'd', self))
self.ele.append(Elephant(6, k, 'g', self))
self.ele[k].numero = k
#self.append(rhino for rhino in self.ele)
for k in range(3): # place les rochers un à un, en rangée, au milieu du plateau
self.mont.append( Montagne ( 2, k + 1, '',self))
self.mont[k].numero = k
self.pion_select = self.el1
self.pion_select_num = 1
......@@ -297,21 +280,22 @@ class Window(QMainWindow):
bool2 =True
bool3= True
print(self.joueur[self.pion_select_num - 1].coords)
[a, b] = self.joueur[int(self.pion_select_num - 1)].coords
if not -10<x<10:
if x>0:
self.joueur[self.pion_select_num - 1].coords[0] += (x//60)*x/x
a += (x//60)*x/x
else:
self.joueur[self.pion_select_num - 1].coords[0] += (x // 60) * x / x + 1 # -65//60 = 2
a += (x // 60) * x / x + 1 # -65//60 = 2
if not -10<y<10:
if y>0:
self.joueur[self.pion_select_num - 1].coords[1] += (y//60)*y/y
b += (y//60)*y/y
else:
self.joueur[self.pion_select_num - 1].coords[1] += (y // 60) * y / y + 1
b += (y // 60) * y / y + 1
self.joueur[int(self.pion_select_num - 1)].coords = [a, b]
print(self.joueur[self.pion_select_num - 1].coords)
for k in range(len(self.rh)):
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):
bool1 = False
......@@ -333,18 +317,19 @@ class Window(QMainWindow):
if not (bool1 and bool2 and bool3):
print('mouvement impossible')
[a, b] = self.joueur[int(self.pion_select_num - 1)].coords
if not -10 < x < 10:
if x > 0:
self.joueur[self.pion_select_num - 1].coords[0] -= (x // 60) * x / x
a -= (x // 60) * x / x
else:
self.joueur[self.pion_select_num - 1].coords[0] -= (x // 60) * x / x + 1 # -65//60 = 2
a -= (x // 60) * x / x + 1 # -65//60 = 2
if not -10 < y < 10:
if y > 0:
self.joueur[self.pion_select_num - 1].coords[1] -= (y // 60) * y / y
b -= (y // 60) * y / y
else:
self.joueur[self.pion_select_num - 1].coords[1] -= (y // 60) * y / y + 1
b -= (y // 60) * y / y + 1
self.joueur[int(self.pion_select_num - 1)].coords = [a, b]
self.pion_select.setPos(x0,y0)
else:
self.tourne()
......@@ -386,21 +371,24 @@ class Window(QMainWindow):
if bool and bool1:
print(x, y,'x, y')
print(self.pion_select_num - 1)
[a, b] = self.joueur[int(self.pion_select_num - 1)].coords
if not -10<x<10:
print('oui1')
if x>0:
self.joueur[self.pion_select_num - 1].coords[0] += ((x//60)*x/x)
print(self.joueur[self.pion_select_num - 1].coords[0])
a += int(((x//60)*x/x))
else:
self.joueur[self.pion_select_num - 1].coords[0] += ((x // 60) * x / x + 1) # -65//60 = 2
print(self.joueur[self.pion_select_num - 1].coords[0])
print('oui2')
a += int(((x // 60) * x / x + 1)) # -65//60 = 2
print("oui3")
if not -10<y<10:
if y>0:
self.joueur[self.pion_select_num - 1].coords[1] += (y//60)*y/y
b += int((y//60)*y/y)
else:
self.joueur[self.pion_select_num - 1].coords[1] += (y // 60) * y / y + 1
b += int((y // 60) * y / y + 1)
self.joueur[int(self.pion_select_num - 1)].coords = [a,b]
print(self.joueur[self.pion_select_num - 1].coords)
print(self.joueur[int(self.pion_select_num - 1)].coords)
bool2 = True
i = self.joueur[self.pion_select_num - 1].coords[0]
......@@ -427,6 +415,8 @@ class Window(QMainWindow):
l = 6
if self.joueur == self.rh:
l = -2
if
self.joueur[self.pion_select_num-1].coords = l, self.pion_select_num-1
self.liste_rh_qg[self.pion_select_num - 1].setFlag(QGraphicsItem.ItemIsMovable, enabled=False)
......@@ -899,6 +889,8 @@ class Window(QMainWindow):
print ('partie finie, le vainqueur est le joueur 1')
def vainqueur_vect(self):
mine_e, min_r = 10, 10
vect_e, vect_r=10, 10
......@@ -930,6 +922,16 @@ class Window(QMainWindow):
print("les éléphants gagnent")
# def continue_jeux(self):
#
# while True:
# self.joueur1()
# if self.winner = True:
# break
#
def showDialog(self):
self.txt, ok = QInputDialog.getText(self, 'input dialog', 'droite? gauche? ou demi-tour? ou rien ?')
......@@ -963,3 +965,6 @@ if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
sys.exit(app.exec_())
# coder sortir case ext, mb reprendre ori
......@@ -24,9 +24,10 @@ class Joueur(metaclass = ABCMeta):
"""
def a_son_tour(self):
def a_son_tour(self): # coder les fonctions en 2 temps pour ne pas afficher les messages d'erreur suand c l'ia
#la table de jeu appele a son tour pour effectuer un tour
bool=False
bool=False # tour effectué?
while not bool:
......@@ -44,7 +45,7 @@ class Joueur(metaclass = ABCMeta):
a, b = self.pieces_du_joueur()[n].coords[0], self.pieces_du_joueur()[n].coords[1]
if coup== 'entrer':
if coup== 'entrer': # pour savoir si c'est une case extérieure, on différencie ia et joueur (message affiché)
self.pieces_du_joueur()[n].tour_effectué=False
if self.nom=='IA':
i,j=randint(0,5),randint(0,5)
......@@ -55,13 +56,13 @@ class Joueur(metaclass = ABCMeta):
j = int(input('entrer la nouvelle ordonnée : '))
ori = input('droite? gauche? ou demi-tour? ou rien ? ')
if a in [0, 1, 2, 3, 4] and b in [0, 1, 2, 3, 4] :
if self.nom!='IA':
if a in [0, 1, 2, 3, 4] and b in [0, 1, 2, 3, 4] : #si pion dans le plateau
if self.nom!='IA': #on ne veut pas de message pour l'ia'
print('la piece est déjà rentrée sur le plateau')
else:
if (i == 0 or i == 4 and j in [0,1,2,3,4]) or ( j == 4 or j == 0 and i in [0,1,2,3,4]):
self.pieces_du_joueur()[n].entrer(i,j,ori)
else:
else: #pas sur l'extérieur
if self.nom!='IA':
print('une piece doit être rentrée par l exterieur du plateau')
bool=self.pieces_du_joueur()[n].tour_effectué
......@@ -70,10 +71,8 @@ class Joueur(metaclass = ABCMeta):
elif coup == 'sortir':
self.pieces_du_joueur()[n].tour_effectué = False
if (a in [-1, 0, 1, 2, 3, 4, 5] and b in [-1, 0, 1, 2, 3, 4, 5]):
if self.pieces_du_joueur()[n].coords[0] in [i for i in range (-1,6)] and self.pieces_du_joueur()[n].coords[1] in [i for i in range (-1,6)]: # une piece est alors sortie du plateau
self.pieces_du_joueur()[n].sortir()
if (a in [0, 4] or b in [0, 4]):
self.pieces_du_joueur()[n].sortir()
else:
if self.nom!='IA':
print("pour sortir une pièce, celle-ci doit être sur l'extérieur du plateau")
......@@ -101,7 +100,7 @@ class Joueur(metaclass = ABCMeta):
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')
bool = self.pieces_du_joueur()[n].tour_effectué
if coup == 'pousser':
elif coup == 'pousser':
self.pieces_du_joueur()[n].tour_effectué = False
if (a in [0, 1, 2, 3, 4] and b in [ 0, 1, 2, 3, 4]):
self.pieces_du_joueur()[n].pousser()
......@@ -114,7 +113,7 @@ class Joueur(metaclass = ABCMeta):
elif coup== 'orientation':
self.pieces_du_joueur()[n].tour_effectué=False
if (a in [-1, 0, 1, 2, 3, 4, 5] and b in [-1, 0, 1, 2, 3, 4, 5]):
if (a in [0, 1, 2, 3, 4] and b in [0, 1, 2, 3, 4]):
if self.nom=='IA':
ori=self.ori_possible[randint(0,4)]
else:
......@@ -149,7 +148,7 @@ class Joueur(metaclass = ABCMeta):
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()
i.sortir() # n'a pas besoin de la cond definie ici, se réfere à la fonction de pieces, sans condition sur la position
if bool and self.nom=='IA':
print('l IA a joué le coup', coup, 'sur la piece numero', n)
......
......@@ -38,7 +38,7 @@ class Plateau(list):
self.rhino = []
self.joueur1=joueur1
self.joueur2=joueur2
self.partie_finie=False
self.partie_finie=False # devient true si une montagne sort
......@@ -91,6 +91,8 @@ class Plateau(list):
s: string
La chaîne de caractères qui sera affichée via ''print''
"""
#on initialise dans les listes pas dans le plateau
# self.plateau = np.zeros([self.xmax, self.ymax], dtype=Piece)
midx, midy=self.xmax//2, self.ymax//2 # indices de la case correspondant au centre du plateau
for k in range(self.nb_montagne): # place les rochers un à un, en rangée, au milieu du plateau
......@@ -102,9 +104,6 @@ class Plateau(list):
self.ele.append(Elephant(6, k, 'g', self))
self.rhino.append(Rhinoceros(-2, k, 'd', self))
......@@ -112,9 +111,9 @@ class Plateau(list):
def unTour(self): #permet de mettre à jour les pieeces sur le plateau
for i in (self):
for i in (self): # on efface tout le plateau ( sinon redondance) pour mettre à jour
del(i)
for i in (self.mont):
for i in (self.mont): # remet les pions a leur place en conction de leur coords
self.append(i)
for i in (self.ele):
self.append(i)
......@@ -163,7 +162,7 @@ class Plateau(list):
winner=piece
bool=True
self.partie_finie = True
break
break # pour arréter dans le for
......@@ -198,15 +197,15 @@ class Plateau(list):
bool=True
# while not self.joueur1.winner :#and self.joueur2.winner==False : # il faut mettre la condition d'arret du jeu*
while bool:
self.unTour()
print(self)
self.unTour() # remet le plateau a jour
print(self) # le plateau
print('c est au tour du joueur',self.joueur1(self).description)
self.joueur1(self).a_son_tour()
print('c est au tour du joueur',self.joueur1(self).description) # self de joueur
self.joueur1(self).a_son_tour() # quel pion, fonction..
self.unTour()
self.vainqueur()
if self.partie_finie:
break
self.vainqueur() # vérifie si partie finie
if self.partie_finie: #devient true si une montagne est sortie
break # le programme s'arrete
print(self)
......@@ -229,5 +228,5 @@ class Plateau(list):
if __name__ == "__main__":
plateau = Plateau(xmax=5, ymax=5, nb_montagne=3, joueur1=Theo, joueur2=IA)
plateau = Plateau(xmax=5, ymax=5, nb_montagne=3, joueur1=Theo, joueur2=IA) # c'est ici qu'on def les joueurs
Plateau.jouer(plateau)
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