/
RedResistance
/
wonders
Обзор
Документация
Войти
/
RedResistance
/
wonders
Код
Запросы
2
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
console_strategy.cpp
60 строк
2 KB
Domovoi-Kuzma
рефактор
12 июл 2026, 12:44
12 июл 2026, 12:44
8d5786d
Код
Авторство
О чём код?
#include <iostream> #include "console_strategy.h" using namespace std; ConsoleStrategy::ConsoleStrategy(PlayerIndex pi): my_pi(pi), ui(pi){ } ChoiceResult ConsoleStrategy::choose_card(const HandChoiceView& hand) { ui.prompt(Msg::ChooseCard); ui.print_passing_hand(hand); while (true) { std::string cmd = ui.read_token(); if (cmd == "help") { return { ShowGameState, 0 }; } if (cmd == "points") { return { ShowScores, 0 }; } if (!std::all_of(cmd.begin(), cmd.end(), ::isdigit)) { ui.prompt(Msg::InvalidChoice); continue; } int idx = std::stoi(cmd); if (idx >= 0 && idx < hand.cards.size()) return { ChoiseMade, idx }; ui.prompt(Msg::InvalidChoice); } } ChoiceResult ConsoleStrategy::choose_usage(const CardUsageView& options) { ui.prompt(Msg::ChooseUsage); ui.print_usage_options(options); while (true) { std::string cmd = ui.read_token(); if (cmd == "help") { return { ShowGameState, 0 }; } if (cmd == "points") { return { ShowScores, 0 }; } if (!std::all_of(cmd.begin(), cmd.end(), ::isdigit)) { ui.prompt(Msg::InvalidChoice); continue; } int idx = std::stoi(cmd); if (idx >= 0 && idx < options.allowed_actions.size()) return { ChoiseMade, idx }; ui.prompt(Msg::InvalidChoice); } } void ConsoleStrategy::notify_game_state(std::shared_ptr<const GameStateView> state) { ui.print_game_state(*state); } void ConsoleStrategy::notify_scores(std::shared_ptr<const GameStateView> state) { //ui.show_scores(*state); }