New product
This product is no longer in stock
Availability date:
Asteroids Source code in VB.NET and Csharp
Source code of the game Asteroids. Written in VB.NET and C #Recipient :
* Required fields
or Cancel
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:
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.
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:
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
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:
'''
''' 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
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
Excelente
Gran post
NO registration required!
If the question you have has not yet been answered here, use the form below to ask something about this addon.
If the download link redirects to another product that is not described in the article or is broken, report it using our Reporting Form