Asteroids Codigo fuente en VB.NET y Csharp

New product

Asteroids - Código fuente


pantalla de juego de asteroids vb.net


Asteroides es clásico de los video juegos por lo simple, tan simple que las primeras versiones fueron realizadas con electrónica discreta, nada de microprocesadores para el barrido en pantalla, es por esto que decidí hacer un tributo al mismo como vemos a continuación:

Para este juego, quise hacer uso de solo polígonos, nada de usar sprites, esto fue solo para programar en objetos la estructura básica de un objeto las cuales son:

Estructura asteroids vb.net cs

Estas ESTRUCTURAS, se basan en POLIGONOS y finalmente los polígonos contienen las LINEAS que es la base de pintado de los objetos espaciales.

Por otro lado, está el MUNDO, el cual contiene a los objetos espaciales y se encarga de:

 - Actualizar el movimiento de los objetos espaciales.

 - Los organiza y les envía la orden de pintado en pantalla.

 - Posee las funciones para detectar las colisiones entre objetos.

 - Gestiona la cámara y la destrucción y creación objetos de los mundos.

Aporta los eventos a los hereditarios NIVELES como:

 - Inicio del mundo.

 - Actualización del mundo.

 - Pintado del mundo.

 - Destrucción de nave principal.

De esta forma el hereditario solo tiene que programar los asuntos del nivel como:

 - Velocidad de aparición de asteroides.

 - Las vidas de nuestra nave.

 - Otras cosas que se nos ocurran.

mundo en asteroids vb.net cs

Entonces, si queremos hacer un objeto espacial como por ejemplo un cuadrado, solo tenemos que escribir unas cuantas cosas y listo. Un ejemplo de esto es:


Ver código

Public Class Cuadrado
Inherits Estructura

'Poligono
Private cuadrop As Poligono

'Constructor del objeto. En este caso un cuadrado.
Sub New(eMundo As Mundo, ePosicion As PointF, tamaño As SizeF)

'Registrando al mundo para que se procesen los mensajes del mismo.
_Mundo = eMundo

'creando el poligono
cuadrop = New Poligono()

'En este caso, se agrega un rectangulo al poligono.
cuadrop.ContenedorFormas.AddRect(New Point(0, 0), tamaño)
cuadrop.AnchoLinea = 1

'Una vez se construye el poligono, se agrega a la estructura
AgregarPoligono(cuadrop, "cuadro")

'Se ajusta la posicion de la estructura.
Xpos = ePosicion.X
Ypos = ePosicion.Y

'Se calculan los limites de la estructura para
'su uso en el sistema de colision.
CalcularEstructura()

End Sub

'''
''' Este llamado ajusta el color del poligono.
'''

'''
''' Es usado por el sistema de efectos.
Public Sub AjustarColor(colorCuadro As Color)
cuadrop.ColorPoligono = colorCuadro
End Sub

End Class

Nivel.

Igual para programar los niveles. Solo hay que ponerle empeño solo a las acciones del nivel como, velocidad de creación de asteroides, cuantos van a salir, vidas del usuario. De la mecánica se encarga la base, que este caso es Mundo. Un ejemplo de esto se ve a continuación:

Ver código

'''
''' Control del nivel Numero 1.
''' No he pensado aun si dejar el nivel asi..por clases
''' o aqui mismo realizar las
'''

'''
Public Class Nivel1
Inherits Mundo

'''
''' El nivel es creable.
'''

'''
Public Sub New()
MyBase.New()
End Sub

Private
PasoTeclaEliminar As Integer

Private
PasoTiempoAsteroides As Integer
Private
NAsteroidesGenerados As Integer

'''
''' Se debe actualizar la logica del nivel.
'''

'''
Private Sub Nivel1_ActualizarMundo() Handles Me.ActualizarMundo

PasoTiempoAsteroides = PasoTiempoAsteroides + 1
PasoTiempoAsteroides = PasoTiempoAsteroides
Mod 100

'Creación automatica de 3 asteroides aleatorios durante el nivel.
'Cuando el paso pasa a 0, se crea un asteroide
If PasoTiempoAsteroides = 0 Then
PasoTiempoAsteroides = 0
If NAsteroidesGenerados < 2 Then
NAsteroidesGenerados += 1
GenerarAsteroide(NumeroAleatorio(0, 3))
'arriba, abajo, izquierda,derecha
End If
End If

'Creacion manual de asteroides con la tecla N
If PasoTeclaEliminar < 20 Then PasoTeclaEliminar += 1
If ControlTeclado.EstaPresionada(Keys.N) Then
If
PasoTeclaEliminar > 10 Then
PasoTeclaEliminar = 0
GenerarAsteroide(NumeroAleatorio(0, 3))
End If
End If

End Sub

'''
''' Se deben agregar los enemigos iniciales.
'''

'''
Private Sub cNivel1_InicioCompleto() Handles Me.InicioCompleto
'Iniciando los asteroides iniciales.
For i = 0 To 3
GenerarAsteroide(i)
Next
_numeroAsteroides = 4
End Sub
End Class

Descarga el código fuente:




Descarga el código fuente


Bueno, es todo por los momentos, cualquier duda que tengan. Abajo en la sección de comentarios.



Escrito por:
Elimar D.
Eli-Programa.
28/01/2019

Una desmostración en video

Calificación 
29/01/2019

Excelente

Gran post

    ¡Escriba su propia reseña!

    Escriba una reseña

    Asteroids Codigo fuente en VB.NET y Csharp

    Asteroids Codigo fuente en VB.NET y Csharp

    Haz una pregunta

    No se requiere registro

    Si luego de leer nuestro articulo aun tiene dudas, puede hacer su pregunta utilizando el siguiente formulario.

    (Opcional)
    *(Requerido para ser notificado cuando la respuesta este disponible)

    Si el enlace de descarga redirige a otro producto que no es el descrito en el artículo o está roto, reportarlo usando nuestro

     FORMULARIO DE REPORTE