La forma básicamente quedaría de la siguiente manera:
Lo primero que haremos sera declarar un arreglo de cadenas con los deportes que se utilizaran para el juego de palabras. También declararemos tres variables de enteros, una que indique el indice que llamaremos "index" (la usaremos para saber que palabra del arreglo mostrar), una que indique los errores llamada "errores" y otra que marque los aciertos del jugador, a la cual llamaremos "correctas" (todo declarado a nivel de forma, antes del constructor de la forma).
_________________________________________________________________________________
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace JuegoPalabras
{
public partial class Form1 : Form
{
string[] deportes = new string[10] { "surf", "golf", "tenis", "futbol", "beisbol", "voleybol", "natacion", "carreras", "basquetbol", "kickboxing" };
int index = 0;
int error = 0;
int correctas = 0;
_________________________________________________________________________________
al igual tenemos que buscar una imagen para cada deporte del arreglo y una imagen de deportes en general para mostrarla al inicio, antes de que el juego comience y ponerlas en la carpeta "DEBUG", para evitar la necesidad de poner direcciones y solo poner el nombre de cada imagen cuando queramos mostrarla.
Es recomendable poner cada imagen con el mismo nombre y agregarle solo el numero del indice al que pertenece cada imagen de acuerdo con el arreglo declarado.
El condstructor de la forma quedaria de la siguiente manera:
_________________________________________________________________________________
public Form1()
{
InitializeComponent();
bConfirmar.Enabled = false;
tbpalabra.Enabled = false;
lerrores.Text = error.ToString();
pictureBox1.Image = Image.FromFile("deportes.jpg");
}
_________________________________________________________________________________
luego crearemos un método para desordenar la palabra , la forma mas fácil que se me ocurrió fue recibiendo como parametro un StringBuilder y ordenando cada caracter alfabéticamente para que la palabra no fuera legible pero indicara las letras que forman la palabra correcta. El método quedaría de la siguiente manera usando el método de ordenación BURBUJA.
________________________________________________________________________________
public void PalabraDesordenada(StringBuilder s)
{
for (int i = 0; i < s.Length - 1; i++)
for (int j = i + 1; j < s.Length; j++)
if (s[i].CompareTo(s[j]) > 0)
{
char aux = s[i];
s[i] = s[j];
s[j] = aux;
}
}
________________________________________________________________________________
Otro método necesario que utilizaremos en nuestro programa sera el método Siguiente(), que indicara cual es la siguiente palabra del arreglo y la mostrara en la forma, usara la siguiente imagen y la mostrara en la forma.
El método quedaría de la siguiente manera:
________________________________________________________________________________
public void Siguiente()
{
pictureBox1.Image = Image.FromFile("Imagen" + index.ToString() + ".jpg");
string str = deportes[index];
StringBuilder sb = new StringBuilder(str);
for (int i = 0; i < str.Length; i++)
sb[i] = str[i];
if (index < deportes.Length)
{
PalabraDesordenada(sb);
lPalabra.Text = sb.ToString();
if (index == deportes.Length - 1)
bIniciar.Enabled = false;
}
bIniciar.Enabled = false;
bConfirmar.Enabled = true;
tbpalabra.Enabled = true;
index++;
}
________________________________________________________________________________
luego modificamos el botón "bConfirmar" que tomara la palabra que el usuario escribió y verificara si coincide con la palabra del arreglo que "index" indica, si es así pasara a la siguiente, a menos que sea la ultima palabra. En caso de adivinar correctamente la ultima palabra aparecerá un MessageBox felicitando al jugador y diciendo que puntuación obtuvo de acuerdo a sus aciertos y errores, y a la vez preguntara si quiere jugar de nuevo.
Si el usuario se equivoca 3 veces automáticamente perderá y le aparecerá una imagen que lo señalara como perdedor y le dará la opción de jugar de nuevo o no hacerlo.
El código quedaría de la siguiente manera en caso que el usuario presione el botón "bConfirmar" directamente.
_________________________________________________________________________________
private void bConfirmar_Click(object sender, EventArgs e)
{
string respuesta = tbpalabra.Text;
StringBuilder sb = new StringBuilder(respuesta);
for (int j = 0; j < sb.Length; j++)
sb[j] = Caracteres.AMinuscula(sb[j]);
respuesta = sb.ToString();
//respuesta.ToLower();
if (respuesta == deportes[index - 1] && index < deportes.Length)
{
correctas++;
//MessageBox.Show("Felicidades, has adivinado la palabra");
lCorrectas.Text = correctas + " de " + deportes.Length.ToString();
tbpalabra.Enabled = false;
tbpalabra.Clear();
//error = 0;
//lerrores.Text = "0";
Siguiente();
tbpalabra.Focus();
}
else if (respuesta == deportes[index - 1] && index == deportes.Length)
{
correctas++;
lCorrectas.Text = correctas + " de " + deportes.Length.ToString();
DialogResult result;
result = MessageBox.Show("Puntuacion: " + (correctas * 500).ToString() + " Desea Jugar de Nuevo??", "FELICIDADES!!, USTED HA GANADO! :D!", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
index = 0;
error = 0;
bIniciar.Text = "Iniciar";
bIniciar.Enabled = true;
bConfirmar.Enabled = false;
tbpalabra.Enabled = false;
lerrores.Text = error.ToString();
lPalabra.Text = "";
tbpalabra.Clear();
}
if (result == DialogResult.No)
this.Close();
}
else
{
error++;
lerrores.Text = error.ToString();
tbpalabra.Clear();
Siguiente();
tbpalabra.Focus();
}
if (error == 3)
{
pictureBox1.Image = Image.FromFile("loser.jpg");
lPalabra.Text = "Loser!!!!";
DialogResult result;
result = MessageBox.Show("Puntuacion: " + (correctas * 500).ToString() + " Desea Jugar de Nuevo??", "Lo Sentimos! Ha Perdido!", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
index = 0;
error = 0;
correctas = 0;
bIniciar.Text = "Iniciar";
bIniciar.Enabled = true;
bConfirmar.Enabled = false;
tbpalabra.Enabled = false;
lerrores.Text = error.ToString();
lPalabra.Text = "";
lCorrectas.Text = correctas + " de " + deportes.Length.ToString();
}
if (result == DialogResult.No)
this.Close();
}
}
_________________________________________________________________________________
Y en caso de que el jugador desee presionar la tecla "Enter" para confirmar su respuesta el código quedaría igual pero usando la propiedad Keypress del TextBox llamado "tbPalabra".
_________________________________________________________________________________
private void tbpalabra_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == Convert.ToChar(Keys.Enter))
{
string respuesta = tbpalabra.Text;
StringBuilder sb = new StringBuilder(respuesta);
for (int j = 0; j < sb.Length; j++)
sb[j] = Caracteres.AMinuscula(sb[j]);
respuesta = sb.ToString();
//respuesta.ToLower();
//respuesta.ToLower();
if (respuesta == deportes[index - 1] && index < deportes.Length)
{
correctas++;
//MessageBox.Show("Felicidades, has adivinado la palabra");
lCorrectas.Text = correctas + " de " + deportes.Length.ToString();
bIniciar.Enabled = true;
bConfirmar.Enabled = false;
tbpalabra.Enabled = false;
tbpalabra.Clear();
//error = 0;
//lerrores.Text = "0";
Siguiente();
tbpalabra.Focus();
}
else if (respuesta == deportes[index - 1] && index == deportes.Length)
{
correctas++;
lCorrectas.Text = correctas.ToString() + " de " + deportes.Length.ToString();
DialogResult result;
result = MessageBox.Show("Puntuacion: " + (correctas * 500).ToString() + " Desea Jugar de Nuevo??", "FELICIDADES!!, USTED HA GANADO! :D", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
correctas = 0;
index = 0;
error = 0;
bIniciar.Text = "Iniciar";
bIniciar.Enabled = true;
bConfirmar.Enabled = false;
tbpalabra.Enabled = false;
lerrores.Text = error.ToString();
lPalabra.Text = "";
pictureBox1.Image = Image.FromFile("deportes.jpg");
lCorrectas.Text = correctas.ToString() + " de " + deportes.Length.ToString();
tbpalabra.Clear();
}
if (result == DialogResult.No)
this.Close();
}
else
{
error++;
lerrores.Text = error.ToString();
tbpalabra.Clear();
Siguiente();
tbpalabra.Focus();
}
if (error == 3)
{
pictureBox1.Image = Image.FromFile("loser.jpg");
lPalabra.Text = "Loser!!!!";
DialogResult result;
result = MessageBox.Show("Puntuacion: " + (correctas * 500).ToString() + " Desea Jugar de Nuevo??", "Lo Sentimos! Ha Perdido!", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
correctas = 0;
index = 0;
error = 0;
bIniciar.Text = "Iniciar";
bIniciar.Enabled = true;
bConfirmar.Enabled = false;
tbpalabra.Enabled = false;
lerrores.Text = error.ToString();
lPalabra.Text = "";
pictureBox1.Image = Image.FromFile("deportes.jpg");
lCorrectas.Text = correctas.ToString() + " de " + deportes.Length.ToString();
}
if (result == DialogResult.No)
this.Close();
}
}
}
_________________________________________________________________________________
y por ultimo codificaremos el botón "bIniciar" para que al presionarlo inicie el juego y cambie la imagen "DEPORTES.jpg" por la primer imagen correspondiente a la primer palabra del juego.
________________________________________________________________________________
private void bConfirmar_Click(object sender, EventArgs e)
{
Siguiente();
tbpalabra.Focus();
}
________________________________________________________________________________
Espero y les haya gustado este mini-tutorial para programar este juego simple.
dejo mi correo para cualquier duda, sugerencia o aclaración.
joze_murillo1220@hotmail.com
Por su atencion MUCHAS GRACIAS!
Quedo ante ustedes JOSE DE JESUS MURILLO SOTO.
No hay comentarios:
Publicar un comentario