private ESTAT_JOC EsGuanyador(int r, int c) { // 0 1 2 3 4 // X X x X O // O O x O O // O O O O O // O O O O O // O O O O O CASELLA player = tauler[r, c]; //r c r c r c r c int[,] direccions = { { 0, 1 }, { 1, 0 }, { 1, 1 }, { 1, -1 } }; // 0 1 // 1 0 // 1 1 // 1 -1 for (int d = 0; d < direccions.GetLength(0); d++) { int seguidesPositiu = scanner(r, c, player, direccions[d, 0], direccions[d, 1]); int seguidesNegatiu = scanner(r, c, player, -direccions[d, 0], -direccions[d, 1]); if (seguidesPositiu + seguidesNegatiu - 1 == INLINE) { return(ESTAT_JOC.WIN); } } if (casellesPlenes == N * N) { //empat return(ESTAT_JOC.TIE); } return(ESTAT_JOC.TO_BE_CONTINUED); }
int scanner(int r, int c, CASELLA player, int dr, int dc) { int seguides = 0; while (c >= 0 && r >= 0 && c < N && r < N && tauler[r, c] == player) { r += dr; c += dc; seguides++; } return(seguides); }
private void gameOverWin(CASELLA c) { gameOverAsync("Has guanyat!", "Felicitats player " + c.ToString()); }