예제 #1
0
 static void Main(string[] args)
 {
     Console.WriteLine("FACULDADE DE TECNOLOGIA DA ZONA SUL\n");
     Console.WriteLine("ANÁLISE E DESENVOLVIMENTO DE SISTEMAS\n");
     Console.WriteLine("TRABALHO DE INTERLIGÊNCIA ARTIFICIAL\n");
     Console.WriteLine("***********************************");
     Console.WriteLine("Robô do Jogo da Forca");
     Console.WriteLine("Este algoritmo analisa a letra com maior probabilidade de existir na palavra que você digitar abaixo para tentar advinhar qual é esta palavra");
     Console.WriteLine("Digite a palavra que será usada no jogo: \n");
     string word = Console.ReadLine();
     Console.WriteLine("\nDigite quantas tentativas o Algoritmo vai ter para descobrir a palavra digitada: ");
     int tentativas = Convert.ToInt32(Console.ReadLine());
     Game game = new Game(tentativas);
     game.Play(word);
 }
예제 #2
0
        //logica do jogo
        public void Play(string inputedWord)
        {
            //retira acentos
            string newWord = Robo.RemoveAcento(inputedWord);

            //instancia um objeto da classe algoritmo
            Robo myPC = new Robo(newWord);

            //
            Word w = new Word(newWord);

            while (true)
            {
                Console.WriteLine("---COMEÇOU o JOGO DA FORCA !!---\n");
                Console.WriteLine("O Robô poderá errar no máximo {0} vezes\n", MaxErrors);

                int errors = 0;

                //armazena as letras tentadas
                HashSet<char> triedLetters = new HashSet<char>();

                while (!w.Finished && errors < MaxErrors)
                {
                    //exibe a propriedade palavra parcial do objeto w da classe word
                    Console.WriteLine("___");
                    Console.WriteLine("|  |");
                    Console.WriteLine("|  O");
                    Console.WriteLine("|");
                    Console.WriteLine(w.PartialWord);
                    Console.WriteLine("Erros = {0}", errors);
                    Thread.Sleep(4000);
                    //roda a função do algoritmo que analisa a palavra a ser jogada
                    string letter = myPC.TryLetter().ToString();

                    //Solicita a letra
                    Console.WriteLine("O computador irá jogar uma letra...");
                    Thread.Sleep(2000);
                    Console.WriteLine("Letra jogada: {0}\n", letter);
                    Thread.Sleep(2000);

                    if (triedLetters.Contains(letter[0]))
                    {
                        Console.WriteLine("A letra {0} já foi jogada\n", letter);
                        continue;
                    }
                    else
                    {
                        triedLetters.Add(letter[0]);
                    }

                    bool found = w.Guess(letter[0], myPC);

                    if (found)
                    {
                        //Se encontrou, mostra a mensagem
                        Console.WriteLine("Robô: Parabéns pra mim! Encontrei uma letra!\n");
                    }
                    else
                    {
                        //se nao encontrou, aumenta os erros e exibe mensagem
                        errors++;
                        char c = Convert.ToChar(letter);
                        myPC.LetrasJogadasErradas.Add(c);
                        Console.WriteLine("Robô: Droga! Errei =/ \n");
                    }
                }

                //se o loop acabou, é porque o computador achou a palavra ou acabou suas tentativas

                string Option = null;

                //testa porque o loop acabou - pelo numero de erros ou por acerto do algoritmo
                if (errors < MaxErrors)
                {

                    //se acertou, exibe mensagem parabenizando
                    Console.WriteLine(@"\o/");
                    Console.WriteLine(@" |");
                    Console.WriteLine(@"/ \");
                    Console.WriteLine(w.PartialWord);
                    Console.WriteLine("Erros = {0}", errors);
                    Console.WriteLine("\nO Algoritmo conseguiu adivinhar a palavra({0})! =) \nDeseja testar o algoritmo novamente? (S/N) ", w.CompleteWord);
                    //recebe a opção do usuario
                    Option = Console.ReadLine();
                }
                else
                {
                    //se for por erros, exibe mensagem
                    myPC.VerificaSeConhecePalavra(w.CompleteWord);
                    Console.WriteLine("\nO algoritmo de análise não foi capaz de advinhar a palavra, que era: {0}. \nDeseja testar o algoritmo novamente? (S/N)", w.CompleteWord);
                    //recebe a opção do usuario
                    Option = Console.ReadLine();
                }

                if (Option.Length > 0 && (Option[0] == 's' || Option[0] == 'S'))
                {
                    Console.WriteLine("Ok, vamos testar novamente o Algoritmo!!");
                    Console.WriteLine("Digite uma nova palavra:");
                    string novaPalavra = Console.ReadLine();
                    Console.WriteLine("\nDigite quantas tentativas o Algoritmo vai ter para descobrir a palavra digitada: ");
                    int tentativas = Convert.ToInt32(Console.ReadLine());
                    Option = null;
                    Game game = new Game(tentativas);
                    game.Play(novaPalavra);
                }
                else
                {
                    Console.WriteLine("Até a próxima!!");
                    break;
                }
            }
        }