Ir ao conteúdo
  • Cadastre-se

C# Caça Palavras - Sorteando palavras


Posts recomendados

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());
        }

 

Link para o comentário
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"
        };

    }
}

 

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
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

Link para o comentário
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
        }

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...