void PlayNRounds(int n){ #ifdef _WIN32 system("cls"); #elif defined(__linux__) system("clear"); #endif int score; Game myGame; bool isGameOver; dir_e dir; gotoXY(5,0); std::cout<<"Previous"; gotoXY(35,0); std::cout<<"Current (Hint: "<<myGame.getHint()<<")"; myGame.printGrid(35,2); if(myGame.isGameOver(score)) myGame.reset(); Grid myGrid; for(int i = 0;i < n;i++){ isGameOver = false; while(!isGameOver){ //while((dir = getDirFromKeyboard()) == INVALID); myGame.getCurrentGrid(myGrid); dir=computeDir(myGrid, myGame.getHint()); gotoXY(5,10); std::cout<<dirToStr(dir); myGame.printGrid(5,2); myGame.insertDirection(dir); gotoXY(50,0); std::cout<<myGame.getHint(); isGameOver = myGame.isGameOver(score); myGame.printGrid(35,2); } myGame.printGrid(35,2); if(i < n - 1) myGame.reset(); gotoXY(0,15); printf(" Round: %d \n", i+1); printf(" Score: %d \n", score); } }
int main(int argc, char** argv) { MatchingContext context; char* boardArr = argv[1]; char* bonusArr = argv[2]; int row, col; for(row = 0; row < BOARD_SIZE; row++) { for(col = 0; col < BOARD_SIZE; col++) { int index = row * BOARD_SIZE + col; context.board[row][col] = boardArr[index]; context.bonus[row][col] = atoi_single_digit(bonusArr[index]); } } char* tilesArr = argv[3]; int i, j; for(i = 0; i < NUM_TILES; i++) { for(j = 0; j < TILE_SIZE; j++) { context.tiles[i][j] = tilesArr[i * TILE_SIZE + j]; } } context.playerColor = argv[4][0]; context.lowerBound = parseInt(argv[5]); context.upperBound = parseInt(argv[6]); context.midPoint = (context.upperBound + context.lowerBound) / 2; int len = NUM_TILES * 2; for(i = 0; i < len; i++) { context.bestMove[i] = -1; } context.bestScore = -1; context.bestScoreDiff = 2488320 * 3; findMoves(&context, 0); for(i = 0; i < NUM_TILES; i++) { printf("%d %d :: %d %d %s\n", context.bestMove[2 * i], context.bestMove[2 * i + 1], context.bestMove[2 * i] / BOARD_SIZE, context.bestMove[2 * i] % BOARD_SIZE, dirToStr(context.bestMove[2 * i + 1])); } printf("Score : %d\n", context.bestScore); return 0; }