Ayuda para escribir Red Snake en C#
Antecedentes
Entorno de desarrollo: Microsoft Visual Studio .Net 2003
Lenguaje de desarrollo:
Desarrollador: Red_angelX p >
Diseño de la interfaz principal
El lado izquierdo es el área del juego, que consta de un marco y una etiqueta. El marco se usa para dibujar la interfaz del juego y la etiqueta se usa para mostrar si. el juego está funcionando.
El lado derecho es el área de estado, que se compone de múltiples etiquetas y se utiliza para mostrar los parámetros de estado en el juego.
1 Diseño general
El cuerpo principal del juego se divide en 3 módulos principales: la unidad básica del cuerpo de la serpiente, la posición estructural del cuerpo de la serpiente y el control de movimiento de el cuerpo de la serpiente. Cada una de estas tres unidades se describe mediante una clase
1.1 SnakeSegment.cs
La unidad básica se describe mediante un rectángulo y la estructura específica es la siguiente
privado Rectángulo m_rect;
/**//* *********** constructor, pasa las coordenadas del vértice y el ancho del bloque************ ****** /
public SnakeSegment(ubicación del punto, ancho int)
...{
m_rect = nuevo rectángulo(ubicación, nuevo tamaño (ancho, ancho)) ;
}
//Propiedades
Rectángulo público Rectángulo
...{
Obtener
p>...{
Devolver m_rect
}
}
}
Ubicación del punto público
...{
Obtener
...{
devolver esto .m_rect.Location;
}
establecer
...{
this.m_rect.Location = valor
}
}
Tamaño público Tamaño
...{
Obtener
. ..{
return this.m_rect.Size;
}
}
1.2 Módulo de posición de estructura de serpiente Snake.cs p>
Snake Una estructura consta de una serie de unidades básicas, que se almacenan en una estructura de cola, que pertenece al espacio de nombres System. El espacio de nombres System.Collections representa una colección de objetos de primero en entrar, primero en salir. La clase serpiente incluye varios métodos: Agregar (agregar nuevo objeto), Borrar (borrar objeto), Slither (mover el cuerpo de la serpiente) y PointOnSnake (determinar si un determinado punto está dentro del cuerpo de la serpiente).
//Agregar un nuevo nodo para la serpiente
public void Add(Point newLocation)
...{
SnakeSegment newhead = new SnakeSegment(newLocation, m_width);
//Comprueba si la cola existe
if(m_segs == null)
...{ p>
m_segs = nueva cola(MAXSNAKELENGTH);
}
else if(m_segs.Count == MAXSNAKELENGTH)
...{
Slither(newLocation);
return;
}
/Agregar cola de serpiente a m_segs
m_segs. Enqueue(newhead );
}
/ Elimina la cola de serpiente agregando una nueva cabeza de serpiente y moviendo la cola de serpiente usando el método SnakeTail
public void Slither (Punto nuevaUbicación)
...{
SnakeSegment newhead = new SnakeSegment(newLocation, this.m_width);
/Agregar una cabeza de serpiente
this.m_segs. Enqueue(newhead);
//Quita la cola de serpiente
this.m_segs.Dequeue(newhead);