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

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

    ×