Ir ao conteúdo

Posts recomendados

Postado

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

 

Postado
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? 

Postado

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"
        };

    }
}

 

Postado
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

Postado

@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

Postado

@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
        }

 

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...