diff --git a/agdbentures b/agdbentures index de3c61fe3073aaa53974631524943ec4dd82fd66..184f8953c7cc9f548af9d5244672dd6ff704fa60 100755 --- a/agdbentures +++ b/agdbentures @@ -47,6 +47,69 @@ from graphic.constants import Anim if __name__ == "__main__": + + # début code de tommy + # les autres changements sont aux lignes 169, 199, 247, 249 + langue_default = "en" + debug_default = 1 + speed_default = 5 + left_default = False + win_move_default = False + level_default = None + import yaml + + # Chargement du fichier + try: + with open("config.yml", 'r') as f: + + try: + + config = yaml.safe_load(f) + + # Récupération des commandes + inputs = config["inputs"] + + # Lecture des argument + for key,value in inputs.items(): + if key == "language" and value in ["en","fr"]: + langue_default = value + if key == "debug" and value != None: + try : + int_value = int(value) + if 0 <= int_value <= 3: + debug_default = int_value + else : + print(f"la config du yaml sur la valeur : {key} ne correspond pas aux attentes.\n un entier entre 0 et 3 inclus et attendu") + except ValueError: + print(f"la config du yaml sur la valeur : {key} ne correspond pas aux attentes.\n un entier entre 0 et 3 inclus et attendu") + + if key == "speed" and value != None: + try : + int_value = int(value) + if 1 <= int_value <= 100: + speed_default = int_value + else : + print(f"la config du yaml sur la valeur : {key} ne correspond pas aux attentes.\n un entier entre 1 et 100 inclus et attendu") + except ValueError: + print(f"la config du yaml sur la valeur : {key} ne correspond pas aux attentes.\n un entier entre 1 et 100 inclus et attendu") + + if key == "left" and value == True: + left_default = True + if key == "win_move" and value == True: + win_move_default = True + if key == "level" : + level_default = value + + + except yaml.YAMLError as ex: + log.error("YAML FILE HAS SYNTAX ERROR :") + log.error(ex) + except FileNotFoundError: + log.error("\n***************************************\nle fichier de configuration n'existe pas\nLancement du jeu en mode normal\n***************************************") + + + + # fin code de tommy parser = argparse.ArgumentParser(description="Agdbentures launcher") parser.add_argument( "-v", @@ -57,7 +120,7 @@ if __name__ == "__main__": parser.add_argument( "--lang", help="Choose agdbentures language (default: [en]glish)", - default="en", + default=langue_default, choices=["en", "fr"], ) parser.add_argument("-l", "--level", help="Path to launch a single level directly") @@ -97,7 +160,7 @@ if __name__ == "__main__": "-d", type=int, choices=[0, 1, 2, 3], - default=1, + default=debug_default, help="Set debug level (0 = crit, 1 = warn, 2 = info, 3 = debug, default = 1)", ) parser.add_argument( @@ -127,7 +190,7 @@ if __name__ == "__main__": "--speed", "-s", type=int, - default=5, + default= speed_default, help="Adjust player movement speed (from 1 to 100), affecting the SPEED constant in lib/graphic/constants.py" ) @@ -174,9 +237,10 @@ if __name__ == "__main__": else: code_window_cls = VimServerWindow - if args.left: + # Tommy a fait ça peut être a améliorer + if args.left or left_default: GenServerWindow.window_alignment = 'left' - if args.no_win_move: + if args.no_win_move or win_move_default: GenServerWindow.window_alignment = 'nothing' if args.dev: @@ -194,9 +258,11 @@ if __name__ == "__main__": window = MainWindow(code_window_cls) try: - if args.level is None: + if args.level is None and level_default is None: window.run() else: + if args.level is None: + args.level = level_default if args.level[-1] == '/': # remove trailing slash lvld = args.level[:-1] else: @@ -208,6 +274,7 @@ if __name__ == "__main__": log.info(f"Directly loading level '{lvl}'") window.load_level(lvl) arcade.run() + except Exception as e: log.error(f"Exception caught in main thread: {e}") log.info(f"Remaining threads running: {threading.active_count()}") diff --git a/config.yml b/config.yml new file mode 100644 index 0000000000000000000000000000000000000000..d0d3b36dcfc275695544dd85f4382bcc3b78b14d --- /dev/null +++ b/config.yml @@ -0,0 +1,30 @@ +# pour chaque champ, il est possible de ne rien indiquer et alors le jeu prendra ses paramétres par défaut +inputs: + + # le champ langue a deux arguments possibles , ce champ permet de gérer la langue de l'affichage du jeu: "en" ou "fr" + language: fr + + # le champ debug a quatre arguments possibles, ce champ gère les affichages qui seront fait dans la console selon leur type: + # 0 -> critique + # 1 -> warning + # 2 -> info ( de plus ce mode indique les FPS) + # 3 -> debug ( de plus ce mode indique les FPS) + debug : 3 + + # le champ speed prend un argument dans un intervalle allant de 1 à 100 (inclus), ce champ régle la vitesse des animations dans le jeu + speed: 70 + + # le champ left gère la disposition dans laquelle les fenetres vont apparaître au lancement du jeu + # True -> La fenêtre du jeu va s'alligner à gauche de l'écran + # autre chose que True -> la fenêtre du jeu va se positionner au centre de l'écran + left : + + # le champ win_move gère la séparation des différentes fenetres de jeu + # True -> les fenêtres se superposent + # autre chose que True -> mode "normal" du jeu ou le jeu va apparaitre à gauche de l'éditeur de code + win_move : + + # le champ level gère le niveau qui va être chargé au lancement du jeu + # pour charger un niveau spécifique il faut donner son chemin relatif depuis le répertoire level exemple : basic/command_args pour charger le niveau command_args + # Ne rien mettre lance le jeu dans son interface "normale" ou les niveaux peuvent s'encahiner et ou le joueur peut voir sa progression + level : \ No newline at end of file diff --git a/levels/medium/pet_follow/pet_follow.py b/levels/medium/pet_follow/pet_follow.py index c4614a2911d24598460bae4f28b9beb42c4b01b4..fda2fca92386e1e5bdbd432b88e9e6f25fe5db5a 100644 --- a/levels/medium/pet_follow/pet_follow.py +++ b/levels/medium/pet_follow/pet_follow.py @@ -1,14 +1,71 @@ #!/usr/bin/env python3 from level.level_abc import AbstractLevel -from lib.loader.loader import load_level, run_level, test_level -from lib.level.objects import find_map -from lib.utils import cus +from loader.loader import load_level, run_level, test_level +from level.objects import find_map +from utils import cus +from language import lmessage, Lang class Level(AbstractLevel): def arcade_pre_run(self): pass + def pre_validation(self): + print("salut toi !!!") + if 1==1: + print("salut") + self.checker.failed( + lmessage( + { + Lang.EN: "You don't have to move the exit.", + Lang.FR: "Vous n'avez pas à bouger la sortie.", + } + ) + ) + print("hyeh") + print("je passe ici ??") + self.checker.append_inputs( + [ + 'UP', + 'UP', + 'RIGHT', + 'RIGHT', + 'RIGHT', + 'RIGHT', + 'UP', + 'UP', + 'LEFT', + 'LEFT', + 'LEFT', + 'LEFT', + 'LEFT', + 'RIGHT', + ] + ) + print("et la ??") + + pass def test(self): + import tests.lib_test as T + self.recompile_bug() + for _ in range(120): + T.cnext() + print("UP") + + + + T.expect_defeat() + self.run() + # self.restart() + + # version qui marche + self.recompile_answer() + for _ in range(120): + T.cnext() + print("UP") + + + T.expect_victory() + self.run() pass diff --git a/levels/tutorial/06_key/level.py b/levels/tutorial/06_key/level.py index a6ca3a4a9ddcb41646e0b08646961b0485d73431..9e6871430b4ca34764e3293ea2961a64d59a4a1c 100755 --- a/levels/tutorial/06_key/level.py +++ b/levels/tutorial/06_key/level.py @@ -7,7 +7,7 @@ from utils import lvl class Level(AbstractLevel): - """05_key""" + """06_key""" def arcade_custom_first_start(self): @@ -68,6 +68,7 @@ class Level(AbstractLevel): if plx != keyx or ply != keyy: self.checker.failed("Player is not on key when has_key changes") + def check_open_door(self): chk = self.checker.tracker plx = chk.get_variable_value_as_str('player_x', "int") @@ -96,6 +97,7 @@ class Level(AbstractLevel): if not self.checker.has_opened_door: self.checker.failed("Player has not opened the door") pass + def setup(self): """Set a custom map.""" @@ -110,13 +112,27 @@ class Level(AbstractLevel): # char_map = [tile for tile in str_map] # self.map.update_floor(char_map) + def test(self): import tests.lib_test as T + self.recompile_bug() - for _ in range(6): + for _ in range(53): T.cnext() + + # récupère la position de la clé + T.expect_defeat() self.run() + # self.restart() + + # version qui marche + self.recompile_answer() + for _ in range(52): + T.cnext() + + T.expect_victory() + self.run() if __name__ == "__main__":