Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
}