/// <summary> /// Analiza a tentativa do jogador /// </summary> /// <param name="letra">Letra que o jogador submete ao teste</param> /// <returns>true se a letra existe na palavra, caso contrário false</returns> public bool FazTentativa(char letra) { // verifica a primeira posição onde a letra aparece na palavra int pos = palavraSorteada.IndexOf(letra); // define retorno false inicialmente bool result = false; // se o jogo não foi iniciado gera um erro if (StatusJogo != JogoForcaStatusJogo.StatusIniciado) { throw new Exception("Jogo não foi iniciado..."); } else { // se a letra não existe na palavra ou a letra já foi acertada if (pos < 0 || letrasCertas.IndexOf(letra) >= 0) { CtdErros++; if (CtdErros >= LimiteDeErros) { StatusJogo = JogoForcaStatusJogo.StatusPerdeu; } } else { CtdAcertos++; // limpa a lista contendo as posições onde a letra aparece na palavra _posicoesDaLetra.Clear(); // adiciona a letra na lista de letras acertadas letrasCertas.Add(letra); // redefine a lista de posições da palavra onde a letra aparece e // a lista de posições já acertadas for (int i = 0; i < palavraSorteada.Length; i++) { if (palavraSorteada[i] == letra) { _posicoesDaLetra.Add((byte)i); posicoesCertas[i] = 1; } } // se não existirem zeros na lista de posições acertadas, indica que o jogador venceu if (posicoesCertas.IndexOf(0) < 0) { StatusJogo = JogoForcaStatusJogo.StatusGanhou; } result = true; } } return(result); }
/// <summary> /// Inicia o jogo e inicializa as propriedades /// </summary> /// <returns>Retorna com a palavra sorteada</returns> public string Inicia() { LoadXML(); int ns = rn.Next(palavras.Count); int cod = palavras[ns].Codigo; var dicasSelecionadas = from d in dicas where (d.Codigo == cod) select new { d.Descricao }; palavraSorteada = palavras[ns].Descricao; dicasDaPalavra.Clear(); for (int i = 0; i < dicasSelecionadas.ToList().Count; i++) { this.dicasDaPalavra.Add(dicasSelecionadas.ToList()[i].Descricao); } StatusJogo = JogoForcaStatusJogo.StatusIniciado; if (posicoesCertas != null) { posicoesCertas.Clear(); } for (int i = 0; i < palavraSorteada.Length; i++) { posicoesCertas.Add(0); } if (_posicoesDaLetra != null) { _posicoesDaLetra.Clear(); } _posicoesDaLetra = new List <byte>(); CtdDicas = 0; LimiteDeDicas = 3; CtdAcertos = 0; CtdErros = 0; LimiteDeErros = 6; letrasCertas.Clear(); return(palavraSorteada); }