Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Mateus Martinez Rosa

C# Caça Palavras - Sorteando palavras

Recommended Posts

Fala galera, preciso fazer um jogo onde o usuário ao clicar em um botão, é exibido uma palavra aleatoriamente (usando Random) e essa palavra é exibida embaralhada para usuario e o mesmo tem que escreve a mesma corretamente e verificar se as palavras conferem...podem me ajudar, o codigo abaixo foi onde eu parei...não consio escolher a palavra aleatoriamente e muito menos embaralhar....Desde já obrigado

private void btnEscolher_Click(object sender, EventArgs e)
        {
            StreamReader ObjArquivo = new StreamReader(@"C:\Users\Sony\Google Drive\Sistemas Para Internet\2º Termo\ALC II\2º Bimestre\Trabalho Caça palavras\frutas.txt");
            Random PalavraEscolhida = new Random();

            while (ObjArquivo.EndOfStream == false)
            {
                ObjArquivo.ReadLine();
                PalavraEscolhida.Next(1, 20);
            }
            
            MessageBox.Show(PalavraEscolhida.ToString());
        }

 

Editado por Simon Viegas
Favor ler tópico e seguir orientações sobre POSTAGEM DE CÓDIGOS: http://www.clubedohardware.com.br/announcement/27-poste-seus-c%C3%B3digos-corretamente/

Compartilhar este post


Link para o post
Compartilhar em outros sites
int num = new Random().Next(1, 20);
int i = 0;
String palavra = null;
while (ObjArquivo.EndOfStream == false || i == num)
{
  palavra = ObjArquivo.ReadLine(); //nao sei se é assim que atribui valor a uma string
  i ++
}

MessageBox.Show(palavra);

