viernes, 15 de junio de 2012

Lotería En C#

Hola que tal pues aquí les dejo un ejercicio que hice hace tiempo, es el juego clásico mexicano de la lotería en este podrán practicar los arreglos unidimensionales antes que nada debo aclarar que la idea del proyecto es de el Ing. Armando López Ciseña (mi profesor de fundamentos de programación quien lo encargo como proyecto final XD ) bueno sin mas que decir empezamos

Primero pondré algunas imagenes para que vean como funciona
 * Esta es la ventana de inicio del juego

*Al dar click en el botón empezar a jugar esto es lo que nos muestra que es un picturebox que es donde se mostrara aleatoriamente toda la baraja, un datagridview de 3x3 con imagenes ordenadas de manera aleatoria, un boton de volver a jugar que es por si no nos gusto las imagenes que nos tocaron y queremos otras,un texbox de solo lectura que es donde se le mostrara al usuario el numero de intentos que lleva,y un botón cantar que cada vez que demos click aumentara los intentos y cambiara la imagen del picturebox.

*Este es un ejemplo como pueden ver llevo 3 intentos y ya tengo 2 imagenes marcadas


*Aquí ya complete toda mi carta con un total de 40 intentos

 

Ahora si aquí les dejo el código cualquier duda dejen un comentario 



 string[] archivos = new string[20];
        int[] carta = new int[9];
        int[] acertadas = new int[9];
        int intentos = 0;
        public Form1()
        {
            InitializeComponent();
            dgv.Visible = false;
            pictureBox1.Visible = false;
            button2.Visible = false;
            label1.Visible = false;
            //Lenamos un arreglo con el nombre de las imagenes que disponemos
            for (int i = 0; i < archivos.Length; i++)
                archivos[i] = "imagen" + (i + 1).ToString() + ".jpg";
        }


 private void button1_Click(object sender, EventArgs e)
        {
            //Boton Empezar a Jugar
            dgv.RowCount = 3;

            int i, j, k = 0,n=9;
            //Metodo nos devuelve un arreglo de numeros diferentes
            carta= AleatoriosDiferentes(n);
            //Mostramos las imagenes en el DataGridView
            for (i = 0; i < dgv.RowCount; i++)
              for (j = 0; j < dgv.ColumnCount; j++)
              {
                 dgv[j, i].Value = Image.FromFile("imagen" + carta[k] + ".jpg");                
                  k++;
                
               }
            for (i = 0; i < dgv.RowCount; i++)
                dgv.Rows[i].Height = 100;

            dgv.Visible = true;
            pictureBox1.Visible = true;
            button2.Visible = true;
            label1.Visible = true;
            button1.Text = "Volver a jugar";
            intentos = 0;
            tbintentos.Text = "";
            //Ponemos en el arreglo acertadas 0 ya que es el que nos va ayudar
            //A Determinar si ya competo la carta
            for (int m = 0; m < acertadas.Length; m++)
                acertadas[m] = 0;
            pictureBox1.Image = Image.FromFile("imageninicio.jpg");
        }

      private void button2_Click(object sender, EventArgs e)
        {
            //Boton Cantar
            intentos++;
            tbintentos.Text = intentos.ToString();

            Random r = new Random();
            int i, j, k, a;
            int bc = r.Next(1, 21);
           
           
            pictureBox1.Image= Image.FromFile(archivos[bc-1]);
            k = 0;
            //Verificamos si la imagen del picturebox esta en el datagrid
            //Si es asi ponemos la imagen por default y al arreglo acertados ponemos 1
            for (i = 0; i < dgv.RowCount; i++)
            {
                for (j = 0; j < dgv.ColumnCount; j++)
                {
                    if (bc == carta[k])
                    {
                        acertadas[k] = 1;
                        dgv[j, i].Value = Image.FromFile("imagendefault.png");
                    }
                    k++;
                }
            }
            int suma = 0;
            //Sumamos los elementos de acertadas
            for (a = 0; a < acertadas.Length; a++)
                suma += acertadas[a];

            if (suma == acertadas.Length)
                MessageBox.Show("Carta completa");

          }



        private int[] AleatoriosDiferentes(int n)
        {
            int[] numeros = new int[n];
            Random r = new Random();
            for (int i = 0; i < numeros.Length; i++)
            {
                bool yaExiste = true;
                while (yaExiste)
                {
                    numeros[i] = r.Next(1, 21);
                    bool yaEsta = false;
                    for (int j = 0; j < i; j++)
                        if (numeros[i] == numeros[j])
                        {
                            yaEsta = true;
                            break;
                        }
                    yaExiste = yaEsta;
                }

            }
            return numeros;
        }

 Aqui el .exe para que vean como funciona

