Commit c29ec7cb authored by Aurélien's avatar Aurélien
Browse files

ajout de la page de niveaux

parent b0d95c7f
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -9,8 +9,7 @@ class LevelController:
        pass

    def displayLevels(self):
        print("voici les niveaux")
        self.launchLevel()
        self.menuController.displayLevels(5)

    def demo(self):
        print("voici la demo...")
+3 −0
Original line number Diff line number Diff line
@@ -22,6 +22,9 @@ class MenuController:
    def displayMenu(self):
        self.menu.displayGames()

    def displayLevels(self, nbLevel):
        self.menu.displayLevels(nbLevel)

    def on_DyckWordToBinaryTree_Button_Pressed(self):
        self.game = DyckWordToBinaryTree(self)

+7 −10
Original line number Diff line number Diff line
@@ -3,21 +3,18 @@ from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt

from model.GameEnum import GameEnum


class GameButton(QWidget):
    def __init__(self, game: GameEnum):
class LevelButton(QWidget):
    def __init__(self, index: int):
        super(QWidget, self).__init__()
        self.game = game
        self.clicked = QAction()
        self.setAutoFillBackground(True)
        palette = QPalette()
        palette.setColor(self.backgroundRole(), QColor(215, 220, 255))
        self.setPalette(palette)
        """palette = QPalette()
        palette.setColor(self.backgroundRole(), QColor(255, 0, 0)) #215, 220, 255
        self.setPalette(palette)"""
        self.setStyleSheet("background-color:red")
        self.layout = QHBoxLayout()
        title = self.game.name
        label = QLabel(title)
        label = QLabel("Niveau " + str(index))
        self.layout.addWidget(label, alignment=Qt.AlignCenter)
        self.setLayout(self.layout)

+25 −43
Original line number Diff line number Diff line
import sys

from PyQt5.QtWidgets import *

from view.levelButton import LevelButton
from view.menuWidget import MenuWidget


@@ -11,32 +13,19 @@ class MyWindow(QMainWindow):
    def resizeEvent(self, e):
        self.setMaximumHeight(int(0.7 * self.width()))

    """def closeEvent(self, event):
        msgBox = QMessageBox()
        msgBox.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowTitleHint)
        noButton = QPushButton("Non")
        noButton.clicked.connect(event.ignore)
        yesButton = QPushButton("Oui")
        yesButton.clicked.connect(event.accept)
        msgBox.setWindowTitle("A bientôt!")
        msgBox.setText("Es-tu certain de vouloir quitter l'application?")
        msgBox.addButton(yesButton, QMessageBox.NoRole)
        msgBox.addButton(noButton, QMessageBox.YesRole)
        msgBox.setDefaultButton(noButton)
        msgBox.exec()"""

class Menu:
    def __init__(self, controller):
        self.controller = controller
        self.launcher = None
        self.levelGui = None
        self.gamesLayout = None
        self.gamesWidget = None
        self.levelLayout = None
        self.levelWidget = None
        self.window = MyWindow(None)
        self.window.setMinimumSize(1000, 500)
        self.window.setCentralWidget(QWidget())
        self.window.centralWidget().setStyleSheet("background: #F2F3F4")
        self.gameButtons = []
        self.levelButtons = []
        self.centralLayout = QHBoxLayout(self.window.centralWidget())
        self.paramWindow(1200, 600, "Bijamacc")
        self.displayGames()
@@ -51,31 +40,24 @@ class Menu:
        self.window.resize(width, high)
        self.window.setWindowTitle(title)

    # function to create submenus in the menubar which are linked to actions
    """def addSubMenus(self):

        # creation of submenus
        menu = self.window.menuBar().addMenu("&Menu")
        help = self.window.menuBar().addMenu("&Aide")
        info = self.window.menuBar().addMenu("&A propos")

        # we add actions to the submenu
        self.menuAction = QAction("&Menu", self.window)
        self.menuAction.triggered.connect(self.displayGames)
        self.leaveAction = QAction("&Quitter", self.window)
        self.leaveAction.triggered.connect(self.window.close)
        self.helpAction = QAction("&Aide", self.window)
        self.infoAction = QAction("&A propos", self.window)

        menu.addAction(self.menuAction)
        menu.addAction(self.leaveAction)
        help.addAction(self.helpAction)
        info.addAction(self.infoAction)"""

    def displayGames(self):
        self.removeCentralLayout()
        self.gamesWidget = MenuWidget(self.controller)
        self.centralLayout.addWidget(self.gamesWidget)
        self.levelWidget = MenuWidget(self.controller)
        self.centralLayout.addWidget(self.levelWidget)

    def displayLevels(self, nbLevels):
            self.removeCentralLayout()
            self.levelWidget = QWidget()
            self.levelLayout = QGridLayout()
            for i in range(nbLevels):
                levelGame = LevelButton(i + 1)
                self.levelButtons.append(levelGame)
                self.levelLayout.addWidget(levelGame, 0, i)
            infinityButton = LevelButton(-1)
            self.levelLayout.addWidget(infinityButton, 1, 0, 1, nbLevels)

            self.levelWidget.setLayout(self.levelLayout)
            self.centralLayout.addWidget(self.levelWidget)

    def displayLevel(self, levelGui):
        self.removeCentralLayout()
