int main(int argc, char* argv[]) { Game game; game.Initialize(); srand(time(NULL)); for (int i = 1; i < argc; ++i) { if (argv[i][0] == '-') { argIsValid = false; CheckIntArguments (argv[i], "sleep", game.settings.sleepTime); CheckIntArguments (argv[i], "eval_round", game.settings.repeatTime); CheckIntArguments (argv[i], "eval_print_length", game.settings.printLength); CheckBoolArguments(argv[i], "print", game.settings.isPrint); CheckBoolArguments(argv[i], "rand_first", game.settings.isRandFirst); CheckBoolArguments(argv[i], "normal", game.settings.isNormal); CheckBoolArguments(argv[i], "eval_enable", game.settings.isEval); CheckStringArguments(argv[i], "file", game.settings.savePath); if (!argIsValid) { printf("Error: Unknown argument %s\n", argv[i]); exit(1); } } else { int ID = atoi(argv[i]); AI_Map::iterator it = game.aiMap.find(ID); if (it != game.aiMap.end()) { game.playerIDList.push_back(ID); } else { printf("ID: %d does not exist!\n", ID); exit(1); } } } if (!game.settings.isEval) { if (game.playerIDList.size() != 2) { printf("We need two IDs for a non-evaluation game!\n"); exit(1); } else { game.SetGamerAI(game.playerIDList[0], game.playerIDList[1]); NodeType result = game.Play(game.blackAI, game.whiteAI); if (result == Black) { printf("%s Wins! AI: \"%s\" beat AI: \"%s\"\n", blackChar, game.blackAI.name, game.whiteAI.name); } else if (result == White) { printf("%s Wins! AI: \"%s\" beat AI: \"%s\"\n", whiteChar, game.whiteAI.name, game.blackAI.name); } } } else { game.Evaluate(); } return 0; }
int main(int argc, char* argv[]) { Game game; game.Initialize(); for (int i = 1; i < argc; ++i) { if (argv[i][0] == '-') { argIsValid = false; CheckIntArguments (argv[i], "sleep", game.settings.sleepTime); CheckIntArguments (argv[i], "eval_round", game.settings.repeatTime); CheckIntArguments (argv[i], "eval_print_length", game.settings.printLength); CheckIntArguments (argv[i], "seed", game.settings.seed); CheckBoolArguments(argv[i], "print", game.settings.isPrint); CheckBoolArguments(argv[i], "rand_first", game.settings.isRandFirst); CheckBoolArguments(argv[i], "normal", game.settings.isNormal); CheckBoolArguments(argv[i], "eval_enable", game.settings.isEval); CheckBoolArguments(argv[i], "keep_seed", game.settings.isKeepSeed); CheckBoolArguments(argv[i], "test_enable", game.settings.isTest); CheckStringArguments(argv[i], "file", game.settings.savePath); CheckStringArguments(argv[i], "test_file", game.settings.testFile); CheckStringArguments(argv[i], "test_folder", game.settings.testFolder); if (!argIsValid) { printf("Error: Unknown argument %s\n", argv[i]); exit(1); } } else { int ID = atoi(argv[i]); AI_Map::iterator it = game.aiMap.find(ID); if (it != game.aiMap.end()) { game.playerIDList.push_back(ID); } else { printf("ID: %d does not exist!\n", ID); exit(1); } } } if (game.settings.seed == 0) { game.settings.seed = (int)time(NULL); } srand(game.settings.seed); if (game.settings.isTest) { if (game.playerIDList.size() != 1) { printf("We need exactly 1 AI in test mode!\n"); exit(1); } game.SetGamerAI(game.playerIDList[0], 10); if (game.settings.testFolder[0] != '\0') { game.TestFromFolder(game.settings.testFolder); printf("Total test: %d, failed: %d\n", game.testTotalNumber, game.testFailNumber); } else if (game.settings.testFile[0] != '\0') game.TestFromFile(game.settings.testFile); } else if (!game.settings.isEval) { if (game.playerIDList.size() != 2) { printf("We need two IDs for a non-evaluation game!\n"); exit(1); } else { game.SetGamerAI(game.playerIDList[0], game.playerIDList[1]); NodeType result = game.Play(game.blackAI, game.whiteAI); if (result == Black) { printf("%s Wins! AI: \"%s\" beat AI: \"%s\"\n", blackChar, game.blackAI.name, game.whiteAI.name); } else if (result == White) { printf("%s Wins! AI: \"%s\" beat AI: \"%s\"\n", whiteChar, game.whiteAI.name, game.blackAI.name); } } if (game.settings.isKeepSeed) { printf("Seed is %d\n", game.settings.seed); } } else { game.Evaluate(); } return 0; }