Example #1
0
 def test_game_loop_character_move_then_quit(self, mock_stdout, mock_input, mock_die, mock_move_character):
     with self.assertRaises(SystemExit):
         test_character = Character('Test', 20, [1, 3], 0)
         save_game(test_character)
         game_loop(test_character)
     expected_stdout = "Quitting so soon..?"
     self.assertIn(expected_stdout, mock_stdout.getvalue())
Example #2
0
 def test_game_loop_incorrect_input(self, mock_stdout, mock_input):
     with self.assertRaises(SystemExit):
         test_character = Character('Test', 10, [1, 3], 0)
         save_game(test_character)
         game_loop(test_character)
         expected_stdout = "Do you want to play again"
         self.assertIn(expected_stdout, mock_stdout.getvalue())
Example #3
0
 def test_game_loop_character_move_hit_boundary(self, mock_stdout, mock_input, mock_move_character):
     with self.assertRaises(SystemExit):
         test_character = Character('Test', 10, [1, 3], 0)
         save_game(test_character)
         game_loop(test_character)
     expected_stdout = "You find yourself in a dark house"
     self.assertIn(expected_stdout, mock_stdout.getvalue())
Example #4
0
 def test_save_game(self):
     test_character = Character('Test_save', 10, [1, 3], 0)
     save_game(test_character)
     test_file = 'Test_save.json'
     with open(test_file) as file_object:
         test_stats = json.load(file_object)
         self.assertEqual(['Test_save', 10, [1, 3], 0], [test_stats['name'], test_stats['health'],
                          test_stats['coordinates'], test_stats['kills']])
     do_not_save(test_character)
Example #5
0
 def test_load_game(self):
     test_character = Character('Test_load', 10, [1, 3], 0)
     save_game(test_character)
     test_load_character = load_game('Test_load')
     self.assertEqual(['Test_load', 10, [1, 3], 0], [
         test_load_character.get_name(),
         test_load_character.get_health(),
         test_load_character.get_coordinate(),
         test_load_character.get_kill_count()
     ])
     do_not_save(test_character)
Example #6
0
 def test_create_character_saved_file_found(self, mock_input):
     expected_test_character = Character('Bob_Old', 7, [2, 4], 1)
     save_game(expected_test_character)
     actual_character = create_character()
     self.assertEqual(expected_test_character.get_name(),
                      actual_character.get_name())
     self.assertEqual(expected_test_character.get_health(),
                      actual_character.get_health())
     self.assertEqual(expected_test_character.get_coordinate(),
                      actual_character.get_coordinate())
     self.assertEqual(expected_test_character.get_kill_count(),
                      actual_character.get_kill_count())
     do_not_save(actual_character)
Example #7
0
 def test_start_game_start_new_game(self, mock_input, mock_character):
     test_character = Character('Kevin', 10, [1, 3], 0)
     save_game(test_character)
     actual_character = comp_1510_a1.start_game()
     self.assertEqual(test_character.get_name(),
                      actual_character.get_name())
     self.assertEqual(test_character.get_health(),
                      actual_character.get_health())
     self.assertEqual(test_character.get_coordinate(),
                      actual_character.get_coordinate())
     self.assertEqual(test_character.get_kill_count(),
                      actual_character.get_kill_count())
     do_not_save(test_character)
Example #8
0
 def test_existing_character_detected_load(self):
     expected_test_character = Character('Peter', 10, [1, 3], 0)
     save_and_load.save_game(expected_test_character)
     actual_character = character_creation.existing_character_detected(
         'Peter', 'L')
     self.assertEqual(expected_test_character.get_name(),
                      actual_character.get_name())
     self.assertEqual(expected_test_character.get_health(),
                      actual_character.get_health())
     self.assertEqual(expected_test_character.get_coordinate(),
                      actual_character.get_coordinate())
     self.assertEqual(expected_test_character.get_kill_count(),
                      actual_character.get_kill_count())
     save_and_load.do_not_save(expected_test_character)
Example #9
0
 def test_start_game_start_load_game(self, mock_stdout, mock_input):
     test_character = Character('Kevin', 10, [1, 3], 0)
     save_game(test_character)
     actual_character = comp_1510_a1.start_game()
     expected_stdout = 'I see you could not resist your lust for blood.'
     self.assertIn(expected_stdout, mock_stdout.getvalue())
     self.assertEqual(test_character.get_name(),
                      actual_character.get_name())
     self.assertEqual(test_character.get_health(),
                      actual_character.get_health())
     self.assertEqual(test_character.get_coordinate(),
                      actual_character.get_coordinate())
     self.assertEqual(test_character.get_kill_count(),
                      actual_character.get_kill_count())
     do_not_save(test_character)
Example #10
0
def create_character():
    """Create a character.

    An instance of the class 'Character' will be created and returned.
    PARAM: N/A
    PRECONDITION: This function is only called when player decides to start a new game.
    POSTCONDITION: An instance of the class 'Character' will be returned.
    RETURN: If saved file corresponding to the chosen username is not found or the current saved file with the same
    username is overwritten return a new instance of the class 'Character'. If there is an existing saved file with
    the same name as the chosen username, return that character as the instance.
    """
    print(
        '\n"Finally..a new soul dares to don the mask of Michael Myers. \nYou have big shoes to fill young'
        ' one..only those with a taste for blood \nare worthy of this mask...now tell '
        'me...what is your name?"\n')
    name = input("Enter your name:\n").title().strip()
    try:
        while True:
            with open(name + '.json'):
                answer = input(
                    "\nThere is already a saved file with this name, enter 'W' to overwrite the current "
                    "file or 'L' to load the saved game. (W / L)\n").title(
                    ).strip()
                # Warns a player if a saved file under the same name already exists
                my_char = existing_character_detected(name, answer)
                # Overwrites existing character with a new character if "answer = 'W'"
                # Loads existing character if "answer = 'L'"
                return my_char
    except FileNotFoundError:
        # If no saved files were detected
        my_char = Character(name, 10, [1, 3], 0)
        save_and_load.save_game(my_char)
        # Create a new .json file for the new character.
        print(
            "\n-------------------------------------------------------------------------------\n"
        )
        print("My...my name is...")
        print(my_char.name + "...")
        dialogue_and_scripts.intro_script(my_char)
        # Prints the intro dialogue script for a new character.
        return my_char
Example #11
0
 def test_do_not_save(self):
     test_character = Character('Test_do_not_save', 10, [1, 3], 0)
     save_game(test_character)
     do_not_save(test_character)
     test_loaded_character = load_game('Test_do_not_save')
     self.assertEqual(False, test_loaded_character)
 def test_choose_to_save_wrong_input(self, mock_stdout, mock_input):
     test_character = Character('Test_do_not_save', 10, [1, 3], 0)
     save_game(test_character)
     choose_to_save(test_character)
     expected_stdout = 'That is not a valid command.'
     self.assertIn(expected_stdout, mock_stdout.getvalue())
 def test_choose_to_save_no(self, mock_input):
     test_character = Character('Test_do_not_save', 10, [1, 3], 0)
     save_game(test_character)
     choose_to_save(test_character)
     test_loaded_character = load_game('Test_do_not_save')
     self.assertEqual(False, test_loaded_character)