@@ -89,10 +71,10 @@ class Menu:
        self.centralLayout.addWidget(self.launcher)

    def removeCentralLayout(self):
        if self.gamesWidget is not None:
            self.centralLayout.removeWidget(self.gamesWidget)
            self.gamesWidget.deleteLater()
            self.gamesWidget = None
        if self.levelWidget is not None:
            self.centralLayout.removeWidget(self.levelWidget)
            self.levelWidget.deleteLater()
            self.levelWidget = None
        if self.levelGui is not None:
            self.centralLayout.removeWidget(self.levelGui)
            self.levelGui.deleteLater()
+14 −18
Original line number Diff line number Diff line
@@ -106,9 +106,6 @@ class MenuView(QGraphicsView):
        p2x = beginX - 0.6 * xLength
        p2y = beginY + 0.1 * self.circleSize
        self.drawArrow(beginX, beginY, endX, endY, p1x, p1y, p2x, p2y, GameEnum.DYCK_WORD_TO_PLANAR_TREE)



        beginX = self.c3x + 0.5 * self.circleSize - (sin(pi / 7) * 0.5 * self.circleSize)
        beginY = self.c3y + 0.5 * self.circleSize - (cos(pi / 7) * 0.5 * self.circleSize)
        endX = self.c1x + 0.5 * self.circleSize + (sin(pi / 5) * 0.5 * self.circleSize)
@@ -131,18 +128,17 @@ class MenuView(QGraphicsView):
        p2x = beginX + 0.1 * xLength
        p2y = beginY + 0.25 * yLength
        self.drawArrow(beginX, beginY, endX, endY, p1x, p1y, p2x, p2y, GameEnum.BINARY_TREE_TO_PLANAR_TREE)
        beginX = self.c2x + self.circleSize
        beginY = self.c2y + 0.5 * self.circleSize
        endX = self.c3x
        endY = self.c3y + 0.5 * self.circleSize
        xLength = beginX - endX
        p1x = beginX - 0.2 * xLength
        p1y = beginY + 0.1 * self.circleSize
        p2x = beginX - 0.6 * xLength
        p2y = beginY + 0.1 * self.circleSize
        beginX = self.c2x + 0.5 * self.circleSize + (cos(pi / 7) * 0.5 * self.circleSize)
        beginY = self.c2y + 0.5 * self.circleSize - (sin(pi / 7) * 0.5 * self.circleSize)
        endX = self.c3x + 0.5 * self.circleSize - (cos(pi / 7) * 0.5 * self.circleSize)
        endY = self.c3y + 0.5 * self.circleSize - (sin(pi / 7) * 0.5 * self.circleSize)
        xLength = endX - beginX
        p1x = beginX + 0.2 * xLength
        p1y = beginY - 0.1 * self.circleSize
        p2x = beginX + 0.6 * xLength
        p2y = beginY - 0.1 * self.circleSize
        self.drawArrow(beginX, beginY, endX, endY, p1x, p1y, p2x, p2y, GameEnum.PLANAR_TREE_TO_DYCK_WORD)


        self.scene().addItem(self.itemsGroup)
        self.scene().setSceneRect(self.itemsGroup.sceneBoundingRect())

@@ -453,16 +449,16 @@ class Arrow(QGraphicsItemGroup):
            path.cubicTo(p1x + offset, p1y + offset, p2x + offset, p2y + offset, endLineX + offset, endLineY)
            line2.setPath(path)

            line3 = QGraphicsLineItem(endLineX, endLineY - offset, endLineX, endLineY - 2 * offset)
            line3 = QGraphicsLineItem(endLineX - offset, endLineY, endLineX - 2 * offset, endLineY)
            line3.setPen(pen)

            line4 = QGraphicsLineItem(endLineX, endLineY + offset, endLineX, endLineY + 2 * offset)
            line4 = QGraphicsLineItem(endLineX + offset, endLineY, endLineX + 2 * offset, endLineY)
            line4.setPen(pen)

            line5 = QGraphicsLineItem(endLineX, endLineY - 2 * offset, endX, endY)
            line5 = QGraphicsLineItem(endLineX - 2 * offset, endLineY, endX, endY)
            line5.setPen(pen)

            line6 = QGraphicsLineItem(endLineX, endLineY + 2 * offset, endX, endY)
            line6 = QGraphicsLineItem(endLineX + 2 * offset, endLineY, endX, endY)
            line6.setPen(pen)
        elif game == GameEnum.BINARY_TREE_TO_PLANAR_TREE:
            endLineX = endX + 0.05 * circleSize
@@ -494,7 +490,7 @@ class Arrow(QGraphicsItemGroup):
            line6 = QGraphicsLineItem(endLineX + 2.5 * offset, endLineY + offset, endX, endY)
            line6.setPen(pen)
        else:
            endLineX = endX + 0.1 * circleSize
            endLineX = endX - 0.1 * circleSize

            line = QGraphicsPathItem()
            line.setPen(pen)