edit: reworked how constants are defined
This commit is contained in:
@ -6,10 +6,6 @@ console_input::console_input(std::istream &cin):
|
|||||||
in{cin} {}
|
in{cin} {}
|
||||||
|
|
||||||
game_command console_input::get_command() {
|
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;
|
std::string cmd;
|
||||||
in >> cmd;
|
in >> cmd;
|
||||||
game_command tmp;
|
game_command tmp;
|
||||||
@ -17,15 +13,15 @@ game_command console_input::get_command() {
|
|||||||
if (cmd == "q")
|
if (cmd == "q")
|
||||||
return game_command_terminate;
|
return game_command_terminate;
|
||||||
else if (cmd == "u")
|
else if (cmd == "u")
|
||||||
return (game_command)((tmp = get_direction(cmd, COMMANDS,
|
return (game_command)((tmp = get_direction(cmd)) ==
|
||||||
COMMANDS_CNT)) == game_command_panic
|
game_command_panic
|
||||||
? tmp : tmp - move_north + apply_north);
|
? tmp : tmp - move_north + apply_north);
|
||||||
else if (cmd == "a")
|
else if (cmd == "a")
|
||||||
return (game_command)((tmp = get_direction(cmd, COMMANDS,
|
return (game_command)((tmp = get_direction(cmd)) ==
|
||||||
COMMANDS_CNT)) == game_command_panic
|
game_command_panic
|
||||||
? tmp : tmp - move_north + attack_north);
|
? tmp : tmp - move_north + attack_north);
|
||||||
else // is just moving
|
else // is just moving
|
||||||
return get_direction(cmd, COMMANDS, COMMANDS_CNT);
|
return get_direction(cmd);
|
||||||
|
|
||||||
return game_command_pass;
|
return game_command_pass;
|
||||||
}
|
}
|
||||||
|
@ -6,10 +6,6 @@ file_input::file_input(std::ifstream &&ifs):
|
|||||||
in{std::move(ifs)} {}
|
in{std::move(ifs)} {}
|
||||||
|
|
||||||
game_command file_input::get_command() {
|
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;
|
std::string cmd;
|
||||||
in >> cmd;
|
in >> cmd;
|
||||||
game_command tmp;
|
game_command tmp;
|
||||||
@ -17,15 +13,15 @@ game_command file_input::get_command() {
|
|||||||
if (cmd == "q")
|
if (cmd == "q")
|
||||||
return game_command_terminate;
|
return game_command_terminate;
|
||||||
else if (cmd == "u")
|
else if (cmd == "u")
|
||||||
return (game_command)((tmp = get_direction(cmd, COMMANDS,
|
return (game_command)((tmp = get_direction(cmd)) ==
|
||||||
COMMANDS_CNT)) == game_command_panic
|
game_command_panic
|
||||||
? tmp : tmp - move_north + apply_north);
|
? tmp : tmp - move_north + apply_north);
|
||||||
else if (cmd == "a")
|
else if (cmd == "a")
|
||||||
return (game_command)((tmp = get_direction(cmd, COMMANDS,
|
return (game_command)((tmp = get_direction(cmd)) ==
|
||||||
COMMANDS_CNT)) == game_command_panic
|
game_command_panic
|
||||||
? tmp : tmp - move_north + attack_north);
|
? tmp : tmp - move_north + attack_north);
|
||||||
else // is just moving
|
else // is just moving
|
||||||
return get_direction(cmd, COMMANDS, COMMANDS_CNT);
|
return get_direction(cmd);
|
||||||
|
|
||||||
return game_command_pass;
|
return game_command_pass;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
#include "input.h"
|
#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)
|
for (int i = 0; i < COMMANDS_CNT; ++i)
|
||||||
if (str == COMMANDS[i] &&
|
if (str == COMMANDS[i] &&
|
||||||
i >= game_command::move_north &&
|
i >= game_command::move_north &&
|
||||||
|
@ -9,7 +9,6 @@ public:
|
|||||||
virtual game_command get_command() = 0;
|
virtual game_command get_command() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
game_command get_direction(std::string &str, const char *COMMANDS[],
|
game_command get_direction(std::string &str);
|
||||||
const int COMMANDS_CNT);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user