Commit b34db6f1 authored by Aurelien Dufour's avatar Aurelien Dufour
Browse files

debut jeux mots de dyck <=> arbre planaire

parent f5a63841
Loading
Loading
Loading
Loading
+44 −0
Original line number Diff line number Diff line
from controller.levelController import LevelController
from model.GameEnum import GameEnum
from model.levelDyckWordToBinaryTree import LevelDyckWordToBinaryTree
from model.levelDyckWordToPlanarTree import LevelDyckWordToPlanarTree
from view.dyckWordToBinaryTreeGui import DyckWordToBinaryTreeGui
from view.dyckWordToPlanarTreeGui import DyckWordToPlanarTreeGui
from view.launcherGame import LauncherGame


class DyckWordToPlanarTree(LevelController):
    def __init__(self, menuController):
        super().__init__(menuController)
        self.level = LevelDyckWordToPlanarTree(1)

        self.launcher = LauncherGame(GameEnum.DYCK_WORD_TO_PLANAR_TREE)
        self.launcher.levelButton.clicked.connect(self.displayLevels)
        self.launcher.beginButton.clicked.connect(self.launchLevel)
        self.launcher.demoButton.clicked.connect(self.demo)

        self.menuController.menu.displayLauncher(self.launcher)

    def launchLevel(self):
        self.levelGui = DyckWordToPlanarTreeGui(self)
        self.levelGui.okButton.clicked.connect(self.nextLevel)
        self.levelGui.cancelButton.clicked.connect(self.sameLevel)
        self.levelGui.shortCutAction.triggered.connect(self.nextLevel)
        self.menuController.menu.displayLevel(self.levelGui)

    def addNode(self, index: int, nodeType: str):
        if self.level.checkTree(index, nodeType):
            self.levelGui.treeView.drawTree()
            if self.level.finished():
                self.levelGui.finish()
        else:
            self.levelGui.error(index, nodeType)








+20 −8
Original line number Diff line number Diff line
from controller.binaryTreeToDyckWord import BinaryTreeToDyckWord
from controller.binaryTreeToPlanarTree import BinaryTreeToPlanarTree
from controller.dyckWordToPlanarTree import DyckWordToPlanarTree
from controller.planarTreeToBinaryTree import PlanarTreeToBinaryTree
from controller.planarTreeToDyckWord import PlanarTreeToDyckWord
from model.GameEnum import GameEnum
from controller.dyckWordToBinaryTree import DyckWordToBinaryTree
from view.menu import Menu
@@ -19,24 +21,34 @@ class MenuController:
        self.menu.menuAction.triggered.connect(self.diaplayMenu)
        for gameButton in self.menu.gameButtons:
            if gameButton.game == GameEnum.DYCK_WORD_TO_BINARY_TREE:
                gameButton.clicked.triggered.connect(self.on_DyckWordToBinaryTree_Button_Released)
                gameButton.clicked.triggered.connect(self.on_DyckWordToBinaryTree_Button_Pressed)
            elif gameButton.game == GameEnum.BINARY_TREE_TO_DYCK_WORD:
                gameButton.clicked.triggered.connect(self.on_binaryTreeToDyckWord_Button_Released)
                gameButton.clicked.triggered.connect(self.on_binaryTreeToDyckWord_Button_Pressed)
            elif gameButton.game == GameEnum.BINARY_TREE_TO_PLANAR_TREE:
                gameButton.clicked.triggered.connect(self.on_binaryTreeToPlanarTree_Button_Released)
                gameButton.clicked.triggered.connect(self.on_binaryTreeToPlanarTree_Button_Pressed)
            elif gameButton.game == GameEnum.PLANAR_TREE_TO_BINARY_TREE:
                gameButton.clicked.triggered.connect(self.on_planarTreeToBinaryTree_Button_Released)
                gameButton.clicked.triggered.connect(self.on_planarTreeToBinaryTree_Button_Pressed)
            elif gameButton.game == GameEnum.PLANAR_TREE_TO_DYCK_WORD:
                gameButton.clicked.triggered.connect(self.on_PlanarTreeToDyckWord_Button_Pressed)
            elif gameButton.game == GameEnum.DYCK_WORD_TO_PLANAR_TREE:
                gameButton.clicked.triggered.connect(self.on_DyckWordToPlanarTree_Button_Pressed)

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

    def on_binaryTreeToDyckWord_Button_Released(self):
    def on_binaryTreeToDyckWord_Button_Pressed(self):
        self.game = BinaryTreeToDyckWord(self)

    def on_binaryTreeToPlanarTree_Button_Released(self):
    def on_binaryTreeToPlanarTree_Button_Pressed(self):
        self.game = BinaryTreeToPlanarTree(self)

    def on_planarTreeToBinaryTree_Button_Released(self):
    def on_planarTreeToBinaryTree_Button_Pressed(self):
        self.game = PlanarTreeToBinaryTree(self)

    def on_PlanarTreeToDyckWord_Button_Pressed(self):
        self.game = PlanarTreeToDyckWord(self)

    def on_DyckWordToPlanarTree_Button_Pressed(self):
        self.game = DyckWordToPlanarTree(self)

