Juego del gusano en C#
Karina Hernández CarmonaTrabajo25 de Septiembre de 2022
5.912 Palabras (24 Páginas)307 Visitas
public class Cgusano
{
public delegate void del_fin(int vf); //creando el delegado del fin (Respuesta al evento)
public event del_fin fin; //creando el evento fin (suceso)
public delegate void del_comio(); //creando el delegado del_comio (respuesta al evento)
public event del_comio comio; //creando el evento domio (suceso que tendra)
private Rectangle area;
public Rectangle parea //area de la cabeza del gusano
{
get { return area; }
set { area = value; }
}
int dir, paso; //Declaramos Direccion en la cual ira el gusano (4)
public Ccola cola; //Cuerpo del gusano
Graphics hoja; //Donde se llevara acabo el juego
Pen pluma; //declarando la pluma para dibujar el gusano
SolidBrush brocha, goma; //declarando la brocha para rellenarlo y la goma lo borrara
int maxx, maxy; //declarando los limites del gusano para que no pase de la hoja
public Timer tim; //El metodo que se ejecuta cada vez que se ejecuta el tick
public Cgusano(Control origen,int tam,Random r) //Método constructor
{
hoja = origen.CreateGraphics(); //creando la hoja en donde se haran los graficos
pluma = new Pen(Color.Black); //creando la pluma para dibujar
brocha = new SolidBrush(Color.Coral); //Creando la brocha para rellenar el gusano
goma = new SolidBrush(Color.White); //Creando la goma
cola = new Ccola(); //Creando una instancia de la clase ccola
maxx = origen.ClientSize.Width-tam; //Valores para que el gusano no se salga de los limites de la hoja en x
maxy = origen.ClientSize.Height - tam; //Valores para que el gusano no se salga de los limites de la hoja en x
int x, y; //Declarando variables para x & y
x = (maxx / 2) - tam / 2; //Calculando el valor de x
y = (maxy / 2) - tam / 2; //Calculando el valor de y
parea = new Rectangle(x, y, tam, tam); //Creando el área de dibujo de la cabeza
paso = tam; //Igualando el tamaño de paso con el de tamaño
dir = r.Next(1, 5); //Asignando un valor aleatorio tomando en cuenta desde el 1 hasta el 4
tim = new Timer(); //Creando el timer
tim.Interval = 250; //Asignando el tiempo antes de que el evento Tick suceda
tim.Enabled = true; //Acivando el Timer
tim.Tick += Tim_Tick; //Creando el método en respuesta al evento Tic
Dibuja_ca(); //Invocando al método que dibujará a la cabeza
}
private void Tim_Tick(object sender, EventArgs e) //Método del timer que se ejecutará en respuesta al evento Tick
{
Borra_ca(); //Borrando la cabeza
Borra_co(cola.ppri); //Borrando la primera parte de la cola (tipo Cnodo)
Actualiza_co(cola.ppri, parea); //Actualizando el area de la cola
int x, y; //Declarando variables para x & y
x = parea.X; //Asignando a la variable la coordenada X de parea
y = parea.Y; //Asignando a la variable la coordenada Y de parea
switch(dir) //Cambio de ordenes dependiendo del valor de dirección
{
case 1: //En caso de que el valor de la dirección sea 1
y = y - paso; //Actualizando el valor de y restaándole el valor de paso para que vaya hacia arriba
if(y>0) //Si Y es mayor a 0 hacer
{
parea = new Rectangle(parea.X, y, parea.Width, parea.Height); //Dibujando la cabeza en las coordenadas actualizadas con el tamaño especificado
}
else //De lo contrario
{
tim.Enabled = false; //El timer se deshabilita
fin(1); //Dispara el evento para el caso 1 (Toca el límite de arriba)
}
break;
case 2:
x = x + paso; //Actualizando el valor de x sumándole el valor de paso para que se mueva hacia la derecha
if (x <= maxx) //Si x es menor o igual al maxx
{
...