jueves, 14 de junio de 2012

Sopa de Letras en C#

Que tal aqui subiendo mi primer codigo se trata de una sopa de letras en donde el usuario o jugador tendra un total de 3 min para encontrar un total de 10 palabras,cada una tiene un grado de dificultad es por eso que no tiene el mismo valor en puntos tambien hay una bonificacion por el tiempo que se tarde en descubrir las 10 palabras bueno sin mas les dejo una imagen para que vean mas o menos como funciona, el codigo y el .exe para cualquier duda o sugerencia dejen un comentario.


public partial class Form1 : Form
    {
        Random letras = new Random();
        int segundos = 60, minutos = 2;
        public Form1()
        {
            InitializeComponent();
            dgv.RowCount = 14;
            dgv.ColumnCount = 13;
            //Llenamos el datagrid con letras aleatorias
            for (int i = 0; i < dgv.RowCount; i++)
                for (int j = 0; j < dgv.ColumnCount; j++)
                    dgv[j, i].Value = Convert.ToChar(letras.Next(65, 90));
            lp1.Visible = false;
            lp2.Visible = false;
            lp3.Visible = false;
            lp4.Visible = false;
            lp5.Visible = false;
            lp6.Visible = false;
            lp7.Visible = false;
            lp8.Visible = false;
            lp9.Visible = false;
            lp10.Visible = false;
            AsignarPalabras();
            timer1.Interval = 1000;
            timer1.Start();
        }
   
        private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            //Evento del data para cuando el usuario de click cambie el color de la celda
            dgv.CurrentCell.Style.BackColor = Color.Red;
            Ya_esta(dgv);
            Puntuacion();
            if (JuegoTerminado())
            {
                timer1.Stop();
                Puntuacion();
            }
        }

        public void Ya_esta(DataGridView d)
        {
 //En este metodo checamos si el usuario ya encontro una palabra y si es asi la tachamos 

if (d[3, 2].Style.BackColor == Color.Red && d[4, 3].Style.BackColor == Color.Red && d[5, 4].Style.BackColor == Color.Red && d[6, 5].Style.BackColor == Color.Red)
                lp1.Visible = true; 

if (d[8, 9].Style.BackColor == Color.Red && d[9, 10].Style.BackColor == Color.Red && d[10, 11].Style.BackColor == Color.Red && d[11, 12].Style.BackColor == Color.Red)
                lp2.Visible = true; 

if (d[9, 12].Style.BackColor == Color.Red && d[11,10].Style.BackColor == Color.Red && d[10, 11].Style.BackColor == Color.Red && d[12, 9].Style.BackColor == Color.Red)
                lp3.Visible = true;
 if (d[5, 13].Style.BackColor == Color.Red && d[6, 13].Style.BackColor == Color.Red && d[7, 13].Style.BackColor == Color.Red && d[8, 13].Style.BackColor == Color.Red)
                lp4.Visible = true;
 if (d[7, 9].Style.BackColor == Color.Red && d[6, 9].Style.BackColor == Color.Red && d[5, 9].Style.BackColor == Color.Red && d[4, 9].Style.BackColor == Color.Red && d[3, 9].Style.BackColor == Color.Red)
                lp5.Visible = true;
 if (d[0, 3].Style.BackColor == Color.Red && d[0, 7].Style.BackColor == Color.Red && d[0, 6].Style.BackColor == Color.Red && d[0, 5].Style.BackColor == Color.Red && d[0, 4].Style.BackColor == Color.Red)
                lp6.Visible = true;
 if (d[10, 8].Style.BackColor == Color.Red && d[10, 7].Style.BackColor == Color.Red && d[10, 6].Style.BackColor == Color.Red && d[10, 5].Style.BackColor == Color.Red && d[10, 4].Style.BackColor == Color.Red && d[10, 3].Style.BackColor == Color.Red)
                lp7.Visible = true;
 if (d[1, 7].Style.BackColor == Color.Red && d[1, 8].Style.BackColor == Color.Red && d[1, 9].Style.BackColor == Color.Red && d[1, 10].Style.BackColor == Color.Red && d[1, 11].Style.BackColor == Color.Red && d[1, 12].Style.BackColor == Color.Red)
                lp8.Visible = true;
 if (d[8, 0].Style.BackColor == Color.Red && d[8, 1].Style.BackColor == Color.Red && d[8, 2].Style.BackColor == Color.Red && d[8, 3].Style.BackColor == Color.Red && d[8, 4].Style.BackColor == Color.Red && d[8, 5].Style.BackColor == Color.Red && d[8, 6].Style.BackColor == Color.Red)
                lp9.Visible = true;
 if (d[7, 10].Style.BackColor == Color.Red && d[6, 9].Style.BackColor == Color.Red && d[5, 8].Style.BackColor == Color.Red && d[4, 7].Style.BackColor == Color.Red && d[3, 6].Style.BackColor == Color.Red && d[2, 5].Style.BackColor == Color.Red && d[1, 4].Style.BackColor == Color.Red && d[0, 3].Style.BackColor == Color.Red)
                lp10.Visible = true;
                          
        }


        public void AsignarPalabras()
        {   //Esto tmb lo pueden hacer Random
            //Aqui se asignan las palabras que va encontrar el usuario
            dgv[3, 2].Value = 'H';
            dgv[4, 3].Value = 'O';
            dgv[5, 4].Value = 'L';
            dgv[6, 5].Value = 'A';

            dgv[7, 9].Value = 'M';
            dgv[6, 9].Value = 'U';
            dgv[5, 9].Value = 'N';
            dgv[4, 9].Value = 'D';
            dgv[3, 9].Value = 'O';

            dgv[7, 10].Value = 'G';
            dgv[6, 9].Value = 'U';
            dgv[5, 8].Value = 'I';
            dgv[4, 7].Value = 'T';
            dgv[3, 6].Value = 'A';
            dgv[2, 5].Value = 'R';
            dgv[1, 4].Value = 'R';
            dgv[0, 3].Value = 'A';

            dgv[0, 7].Value = 'P';
            dgv[0, 6].Value = 'L';
            dgv[0, 5].Value = 'U';
            dgv[0, 4].Value = 'M';
            dgv[0, 3].Value = 'A';

            dgv[8, 9].Value = 'X';
            dgv[9, 10].Value = 'B';
            dgv[10, 11].Value = 'O';
            dgv[11, 12].Value = 'X';

            dgv[10, 8].Value = 'G';
            dgv[10, 7].Value = 'R';
            dgv[10, 6].Value = 'U';
            dgv[10, 5].Value = 'N';
            dgv[10, 4].Value = 'G';
            dgv[10, 3].Value = 'E';

            dgv[9, 12].Value = 'R';
            dgv[10, 11].Value = 'O';
            dgv[11, 10].Value = 'C';
            dgv[12, 9].Value = 'K';

            dgv[8, 0].Value = 'B';
            dgv[8, 1].Value = 'A';
            dgv[8, 2].Value = 'T';
            dgv[8, 3].Value = 'E';
            dgv[8, 4].Value = 'R';
            dgv[8, 5].Value = 'I';
            dgv[8, 6].Value = 'A';

            dgv[1, 7].Value = 'U';
            dgv[1, 8].Value = 'B';
            dgv[1, 9].Value = 'U';
            dgv[1, 10].Value = 'N';
            dgv[1, 11].Value = 'T';
            dgv[1, 12].Value = 'U';

            dgv[5, 13].Value = 'S';
            dgv[6, 13].Value = 'O';
            dgv[7, 13].Value = 'N';
            dgv[8, 13].Value = 'Y';
        }

        public bool JuegoTerminado()
        {
            //Verificamos si todas las palabras estan marcadas si es asi el juego ya acabo
 if (lp1.Visible && lp2.Visible && lp3.Visible && lp4.Visible && lp5.Visible && lp6.Visible && lp7.Visible && lp8.Visible && lp9.Visible && lp10.Visible)
                return true;
            return false;
        }

        public void Puntuacion()
        {
            //Calculamos la puntuacion, cada palabra tiene su propio valor y depende del tiempo que el usario
            //tardo en descubrir todas las palabras
            int ppar = 0, pf = 0;

            if (lp1.Visible) ppar += 100;
            if (lp2.Visible) ppar += 200;
            if (lp3.Visible) ppar += 400;
            if (lp4.Visible) ppar += 100;
            if (lp5.Visible) ppar += 300;
            if (lp6.Visible) ppar += 200;
            if (lp7.Visible) ppar += 300;
            if (lp8.Visible) ppar += 300;
            if (lp9.Visible) ppar += 200;
            if (lp10.Visible) ppar += 500;

            lpuntosxpalabras.Text = ppar.ToString();
            ltotal.Text = ppar.ToString();
            if (JuegoTerminado())
            {
                if (minutos >= 2)
                {
                    ltotalxtiempo.Text = "20";
                    lpuntosxpalabras.Text = ppar.ToString();
                    pf = ppar * 20;
                    ltotal.Text = pf.ToString();
                }
                else
                    if (minutos >= 1)
                    {
                        ltotalxtiempo.Text = "10";
                        lpuntosxpalabras.Text = ppar.ToString();
                        pf = ppar * 10;
                        ltotal.Text = pf.ToString();
                    }
                    else
                    {
                        ltotalxtiempo.Text = "4";
                        lpuntosxpalabras.Text = ppar.ToString();
                        pf = ppar * 4;
                        ltotal.Text = pf.ToString();
                    }
            }

        }

        public void Respuestas()
        {
            //Este metodo se lanza cuando el tiempo se ha agotado y el usuario no descubrio las palabras entonces
            //le mostramos donde estaban
            dgv[3, 2].Style.BackColor = Color.Red;
            dgv[4, 3].Style.BackColor = Color.Red;
            dgv[5, 4].Style.BackColor = Color.Red;
            dgv[6, 5].Style.BackColor = Color.Red;

            dgv[7, 9].Style.BackColor = Color.Red;
            dgv[6, 9].Style.BackColor = Color.Red;
            dgv[5, 9].Style.BackColor = Color.Red;
            dgv[4, 9].Style.BackColor = Color.Red;
            dgv[3, 9].Style.BackColor = Color.Red;

            dgv[7, 10].Style.BackColor = Color.Red;
            dgv[6, 9].Style.BackColor = Color.Red;
            dgv[5, 8].Style.BackColor = Color.Red;
            dgv[4, 7].Style.BackColor = Color.Red;
            dgv[3, 6].Style.BackColor = Color.Red;
            dgv[2, 5].Style.BackColor = Color.Red;
            dgv[1, 4].Style.BackColor = Color.Red;
            dgv[0, 3].Style.BackColor = Color.Red;

            dgv[0, 7].Style.BackColor = Color.Red;
            dgv[0, 6].Style.BackColor = Color.Red;
            dgv[0, 5].Style.BackColor = Color.Red;
            dgv[0, 4].Style.BackColor = Color.Red;
            dgv[0, 3].Style.BackColor = Color.Red;

            dgv[8, 9].Style.BackColor = Color.Red;
            dgv[9, 10].Style.BackColor = Color.Red;
            dgv[10, 11].Style.BackColor = Color.Red;
            dgv[11, 12].Style.BackColor = Color.Red;

            dgv[10, 8].Style.BackColor = Color.Red;
            dgv[10, 7].Style.BackColor = Color.Red;
            dgv[10, 6].Style.BackColor = Color.Red;
            dgv[10, 5].Style.BackColor = Color.Red;
            dgv[10, 4].Style.BackColor = Color.Red;
            dgv[10, 3].Style.BackColor = Color.Red;

            dgv[9, 12].Style.BackColor = Color.Red;
            dgv[10, 11].Style.BackColor = Color.Red;
            dgv[11, 10].Style.BackColor = Color.Red;
            dgv[12, 9].Style.BackColor = Color.Red;

            dgv[8, 0].Style.BackColor = Color.Red;
            dgv[8, 1].Style.BackColor = Color.Red;
            dgv[8, 2].Style.BackColor = Color.Red;
            dgv[8, 3].Style.BackColor = Color.Red;
            dgv[8, 4].Style.BackColor = Color.Red;
            dgv[8, 5].Style.BackColor = Color.Red;
            dgv[8, 6].Style.BackColor = Color.Red;

            dgv[1, 7].Style.BackColor = Color.Red;
            dgv[1, 8].Style.BackColor = Color.Red;
            dgv[1, 9].Style.BackColor = Color.Red;
            dgv[1, 10].Style.BackColor = Color.Red;
            dgv[1, 11].Style.BackColor = Color.Red;
            dgv[1, 12].Style.BackColor = Color.Red;

            dgv[5, 13].Style.BackColor = Color.Red;
            dgv[6, 13].Style.BackColor = Color.Red;
            dgv[7, 13].Style.BackColor = Color.Red;
            dgv[8, 13].Style.BackColor = Color.Red;
        }

        public string ContarTiempo()
        {
            segundos--;
            string s = segundos.ToString();
            string m = minutos.ToString();
            if (minutos == 0 && segundos <= 10)
                Console.Beep(876, 1000);

            if (segundos < 10)
                s = "0" + segundos;
            if (segundos < 1)
            {
                minutos -= 1;
                segundos = 60;
            }
            return m+": "+s;
        }

        private void breiniciar_Click(object sender, EventArgs e)
        {
            dgv.Rows.Clear();
            dgv.Columns.Clear();
            dgv.RowCount = 14;
            dgv.ColumnCount = 13;
            for (int i = 0; i < dgv.RowCount; i++)
                for (int j = 0; j < dgv.ColumnCount; j++)
                    dgv[j, i].Value = Convert.ToChar(letras.Next(65, 90));
            lp1.Visible = false;
            lp2.Visible = false;
            lp3.Visible = false;
            lp4.Visible = false;
            lp5.Visible = false;
            lp6.Visible = false;
            lp7.Visible = false;
            lp8.Visible = false;
            lp9.Visible = false;
            lp10.Visible = false;
            lpuntosxpalabras.Text = "";
            ltotal.Text = "";
            ltotalxtiempo.Text = "";
            AsignarPalabras();
            segundos = 60;
            minutos = 2;
            timer1.Interval = 1000;
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            ltiempo.Text = ContarTiempo();
            if (ltiempo.Text == "0: 00")
            {
                timer1.Stop();
                MessageBox.Show("Se te agoto el tiempo vuelve a intentarlo", "PERDISTE");
                Respuestas();
            }
        }
    }
}



ahora el .exe