edit: reworked how constants are defined
This commit is contained in:
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 &&
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user