Algo assim não funciona? 

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • quase deu, esta exibindo sempre a mesma palavra!! A cada click do botão precisa parecer uma palavra diferente

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Cara, fiz isso aqui em dez minutos então acho que algo pode dar errado, mas é nesse caminho:

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace PalavrasEmbaralhadas
    {
        public partial class FrmMain : Form
        {
            Random rand = new Random(); //aleatorizador
            string palavraDaVez;
    
    
            public FrmMain()
            {
                InitializeComponent();
            }
            
            private void FrmMain_Load(object sender, EventArgs e)
            {
                //sorteia entre zero e o número de itens do array - 1
                int numeroAleatorio = rand.Next(0, (frutas.Length - 1));
                string palavraEscolhidaAleatoriamente = frutas[numeroAleatorio];
                palavraDaVez = palavraEscolhidaAleatoriamente; //guarda a palavra pra comparar no Button.Click
                char[] letrasDaFruta = palavraEscolhidaAleatoriamente.ToCharArray();
                lblEmbaralhada.Text = elMezclador(letrasDaFruta);
            }
    
    
            /// <summary>
            /// Embaralha uma sequencia de chars e retorna uma string
            /// </summary>
            /// <param name="letrasDaFruta">char array</param>
            /// <returns></returns>
            private string elMezclador(char[] letrasDaFruta)
            {
                List<char> letrasDaFrutaList = letrasDaFruta.ToList();
                Random randMezclador = new Random();
                List<char> charsEmbaralhados = new List<char>();
    
                foreach (char letra in letrasDaFrutaList)
                {
                    if(charsEmbaralhados.Count > 2)
                    {
                        int numRand = randMezclador.Next(0, letrasDaFrutaList.Count() - 1); //número aleatório entre 0 e a quantidade de chars - 1
                        charsEmbaralhados.Insert(numRand, letra); //insere a letra de forma aleatória na lista de charsEmbaralhados
                    }
                    else
                    {
                        charsEmbaralhados.Add(letra);
                    }
                    
                }
    
                return new String(charsEmbaralhados.ToArray());
    
            }
    
            private void btnConfirmar_Click(object sender, EventArgs e)
            {
                if(txtEntradaDoUsuario.Text != string.Empty) //se o usuário digitou algo...
                {
                    //tolower garante que a verificação não seja sensitiva ao nível de caixa
                    if(txtEntradaDoUsuario.Text.ToLower() == palavraDaVez)
                    {
                        MessageBox.Show("Parabéns cara, você acertou essa bagaça!");
                    }
                    else
                    {
                        MessageBox.Show("A palavra está incorreta... :/");
                    }
                }
            }
    
    
            //array de palavras pra sortear
            private string[] frutas = 
            {
                "abacaxi",
                "maça",
                "mamão",
                "morango",
                "pêssego",
                "melão",
                "kiwi",
                "banana"
            };
    
        }
    }

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    errei no while. é   

    && i != num

    Editado por MassakiMsk

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Em 08/11/2017 às 13:12, MassakiMsk disse:
    
    int num = new Random().Next(1, 20);
    int i = 0;
    String palavra = null;
    while (ObjArquivo.EndOfStream == false || i == num)
    {
      palavra = ObjArquivo.ReadLine(); //nao sei se é assim que atribui valor a uma string
      i ++
    }
    
    MessageBox.Show(palavra);

    Algo assim não funciona? 

    nao deu!! Obrigado! 

     

    private void btnEscolher_Click(object sender, EventArgs e)
            {
                StreamReader ObjArquivo = new StreamReader(@"d:\frutas.txt");
                int num = new Random().Next(1, 20);
                int i = 0;
                string Palavra = null;

                while (ObjArquivo.EndOfStream == false || i != num)
                {
                    Palavra = ObjArquivo.ReadLine();
                    i++;
                }
                MessageBox.Show(Palavra);
                
            }

    adicionado 1 minuto depois

    @GKuze a palavra sorteada tem que estar dentro de arquivo texto

    adicionado 2 minutos depois

    @GKuze a palavra sorteada tem que estar dentro de arquivo texto

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    @Mateus Martinez Rosa então, eu errei quando escrevi o codigo na primeira vez.

    int num = new Random().Next(1, 20);
    int i = 0;
    String palavra = null;
    while (ObjArquivo.EndOfStream == false && i != num)
    {
      palavra = ObjArquivo.ReadLine(); //nao sei se é assim que atribui valor a uma string
      i ++
    }
    
    MessageBox.Show(palavra);

     Depois disso você ainda precisa embaralhar a palavra

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    @Mateus Martinez Rosa  Então cara, ao invés de simplesmente usar o Array "Frutas",  cria um método que lê do arquivo de texto e retorna um array caso o arquivo exista, do contrário retorna o mesmo array de antes:

            private void FrmMain_Load(object sender, EventArgs e)
            {
                //sorteia entre zero e o número de itens do array - 1
    
                string[] arrayLidoDoArquivo = leiaDeFrutas("c:\\arquivoDasFrutas.txt");
                int numeroAleatorio = rand.Next(0, (arrayLidoDoArquivo.Length - 1));
                string palavraEscolhidaAleatoriamente = arrayLidoDoArquivo[numeroAleatorio];
                palavraDaVez = palavraEscolhidaAleatoriamente; //guarda a palavra pra comparar no Button.Click
                char[] letrasDaFruta = palavraEscolhidaAleatoriamente.ToCharArray();
                lblEmbaralhada.Text = elMezclador(letrasDaFruta);
            }
    
            //Método do array de palavras pra sortear.
            //Uma fruta por linha do arquivo
            private string[] leiaDeFrutas(string caminhoDoArquivoFrutas) 
            {
                string[] frutas = new string[]
                {"abacaxi",   "maça",    "mamão",
                 "morango",   "pêssego", "melão",
                 "kiwi",      "banana"};
    
                //se o arquivo existe
                if (System.IO.File.Exists(caminhoDoArquivoFrutas))
                {
                    string[] arrayDoArquivo = System.IO.File.ReadAllLines(caminhoDoArquivoFrutas);
                    return arrayDoArquivo; //retorna as linhas do arquivo em forma de Array
                }
                return frutas; //caso contrário, retorne o array frutas de antes
            }

     

    Editado por GKuze
    Faltou um comentário pra explicar melhor!

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×