Loading controller/levelController.py +1 −2 Original line number Diff line number Diff line Loading @@ -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...") Loading controller/menuController.py +3 −0 Original line number Diff line number Diff line Loading @@ -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) Loading view/gameButton.py→view/levelButton.py +7 −10 Original line number Diff line number Diff line Loading @@ -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) Loading view/menu.py +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 Loading @@ -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() Loading @@ -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() Loading @@ -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() Loading view/menuWidget.py +14 −18 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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()) Loading Loading @@ -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 Loading Loading @@ -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) Loading Loading
controller/levelController.py +1 −2 Original line number Diff line number Diff line Loading @@ -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...") Loading
controller/menuController.py +3 −0 Original line number Diff line number Diff line Loading @@ -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) Loading
view/gameButton.py→view/levelButton.py +7 −10 Original line number Diff line number Diff line Loading @@ -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) Loading
view/menu.py +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 Loading @@ -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() Loading @@ -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() Loading @@ -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() Loading
view/menuWidget.py +14 −18 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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()) Loading Loading @@ -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 Loading Loading @@ -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) Loading