edit: reworked how constants are defined

This commit is contained in:
2024-07-04 23:22:41 -04:00
parent e55be26b27
commit 325a1d1350
4 changed files with 18 additions and 22 deletions

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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 &&

View File

@ -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