Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



sábado, 26 de mayo de 2012

Gambas: Programando Tu Primer VideoJuego "Salir de la Mansión"


Gambas:

 Programando Tu Primer Un videojuego

 "Salir de la Mansión"


Muchos de los que empezaron con la programación era por el interés que les desperto los videojuegos, y la idea de hacer sus propios juegos.

He encontrado un libro  gratuito llamado Programacion de videojuegos con sdl para windows y linux (os lo podeis descargar pulsando en el enlace), donde el autor Alberto Garcia Serrano, explica como realizar varios juegos, detallando los pasos a seguir, esquemas, y codigos fuentes.



Os recomiendo su lectura para los que os querrais iniciaros o simplemente, tengais curiosidad en como se hacen los videojuegos.

 El primer ejemplo del libro lo he pasado a Gambas 3.1.1, ya que los ejemplos del libro estan en C, no os desanimeis por ello, ya que  no resulta complicado entender los ejemplos del libro, porque el autor los comenta muy detalladamente.

Os podeis descargar el código fuente en Gambas, de mi versión, en este enlace: EnlaceEjecutable en Gambas




Se trata de un juego tipo texto, donde tienes que moverte por las habitaciones de una mansión cogiendo objetos y usandolos, escribiendo las ordenes en un textbox.

He añadido una mejora, para que las habitaciones y objetos se coloquen aleatoriamente cada vez que jugamos. (haciendo que el juego nunca se repita :) )

Para ello, genero una lista que contiene un entero que indica el indice del array que va a contener cada habitación , y la desordeno aleatoriamente, obteniendo una disposicion siempre diferente ya que la llamo cada vez que se inicia el juego:

Public Function GeneraOrdenHabitaciones() As String[]




Dim lista As New Integer[]
Dim a As Integer
Dim obtener1 As Integer
Dim obtener2 As Integer
Dim temporal As Integer
'creo la lista
For a = 0 To 9
lista.Add(a)
Next




'barajo la lista
For a = 1 To 50 'barajo 50 veces
'obtengo nuevas posiciones...
obtener1 = Int(Rnd(1, 10))




obtener2 = obtener1 'hacemos esto para que el bucle se ejecute por lo menos una vez
While (obtener1 = obtener2)
obtener2 = Int(Rnd(1, 10))
Wend




'intercambiar
temporal = lista[obtener1]
lista[obtener1] = lista[obtener2]
lista[obtener2] = temporal




Next
Print "Lista obtenida de habitaciones: "
For a = 1 To 9
Print lista[a]; " ";
Next
Return lista




End

Esta funcion, devuelve una lista, que usare como el indice del array de habitaciones.

Todo el programa sigue el paradigma de programación estructural, son sus limitaciones y complicaciones para posteriores ampliaciones (algo muy tipico en los juegos..).

En una próxima entrega, realizaré este mismo juego basandome en el paradigma de Programación Orientada en Objetos, donde os mostraré que beneficios trae a la hora de programar y podreis aprecias las diferencias y beneficios (por ejemplo, sera muy facil añadir más objetos, ordenes, etc) al juego.


Espero que os guste y os resulte útil. Saludos