From 325a1d1350547bb53b725f62b3dd1bfdb59a42c1 Mon Sep 17 00:00:00 2001 From: Peisong Xiao Date: Thu, 4 Jul 2024 23:22:41 -0400 Subject: [PATCH] edit: reworked how constants are defined --- src/console_input.cc | 14 +++++--------- src/file_input.cc | 14 +++++--------- src/input.cc | 9 +++++++-- src/input.h | 3 +-- 4 files changed, 18 insertions(+), 22 deletions(-) diff --git a/src/console_input.cc b/src/console_input.cc index f56ffa5..213d888 100644 --- a/src/console_input.cc +++ b/src/console_input.cc @@ -6,10 +6,6 @@ console_input::console_input(std::istream &cin): in{cin} {} game_command console_input::get_command() { - const char *COMMANDS[] = { - "q", "no", "so", "ea", "we", "ne", "nw", "se", "sw", "u", "a" - }; - const int COMMANDS_CNT = 11; std::string cmd; in >> cmd; game_command tmp; @@ -17,15 +13,15 @@ game_command console_input::get_command() { if (cmd == "q") return game_command_terminate; else if (cmd == "u") - return (game_command)((tmp = get_direction(cmd, COMMANDS, - COMMANDS_CNT)) == game_command_panic + return (game_command)((tmp = get_direction(cmd)) == + game_command_panic ? tmp : tmp - move_north + apply_north); else if (cmd == "a") - return (game_command)((tmp = get_direction(cmd, COMMANDS, - COMMANDS_CNT)) == game_command_panic + return (game_command)((tmp = get_direction(cmd)) == + game_command_panic ? tmp : tmp - move_north + attack_north); else // is just moving - return get_direction(cmd, COMMANDS, COMMANDS_CNT); + return get_direction(cmd); return game_command_pass; } diff --git a/src/file_input.cc b/src/file_input.cc index 2fb83d6..900ef5a 100644 --- a/src/file_input.cc +++ b/src/file_input.cc @@ -6,10 +6,6 @@ file_input::file_input(std::ifstream &&ifs): in{std::move(ifs)} {} game_command file_input::get_command() { - const char *COMMANDS[] = { - "q", "no", "so", "ea", "we", "ne", "nw", "se", "sw", "u", "a" - }; - const int COMMANDS_CNT = 11; std::string cmd; in >> cmd; game_command tmp; @@ -17,15 +13,15 @@ game_command file_input::get_command() { if (cmd == "q") return game_command_terminate; else if (cmd == "u") - return (game_command)((tmp = get_direction(cmd, COMMANDS, - COMMANDS_CNT)) == game_command_panic + return (game_command)((tmp = get_direction(cmd)) == + game_command_panic ? tmp : tmp - move_north + apply_north); else if (cmd == "a") - return (game_command)((tmp = get_direction(cmd, COMMANDS, - COMMANDS_CNT)) == game_command_panic + return (game_command)((tmp = get_direction(cmd)) == + game_command_panic ? tmp : tmp - move_north + attack_north); else // is just moving - return get_direction(cmd, COMMANDS, COMMANDS_CNT); + return get_direction(cmd); return game_command_pass; } diff --git a/src/input.cc b/src/input.cc index d5636ee..f7ec28b 100644 --- a/src/input.cc +++ b/src/input.cc @@ -1,7 +1,12 @@ #include "input.h" -game_command get_direction(std::string &str, const char *COMMANDS[], - const int COMMANDS_CNT) { + +const char *COMMANDS[] = { + "no", "so", "ea", "we", "ne", "nw", "se", "sw" +}; +const int COMMANDS_CNT = 11; + +game_command get_direction(std::string &str) { for (int i = 0; i < COMMANDS_CNT; ++i) if (str == COMMANDS[i] && i >= game_command::move_north && diff --git a/src/input.h b/src/input.h index c47cc4d..1c72513 100644 --- a/src/input.h +++ b/src/input.h @@ -9,7 +9,6 @@ public: virtual game_command get_command() = 0; }; -game_command get_direction(std::string &str, const char *COMMANDS[], - const int COMMANDS_CNT); +game_command get_direction(std::string &str); #endif