From c6800f5cf67816c9a145ecc759dd9a1b87fceb68 Mon Sep 17 00:00:00 2001 From: BAROLLET Theo <theo.barollet@inria.fr> Date: Tue, 17 May 2022 10:53:02 +0200 Subject: [PATCH] generic level file for tutorial --- levels/tutorial/00_intro.c | 38 +++++++++++++++++++++++++--- levels/tutorial/00_intro.py | 48 ------------------------------------ levels/tutorial/run_level.py | 21 ++++++++++++++++ lib/level/level.py | 2 +- 4 files changed, 57 insertions(+), 52 deletions(-) delete mode 100755 levels/tutorial/00_intro.py create mode 100755 levels/tutorial/run_level.py diff --git a/levels/tutorial/00_intro.c b/levels/tutorial/00_intro.c index d22e9a34..791d42ad 100644 --- a/levels/tutorial/00_intro.c +++ b/levels/tutorial/00_intro.c @@ -1,8 +1,8 @@ -/* @AGDB +/* * * First two levels when entering the game. * - * GUI: only 'next' button for level 00, with 'edit' button for level 01. + * GUI only 'next' button for level 00, with 'edit' button for level 01. * * Upon succes, directly launch level 01 which is exactly the same, but with * the WOM (wise old man) or WOW midway to the exits, that talks to the player. @@ -19,11 +19,43 @@ * */ +/** @AGDB + * + * level_name: 00_intro + * program_name: 00_intro + * level_number: 0 + * + * available_commands: next edit + * + * map_height: 7 + * map_width: 12 + * + * BUG: Here describe the bug + * + **/ + #include <stdlib.h> #include <stdio.h> - +/** @AGDB + * Player status + * player_x: 3 + * player_y: 5 + * player_direction: 3 + * Map goal + * tag: #FixedExit + * exit_x: 8 + * exit_y: 5 + * + * WOWM: message_conditions player_x==6 player_y==5 near + * WOWM: visibility_conditions player_x==6 player_y==3 near + * WOWM: labels some_label + * WOWM: message Hi, stay still. You are half way to the end! + * WOWM: Try to edit the code for example by removing one forward() call + * WOWM: message :-) + * WOWM: position 6 4 + */ int player_x = 3; int exit_x = 8; diff --git a/levels/tutorial/00_intro.py b/levels/tutorial/00_intro.py deleted file mode 100755 index 2497a30e..00000000 --- a/levels/tutorial/00_intro.py +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env python3 - -from easytracker import init_tracker, PauseReasonType - -def get_player_exit(glob_vars): - return glob_vars['player_x'],glob_vars['exit_x'] - print(glob_vars) - - -tracker = init_tracker("GDB") -tracker.load_program("00_intro") - -tracker.start() - - -map_width = 10 -map_height = 5 -player_y = 3 -exit_y = 3 - -top_line = '+' + '-'*map_width + '+' -mid_line ='|' + ' '*map_width + '|' -bot_line = top_line - -def show_map(player_x, exit_x): - print(top_line) - for h in range(map_height+2): - if h == player_y: - line = '|' + ' '*(player_x-1) + '@' - if player_x != exit_x: - line += ' '*(exit_x - player_x -1) + '>' - line += ' '*(map_width-exit_x) + '|' - print (line) - else: - print (mid_line) - print(bot_line) - pass - - - -while tracker.get_pause_reason().type != PauseReasonType.EXITED: - variables = tracker.get_global_variables() - pl,ex = get_player_exit(variables) - - show_map(pl,ex) - - input("press enter to continue") - tracker.next() diff --git a/levels/tutorial/run_level.py b/levels/tutorial/run_level.py new file mode 100755 index 00000000..11dbdc27 --- /dev/null +++ b/levels/tutorial/run_level.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 + +""" Intro level + The WOWM messages are in the source file """ + +import sys +from level.utils import generate_dict +from level.level import level + + +def main(): + if len(sys.argv) != 2: + print("Usage python run_level.py c_file.c") + return + metadata = generate_dict(sys.argv[1]) + game = level(metadata, use_curses=False) + game.run() + + +if __name__ == "__main__": + main() diff --git a/lib/level/level.py b/lib/level/level.py index 437936a5..6fc98dbb 100644 --- a/lib/level/level.py +++ b/lib/level/level.py @@ -131,7 +131,7 @@ class AbstractLevel(ABC): type = lambda x: bool(str(x)) else: type = str - self.vars[var] = type((global_variables[var])) + self.vars[var] = type((global_variables[var].value.content)) def available_wowm(self): """Return a list of WOWM coordinates.""" -- GitLab