//Segunda função inteligente. public void VezIA(Jogo obj, int turno) { int posL, posC; if (IAmove(obj, turno, IA_simbolo, out posL, out posC)) { obj.tabuleiro[posL, posC] = 'O'; Console.Clear(); obj.PrintaTabuleiro(); return; } else if (IAmove(obj, turno, J_simbolo, out posL, out posC)) { obj.tabuleiro[posL, posC] = 'O'; Console.Clear(); obj.PrintaTabuleiro(); return; } IAmove(obj, turno, J_simbolo, out posL, out posC); obj.tabuleiro[posL, posC] = 'O'; Console.Clear(); obj.PrintaTabuleiro(); return; }
//Verifica a melhor posição. (Máquina) private void MelhorPosicao(Jogo obj, int linha, int coluna) { linha = -1; coluna = -1; if (linhaE == colunaE) { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (i == j) { if (obj.tabuleiro[i, j] == '-') { linha = i; coluna = j; return; } } } } } if (linhaE + colunaE == 2) { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (i + j == 2) { if (obj.tabuleiro[i, j] == '-') { linha = i; coluna = j; return; } } } } } for (int j = 0; j < 3; j++) { if (obj.tabuleiro[colunaE, j] == '-') { linha = linhaE; coluna = j; return; } } for (int j = 0; j < 3; j++) { if (obj.tabuleiro[j, colunaE] == '-') { linha = j; coluna = colunaE; return; } } }
//Função inteligente. public void IA_Turno(Jogo obj) { if (D_Primaria(obj, J_simbolo, cpuC, cpuL) || D_Primaria(obj, IA_simbolo, cpuC, cpuL)) { obj.tabuleiro[cpuL, cpuC] = 'O'; Console.Clear(); obj.PrintaTabuleiro(); return; } else if (D_Secundaria(obj, J_simbolo, cpuC, cpuL) || D_Secundaria(obj, IA_simbolo, cpuC, cpuL)) { obj.tabuleiro[cpuL, cpuC] = 'O'; Console.Clear(); obj.PrintaTabuleiro(); return; } else if (Linhas(obj, J_simbolo, 0, cpuC) || Linhas(obj, IA_simbolo, 0, cpuC)) { obj.tabuleiro[0, cpuC] = 'O'; Console.Clear(); obj.PrintaTabuleiro(); return; } else if (Linhas(obj, J_simbolo, 1, cpuC) || Linhas(obj, IA_simbolo, 1, cpuC)) { obj.tabuleiro[1, cpuC] = 'O'; Console.Clear(); obj.PrintaTabuleiro(); return; } else if (Linhas(obj, J_simbolo, 2, cpuC) || Linhas(obj, IA_simbolo, 2, cpuC)) { obj.tabuleiro[2, cpuC] = 'O'; Console.Clear(); obj.PrintaTabuleiro(); return; } else if (Colunas(obj, J_simbolo, 0, out cpuL) || Colunas(obj, IA_simbolo, 0, out cpuL)) { obj.tabuleiro[cpuL, 0] = 'O'; Console.Clear(); obj.PrintaTabuleiro(); return; } else if (Colunas(obj, J_simbolo, 1, out cpuL) || Colunas(obj, IA_simbolo, 1, out cpuL)) { obj.tabuleiro[cpuL, 1] = 'O'; Console.Clear(); obj.PrintaTabuleiro(); return; } else if (Colunas(obj, J_simbolo, 2, out cpuL) || Colunas(obj, IA_simbolo, 2, out cpuL)) { obj.tabuleiro[cpuL, 2] = 'O'; Console.Clear(); obj.PrintaTabuleiro(); return; } else { MelhorPosicao(obj, cpuL, cpuC); if (cpuL != -1 && cpuC != -1) { obj.tabuleiro[cpuL, cpuC] = 'O'; Console.Clear(); obj.PrintaTabuleiro(); return; } } }