public static void Main(string[] args) { Console.BackgroundColor = ConsoleColor.DarkGray; Console.ForegroundColor = ConsoleColor.Black; Jogo novojogo = new Jogo(); Player Jogador = new Player(); CPU IA = new CPU(); string resp = "S"; while (resp == "S") { Console.Clear(); if (resp == "S") { novojogo.CriaTabuleiro(); novojogo.PrintaTabuleiro(); int turno = 0; while (!novojogo.gameOver) { turno++; Jogador.VezJogador(novojogo); if (!novojogo.VerficiaVencedor(turno)) { turno++; IA.VezIA(novojogo, turno); novojogo.VerficiaVencedor(turno); } else { Console.Clear(); novojogo.VerficiaVencedor(turno); novojogo.PrintaTabuleiro(); } } resp = "A"; } Console.WriteLine("Fim de Jogo!\nQuer jogar novamente? S\\N"); while (resp != "S" && resp != "N") { if (resp != "S" && resp != "N") { Console.WriteLine("Responda apenas com S ou N!"); } resp = Convert.ToString(Console.ReadLine()); resp = resp.ToUpper(); } } Console.Write("Aperte qualquer tecla para continuar . . . "); Console.ReadKey(true); }
//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; }
//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; } } }