+36 −0
Original line number Diff line number Diff line
from controller.levelController import LevelController
from model.GameEnum import GameEnum
from model.levelPlanarTreeToDyckWord import LevelPlanarTreeToDyckWord
from view.launcherGame import LauncherGame
from view.planarTreeToDyckWordGui import PlanarTreeToDyckWordGui


class PlanarTreeToDyckWord(LevelController):
    def __init__(self, menuController):
        super().__init__(menuController)
        self.level = LevelPlanarTreeToDyckWord(1)

        self.launcher = LauncherGame(GameEnum.PLANAR_TREE_TO_DYCK_WORD)
        self.launcher.levelButton.clicked.connect(self.displayLevels)
        self.launcher.beginButton.clicked.connect(self.launchLevel)
        self.launcher.demoButton.clicked.connect(self.demo)

        self.menuController.menu.displayLauncher(self.launcher)

    def launchLevel(self):
        self.levelGui = PlanarTreeToDyckWordGui(self)
        self.levelGui.okButton.clicked.connect(self.nextLevel)
        self.levelGui.cancelButton.clicked.connect(self.sameLevel)
        self.levelGui.shortCutAction.triggered.connect(self.nextLevel)
        self.menuController.menu.displayLevel(self.levelGui)










+2 −0
Original line number Diff line number Diff line
@@ -9,4 +9,6 @@ class GameEnum(Enum):
    DYCK_WORD_TO_BINARY_TREE = 1
    BINARY_TREE_TO_PLANAR_TREE = 2
    PLANAR_TREE_TO_BINARY_TREE = 3
    DYCK_WORD_TO_PLANAR_TREE = 4
    PLANAR_TREE_TO_DYCK_WORD = 5
+42 −0
Original line number Diff line number Diff line
from model.level import Level
from model.levelEnum import getTreeDyckWordToPlanarTree
from model.node import IncompleteNode, planarTreeToBinaryTree
from model.tree import Tree


class LevelDyckWordToPlanarTree(Level):
    def __init__(self, index):
        super().__init__(index)
        self.answer = getTreeDyckWordToPlanarTree(index)
        self.tree = None
        self.score = None
        self.initialize()

    def nextLevel(self):
        return LevelDyckWordToPlanarTree(self.index + 1)

    def error(self):
        if self.score >= 20:
            self.score -= 20

    def addNode(self, index: int, nodeType: str):
        self.tree.root.addNode(index, nodeType)

    def checkTree(self, index: int, nodeType: str):
        copyTree = self.tree.copyTree()
        copyTree.completeNode(index, nodeType)
        copyTree = Tree(planarTreeToBinaryTree(copyTree.root))
        print(copyTree.root)
        if self.answer.root.checkNodeBis(copyTree.root):
            self.tree.completeNode(index, nodeType)
            return True
        else:
            return False

    def initialize(self):
        self.score = 100
        self.tree = Tree(IncompleteNode([]))

    def finished(self):
        root = planarTreeToBinaryTree(self.tree.root)
        return self.answer.root.isEqual(root)
Loading