def test_generate_random_exit(self):
        laby = Labyrinth(4)
        laby.generate_labyrinth()

        e_x, e_y = laby.generate_random_exit()

        self.assertEqual((e_x == 0 or e_x == 8) or (e_y == 8 or e_y == 0),
                         True)
    def test_generate_labyrinth_and_export(self):
        laby = Labyrinth(4)
        laby.generate_labyrinth()
        export = laby.export_labyrinth()

        print(export.count("*"))
        print(export.count("S"))
        print(export.count("T"))
        self.assertEqual(export.count("S"), 1)
        self.assertEqual(export.count("T"), 1)
        self.assertEqual(export.count("M"), 31)
        self.assertEqual(export.count("*"), 11)
示例#3
0
    def test_get_current_cell(self):
        labyrinth = Labyrinth(4)
        player_pos_x, player_pos_y = labyrinth.generate_labyrinth()
        player = Player(int(player_pos_x), int(player_pos_y))

        self.assertEqual(isinstance(player.get_current_cell(labyrinth), Cell),
                         True)
示例#4
0
    def test_load(self):
        cmd = LoadGame()
        labyrinth = Labyrinth(4)
        player_pos_x, player_pos_y = labyrinth.generate_labyrinth()
        player = Player(int(player_pos_x), int(player_pos_y))

        self.assertEqual(cmd.get_command_tag(), "load")
        self.assertEqual(cmd.get_args_count(), 1)
示例#5
0
class Game:

    def __init__(self):
        print("Welcome to the Labyrinth Game")

    def initialize_game(self):
        """ Initialize the game by asking to choose to create a new game or to load a previous one."""
        game_init_method = ""
        while game_init_method != "load" and game_init_method != "new":
            game_init_method = input("Do you want to load or start a new game ? [load/new]: ")

        if game_init_method == "new":
            labyrinth_size = ""
            while (not labyrinth_size.isnumeric()) or int(labyrinth_size) < 4 or int(labyrinth_size) > 10:
                labyrinth_size = input("Please enter labyrinth size (4 to 10) :")
            labyrinth_size = int(labyrinth_size)

            self.__labyrinth = Labyrinth(labyrinth_size)
            player_pos_x, player_pos_y = self.__labyrinth.generate_labyrinth()
            self.__player = Player(int(player_pos_x), int(player_pos_y))
            bear_y, bear_x = self.__labyrinth.get_bear_coord()
            self.__bear = Bear(int(bear_x), int(bear_y))

        else:
            success = False
            while success != True:
                self.__player = Player(0, 0)
                self.__labyrinth = Labyrinth(4)
                filename = input("Enter the filename (without the extension): ")
                try:
                    success = GameLoader().load_game([filename], self.__player, self.__labyrinth)
                    print("loaded successfully")
                except:
                    print("error while loading, verify the file name.")

    def start(self):
        """Starts the game loop"""
        command_manager = CommandManager()
        finished = False
        message = ""
        args = []
        cmd = None
        try:
            while not finished:
                user_input = input("$> ")

                cmd, args, message = command_manager.parse_user_input(user_input)
                if cmd == None:
                    print(message)
                    continue
                (finished, message) = CommandManager.eval_command(cmd, args, self.__labyrinth, self.__player)
                self.__bear.move_random(self.__labyrinth)
                if message != "": print(message)
            print("End of Game !")
        except:
            print("Unexpected error:", sys.exc_info()[0])
示例#6
0
    def test_quit(self):
        cmd = Quit()
        labyrinth = Labyrinth(4)
        player_pos_x, player_pos_y = labyrinth.generate_labyrinth()
        player = Player(int(player_pos_x), int(player_pos_y))

        self.assertEqual(cmd.get_command_tag(), "quit")
        self.assertEqual(cmd.get_args_count(), 0)

        finished, message = cmd.evaluate([], labyrinth, player)
        self.assertEqual(finished, True)
        self.assertEqual(message, "Finished")
示例#7
0
    def test_show(self):
        cmd = ShowLabyrinth()
        labyrinth = Labyrinth(4)
        player_pos_x, player_pos_y = labyrinth.generate_labyrinth()
        player = Player(int(player_pos_x), int(player_pos_y))

        self.assertEqual(cmd.get_command_tag(), "show")
        self.assertEqual(cmd.get_args_count(), 0)

        won, message = cmd.evaluate([], labyrinth, player)
        self.assertEqual(won, False)
        self.assertEqual(message, "labyrinth shown")
示例#8
0
    def test_go_right(self):
        cmd = GoRight()
        labyrinth = Labyrinth(4)
        player_pos_x, player_pos_y = labyrinth.generate_labyrinth()
        player = Player(int(player_pos_x), int(player_pos_y))

        self.assertEqual(cmd.get_command_tag(), "go-right")
        self.assertEqual(cmd.get_args_count(), 0)

        won, message = cmd.evaluate([], labyrinth, player)
        self.assertEqual(isinstance(won, bool), True)
        self.assertEqual(isinstance(message, str), True)
    def test_treasure_execution(self):
        cell_treasure = CellTreasure()
        labyrinth = Labyrinth(4)
        player_pos_x, player_pos_y = labyrinth.generate_labyrinth()
        player = Player(int(player_pos_x), int(player_pos_y))
        x, y = find_treasure(labyrinth)
        player.set_pos(x, y)

        print(has_treasure(labyrinth))
        self.assertEqual(has_treasure(labyrinth), True)
        cell_treasure.execute_action(labyrinth, player)
        self.assertEqual(has_treasure(labyrinth), False)
        self.assertEqual(isinstance(player.get_objects()[0], Treasure), True)
    def test_eval_command(self):
        command_manager = CommandManager()
        labyrinth = Labyrinth(4)
        player_pos_x, player_pos_y = labyrinth.generate_labyrinth()
        player = Player(int(player_pos_x), int(player_pos_y))
        finished, message = command_manager.eval_command(
            Quit(), [], labyrinth, player)
        self.assertEqual(finished, True)
        self.assertEqual(message, "Finished")

        finished, message = command_manager.eval_command(
            Quit(), ["a"], labyrinth, player)
        self.assertEqual(finished, False)
        self.assertEqual(message,
                         "Invalid number of args. Expected: 0, got: 1")
    def test_initialize_special_cells(self):
        laby = Labyrinth(4)
        laby.generate_labyrinth()
        self.assertEqual(len(laby.initialize_special_cells()), 5)

        laby = Labyrinth(8)
        laby.generate_labyrinth()
        self.assertEqual(len(laby.initialize_special_cells()), 6)

        laby = Labyrinth(10)
        laby.generate_labyrinth()
        self.assertEqual(len(laby.initialize_special_cells()), 7)