///////////////////////////////////////////////////////////////////////////// // main function ///////////////////////////////////////////////////////////////////////////// int main() { std::cout << CVersion::GetCopyright(); CResultSet rs; std::vector<std::string> vecName; CResultSetCUI rscui(rs, vecName); rscui.MainLoop(std::cin, std::cout); return 0; }
//////////////////////////////////////////////////////////////////////////// // Process commands //////////////////////////////////////////////////////////////////////////// int CPredictionCUI::ProcessCommand(const char *pszCommand, const char *pszParameters, std::istream &in, std::ostream &out) { enum { IDC_Help, IDC_Results, IDC_Players, IDC_Elo, IDC_StdDev, IDC_Simulations, IDC_Rounds, IDC_LossScore, IDC_DrawScore, IDC_WinScore, IDC_Multiplier, IDC_Simulate }; switch (ArrayLookup(pszCommand, tszCommands)) { case IDC_Help: /////////////////////////////////////////////////////////// CConsoleUI::ProcessCommand(pszCommand, pszParameters, in, out); out << "Prediction commands\n"; out << "~~~~~~~~~~~~~~~~~~~\n"; out << "results ......... open interface to define players and results\n"; out << "players ......... list players\n"; out << "elo n [x] ....... get[set] elo of player number n\n"; out << "stddev n [x] .... get[set] standard deviation of player number n\n"; out << '\n'; out << "simulations [n] . get[set] number of simulations\n"; out << "rounds [n] ...... get[set] number of (double) rounds\n"; out << "lossscore [n] ... get[set] score obtained when losing\n"; out << "drawscore [n] ... get[set] score obtained when drawing\n"; out << "winscore [n] .... get[set] score obtained when winning\n"; out << "multiplier [x] .. get[set] score multiplier\n"; out << '\n'; out << "simulate [n]..... run simulations (n = rng seed)\n"; break; case IDC_Results: //////////////////////////////////////////////////////// { // // Open a rscui to get a list of players and results // CResultSetCUI rscui(rs, vecName, this); rscui.MainLoop(in, out); // // Find player ratings and variances in ercui // velo.resize(vecName.size()); vStdDev.resize(vecName.size()); for (unsigned i = 0; i < vecName.size(); i++) { velo[i] = 0; vStdDev[i] = 1000; for (int j = ercui.vecName.size(); --j >= 0;) if (ercui.vecName[j] == vecName[i]) { velo[i] = ercui.bt.GetElo(j); vStdDev[i] = std::sqrt(vbtvariance[j]); } } } break; case IDC_Players: //////////////////////////////////////////////////////// { out << std::setw(3) << "Num" << ' '; out << std::setw(20) << "Name" << ' '; out << std::setw(8) << "Elo" << ' '; out << std::setw(8) << "Std.Dev." << '\n'; for (unsigned i = 0; i < vecName.size(); i++) { out << std::setw(3) << i << ' '; out << std::setw(20) << vecName[i] << ' '; out << std::setw(8) << velo[i] << ' '; out << std::setw(8) << vStdDev[i] << '\n'; } out << "(" << vecName.size() << " players)\n"; } break; case IDC_Elo: //////////////////////////////////////////////////////////// { std::istringstream is(pszParameters); unsigned Player = 0; is >> Player; if (Player < velo.size()) { is >> velo[Player]; out << velo[Player] << '\n'; } } break; case IDC_StdDev: ///////////////////////////////////////////////////////// { std::istringstream is(pszParameters); unsigned Player = 0; is >> Player; if (Player < vStdDev.size()) { is >> vStdDev[Player]; out << vStdDev[Player] << '\n'; } }