Tuneando nuestro primer videojuego en BorielBasic

Más
7 meses 1 semana antes - 7 meses 1 semana antes #6743 por pooky2
pooky2 Publicó: Tuneando nuestro primer videojuego en BorielBasic
Después de crear nuestro propio videojuego, la siguiente fase y más adictiva es seguir añadiéndole nuevas características como por ejemplo color en los gráficos, sonido o la posibilidad de poder configurar nuestros propios muros y por lo tanto definir las fases.

Mirad la comparativa, Vaus VS Vaus 2



Código Fuente Vaus 2

Ejecutable Vaus 2

Gracias, un saludo.
Última Edición: 7 meses 1 semana antes por pooky2.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
7 meses 1 semana antes - 7 meses 6 días antes #6744 por pooky2
pooky2 respondió el tema: Tuneando nuestro primer videojuego en BorielBasic
Lo primero es ver que hemos modificado ligeramente los tamaños de los ladrillos, la idea es tanto la separación como los ladrillos deben ser múltiplos de 8 para tratar de evitar el color clash que tiene el Spectrum. En el juego a veces se producen estas colisiones de color, pero con este planteamiento se minimizan sus efectos.
#define ResolucionPantallaX 256
#define ResolucionPantallaY 192
#define NLadrillosX 7
#define NLadrillosY 6
#define VelocidadVaus 10
#define RadioPelota 2
#define BLANCO 7
#define MaxX 255
#define MaxY 191
#define SeparacionLadrilloX 29
#define SeparacionLadrilloY 8
#define AnchoLadrillo 20
#define AltoLadrillo 5
#define InicioMuroX 16
#define InicioMuroY 130
#define AnchoVaus 40
#define ZonaSensible 5
#define AltoVaus 3
#define PosVidas 20
#define PosPuntos 1
#define PosicionMarcadores 23
#define VelocidadInicialX 1
#define VelocidadInicialY 1
#define PuntosLadrillo 50
#define PosicionVausInicialX 50 
#define PosicionVausInicialY 10 
#define MaxVidas 3
#define VERDADERO 1
#define FALSO 0

Además de quitar dos columnas ladrillos, una por cada lado para evitar el color clash, verás que hay hay 8 ladrillos en la horizontal y sin embargo NLadrillosX es igual a 7. Eso es porque en el compilador de Boriel, cuando ponemos:

DIM Mariz(7)

Se están creando 8 elementos, es decir desde 0 hasta 7, o sea 8 elementos y no siete como en el C estándar, es decir de 0 hasta 6.

Esto es importante para las siguientes explicaciones que veremos más adelante.

Gracias, un saludo.
Última Edición: 7 meses 6 días antes por pooky2.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
7 meses 6 días antes - 7 meses 6 días antes #6746 por pooky2
pooky2 respondió el tema: Tuneando nuestro primer videojuego en BorielBasic
Vamos con los cambios de verdad, lo primero que vamos a hacer es poder definir nuestras fases, a través de generar varios muros.
DIM Ladrillos(1, NLadrillosY, NLadrillosX) as UBYTE = { _
		{{0, 0, 0, 1, 1, 0, 0, 0 },	_ ' Fase 1
		{0, 0, 1, 1, 1, 1, 0, 0 },	_
		{0, 2, 2, 1, 1, 2, 2, 0 },	_
		{0, 1, 3, 0, 0, 3, 1, 0 },	_
		{0, 1, 4, 0, 0, 4, 1, 0 },	_
		{0, 1, 4, 0, 0, 4, 1, 0 },	_
		{4, 1, 5, 0, 0, 5, 1, 4 }}, _
		{{1, 0, 1, 0, 1, 1, 0, 3 },	_ ' Fase 2
		{1, 5, 1, 0, 7, 1, 0, 1 },	_
		{1, 0, 1, 0, 1, 1, 0, 5 }, _
		{1, 0, 1, 0, 5, 1, 0, 1 }, _
		{1, 2, 1, 0, 1, 1, 0, 1 }, _
		{1, 2, 1, 0, 1, 1, 0, 1 }, _
		{1, 0, 1, 0, 1, 4, 0, 2 }} _
	}

Si os fijais en la definición DIM Ladrillos(1, NLadrillosY, NLadrillosX) el primero número es un UNO, eso significa que vamos a crear una matriz (tridimensional como veis) que tiene DOS elementos en esa posición (es decir el elemento 0 y el elemento 1).

Podéis apreciar que hay DOS fases o muros o elementos de esa matriz fácilmente distinguibles:
		{{0, 0, 0, 1, 1, 0, 0, 0 },	_ ' Fase 1
		{0, 0, 1, 1, 1, 1, 0, 0 },	_
		{0, 2, 2, 1, 1, 2, 2, 0 },	_
		{0, 1, 3, 0, 0, 3, 1, 0 },	_
		{0, 1, 4, 0, 0, 4, 1, 0 },	_
		{0, 1, 4, 0, 0, 4, 1, 0 },	_
		{4, 1, 5, 0, 0, 5, 1, 4 }}
Y
		{{1, 0, 1, 0, 1, 1, 0, 3 },	_ ' Fase 2
		{1, 5, 1, 0, 7, 1, 0, 1 },	_
		{1, 0, 1, 0, 1, 1, 0, 5 }, _
		{1, 0, 1, 0, 5, 1, 0, 1 }, _
		{1, 2, 1, 0, 1, 1, 0, 1 }, _
		{1, 2, 1, 0, 1, 1, 0, 1 }, _
		{1, 0, 1, 0, 1, 4, 0, 2 }} _

Que son las dos fases que hemos definido.

Si os fijáis bien ambos muros constan de NLadrillosX (es decir 8 elementos) en cada fila y NLadrillosY filas.

Si tenéis imaginación veréis la forma de la primera fase pensando que donde hay un cero, no hay ladrillo y donde hay un valor superior a cero, hay un ladrillo de colores y el color depende del número que exista en esa posición.

El muro de la primera fase es el que veis en la imagen de la derecha:



El muro de la izquierda vendría a representar una estructura con todo al mismo valor (sin ceros).

Gracias, un saludo.
Última Edición: 7 meses 6 días antes por pooky2.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
7 meses 7 horas antes #6758 por pooky2
pooky2 respondió el tema: Tuneando nuestro primer videojuego en BorielBasic
Resulta que con el nuevo método de crear nuestros propios muros, ahora debemos contar cuantos ladrillos tenemos en cada uno para ir descontando cada vez que acertamos en uno y saber cuando hemos destruido el muro completo y podemos pasar de fase. Para ello vamos a hacernos una función que nos evite estar contando los ladrillos de cada fase.
function CuentaLadrillos()

	for y = 0 to NLadrillosY
		for x = 0 to NLadrillosX
			if (Ladrillos(Nivel, y, x) > 0) then
				NLadrillos = NLadrillos + 1
			end if
		next x
	next y
		
	return NLadrillos

end function

Esta función la llamaremos cada vez que comencemos una fase nueva en:
sub InicializarLadrillos()
	
	NLadrillos = CuentaLadrillos()

end sub

sub SiguienteNivel()

	Nivel = Nivel + 1

	COLOR = ColorAleatorio()
	ink COLOR
	
	InicializarLadrillos()
	Reiniciar()

end sub

Gracias, un saludo.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
7 meses 7 horas antes #6760 por pooky2
pooky2 respondió el tema: Tuneando nuestro primer videojuego en BorielBasic
Vamos a introducir algo de sonido en nuestro juego, para ello utilizaremos la funcion BEEP duracion, tono
function PelotaPerdida()
	
	if (PosicionPelotaY - RadioPelota = PosicionVausY + AltoVaus) then
		if (PosicionPelotaX >= PosicionVausX) and (PosicionPelotaX <= PosicionVausX + AnchoVaus) then
			
			if (PosicionPelotaX > PosicionVausX + ZonaSensible) and (PosicionPelotaX <= PosicionVausX + AnchoVaus - ZonaSensible) then
				VelocidadPelotaY = -VelocidadPelotaY
			else
				VelocidadPelotaX = -2
				VelocidadPelotaY = -VelocidadPelotaY
			end if
			
			DarVaus()
			CambiarBorde(BLANCO)
			return FALSO
		end if
	end if

	if (PosicionPelotaY < PosicionVausY - AltoVaus) then
		return VERDADERO
	else
		return FALSO
	end if
	
end function

sub DarVaus()
	BEEP 0.02, 30
	BEEP 0.02, 50
end sub

sub DarLadrillo()
	BEEP 0.05, 20
	BEEP 0.05, -20
end sub

sub DarMarco()
	BEEP 0.1, 4
end sub

Fijaos en las funciones Dar... y visitad WOS para más información sobre BEEP

Gracias, un saludo.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
7 meses 6 horas antes #6762 por pooky2
pooky2 respondió el tema: Tuneando nuestro primer videojuego en BorielBasic
La función que ha recibido una variación más importante es PintarLadrillo() y la explicación es porque al definir el muro de esta forma y pintarlo, con las rutinas antiguas, se pintaba justo al revés, invertido en el eje X, por lo que debemos ajustar la función para que pinte los ladrillos en el orden correcto, que será RESTANDO del TOPE en Y del muro la posición del ladrillo (antes sumábamos desde la posición del muro hacia arriba):
sub PintarLadrillo(y, x)
	
	ink Ladrillos(Nivel, y, x)
	
	LX = InicioMuroX + (SeparacionLadrilloX*x)
	LY = InicioMuroY - (SeparacionLadrilloY*y)
	
	for i = 0 to AltoLadrillo - 1
		
 		plot over 1; LX, LY - i
		draw  over 1; AnchoLadrillo , 0
		
	next i
	
	ink COLOR
	
end sub

Además pintamos el ladrillo linea a linea (con el FOR), no pintamos cuatro líneas simulando un rectángulo. Fijaos que el color de la tinta para pintar el ladrillo es el valor de la posición que tiene la matriz que alberga el muro.
ink Ladrillos(Nivel, y, x)

Gracias, un saludo.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
7 meses 6 horas antes - 7 meses 6 horas antes #6763 por pooky2
pooky2 respondió el tema: Tuneando nuestro primer videojuego en BorielBasic
Y por supuesto comprobar muro hemos de cambiarlo para que tenga en cuenta que los ladrillos están de "invertida". Si no lo "hacemos así pasará de largo" por algunos ladrillos y rebotará en el vacío (es decir pensará que los ladrillos son los que están en su reflejo HORIZONTAL)
sub ComprobarMuro()

	for y = 0 to NLadrillosY

		Superior = InicioMuroY - (SeparacionLadrilloY*y)
		Base = Superior - AltoLadrillo
	
		if PosicionPelotaY + RadioPelota >= Base and Superior >= PosicionPelotaY - RadioPelota then
			for x = 0 to NLadrillosX
				if PosicionPelotaX + RadioPelota >= InicioMuroX+(x*SeparacionLadrilloX) and PosicionPelotaX + RadioPelota <= InicioMuroX+((x+1)*SeparacionLadrilloX) then
					if Ladrillos(Nivel, y, x) <> FALSO then
						CambiarBorde(Ladrillos(Nivel, y, x))
						RebotarPelota()
						BorrarLadrillo(y, x)
						SumarPuntos()
						return 
					end if
				end if
			next x
		end if
	next y
		
end sub

Fíjense que la introducción de estas variables simplifica la comprensión de la rutina:

Superior = InicioMuroY - (SeparacionLadrilloY*y)
Base = Superior - AltoLadrillo

Gracias, un saludo.
Última Edición: 7 meses 6 horas antes por pooky2.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
7 meses 6 horas antes #6764 por pooky2
pooky2 respondió el tema: Tuneando nuestro primer videojuego en BorielBasic
También ha sufrido ligeros cambios PintarMuro(), pero solo para adecuarse a pintar el muro de cada NIVEL y las posiciones nuevas de X e Y

sub PintarMuro()

	for x = 0 to NLadrillosX
		for y = 0 to NLadrillosY
			if Ladrillos(Nivel, y, x) <> FALSO then
				PintarLadrillo(y, x)
			end if
		next  y
	next x

end sub

Gracias, un saludo.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
7 meses 6 horas antes #6767 por pooky2
pooky2 respondió el tema: Tuneando nuestro primer videojuego en BorielBasic
El siguiente cambio es en nuestra nave Vaus a la que le hemos habilitado dos zonas diferenciadas que son el centro y los laterales. Si recordáis en el juego original al dar la pelota en un lateral, salía rebotada con otro ángulo (basta con poner la AceleracionX a 2, en vez de 1), pero eso lo veremos en otra rutina, de momento mirada como hago un par de PLOTs al final para pintar las dos líneas de separación entre el centro y los laterales.

sub PintarVaus()
	
	for i = 0 to AltoVaus
		plot over 1; PosicionVausX, PosicionVausY + i
		draw over 1; AnchoVaus, 0
	next i

	plot over 1; PosicionVausX + ZonaSensible, PosicionVausY
	draw over 1; 0, AltoVaus

	plot over 1; PosicionVausX + AnchoVaus - ZonaSensible, PosicionVausY 
	draw over 1; 0, AltoVaus
	
end sub

Gracias, un saludo.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
7 meses 5 horas antes #6768 por pooky2
pooky2 respondió el tema: Tuneando nuestro primer videojuego en BorielBasic
Y punto final, hasta aquí todos los cambios, os dejo TODO el código de nuevo pero el resto de funciones / rutinas no ha cambiado:
#define ResolucionPantallaX 256
#define ResolucionPantallaY 192
#define NLadrillosX 7
#define NLadrillosY 6
#define VelocidadVaus 10
#define RadioPelota 2
#define BLANCO 7
#define MaxX 255
#define MaxY 191
#define SeparacionLadrilloX 29
#define SeparacionLadrilloY 14
#define AnchoLadrillo 20
#define AltoLadrillo 7
#define InicioMuroX 16
#define InicioMuroY 180
#define AnchoVaus 40
#define ZonaSensible 5
#define AltoVaus 3
#define PosVidas 20
#define PosPuntos 1
#define PosicionMarcadores 23
#define VelocidadInicialX 1
#define VelocidadInicialY 1
#define PuntosLadrillo 50
#define PosicionVausInicialX 50 
#define PosicionVausInicialY 10 
#define MaxVidas 3
#define VERDADERO 1
#define FALSO 0  

COLOR = 1
Vidas = MaxVidas
DIM Puntos as UInteger
PosicionVausX = PosicionVausInicialX
PosicionVausY = PosicionVausInicialY
Nivel = 0
PelotaLibre = FALSO
NLadrillos = 0

PosicionPelotaX = PosicionVausX + AnchoVaus / 2
PosicionPelotaY = PosicionVausY+2*RadioPelota+2
VelocidadPelotaX = VelocidadInicialX
VelocidadPelotaY = VelocidadInicialY
	
DIM Ladrillos(1, NLadrillosY, NLadrillosX) as UBYTE = { _
		{{0, 0, 0, 2, 2, 0, 0, 0 },	_ ' Fase 1
		{0, 0, 1, 1, 1, 1, 0, 0 },	_
		{0, 2, 2, 1, 1, 2, 2, 0 },	_
		{0, 1, 3, 0, 0, 3, 1, 0 },	_
		{0, 1, 4, 0, 0, 4, 1, 0 },	_
		{0, 1, 4, 0, 0, 4, 1, 0 },	_
		{4, 1, 5, 0, 0, 5, 1, 4 }}, _
		{{1, 0, 1, 0, 1, 1, 0, 3 },	_ ' Fase 2
		{1, 5, 1, 0, 7, 1, 0, 1 },	_
		{1, 0, 1, 0, 1, 1, 0, 5 }, _
		{1, 0, 1, 0, 5, 1, 0, 1 }, _
		{1, 2, 1, 0, 1, 1, 0, 1 }, _
		{1, 2, 1, 0, 1, 1, 0, 1 }, _
		{1, 0, 1, 0, 1, 4, 0, 2 }} _
	}

function CuentaLadrillos()

	for y = 0 to NLadrillosY
		for x = 0 to NLadrillosX
			if (Ladrillos(Nivel, y, x) > 0) then
				NLadrillos = NLadrillos + 1
			end if
		next x
	next y
		
	return NLadrillos

end function

function PelotaPerdida()
	
	if (PosicionPelotaY - RadioPelota = PosicionVausY + AltoVaus) then
		if (PosicionPelotaX >= PosicionVausX) and (PosicionPelotaX <= PosicionVausX + AnchoVaus) then
			
			if (PosicionPelotaX > PosicionVausX + ZonaSensible) and (PosicionPelotaX <= PosicionVausX + AnchoVaus - ZonaSensible) then
				VelocidadPelotaY = -VelocidadPelotaY
			else
				VelocidadPelotaX = -2
				VelocidadPelotaY = -VelocidadPelotaY
			end if
			
			DarVaus()
			CambiarBorde(BLANCO)
			return FALSO
		end if
	end if

	if (PosicionPelotaY < PosicionVausY - AltoVaus) then
		return VERDADERO
	else
		return FALSO
	end if
	
end function

sub DarVaus()
	BEEP 0.02, 30
	BEEP 0.02, 50
end sub

sub DarLadrillo()
	BEEP 0.05, 20
	BEEP 0.05, -20
end sub

sub DarMarco()
	BEEP 0.1, 4
end sub

function ColorAleatorio()
	return RND * 6 + 1
end function

function RebotarPelota()
	VelocidadPelotaY = -VelocidadPelotaY
end function

sub CambiarBorde(n)
	border n
end sub	

sub SiguienteNivel()

	Nivel = Nivel + 1

	COLOR = ColorAleatorio()
	ink COLOR
	
	InicializarLadrillos()
	Reiniciar()

end sub

sub ImprimirVidas()
	print over 1; at  PosicionMarcadores, PosVidas; "Vidas: "; Vidas
end sub

sub ImprimirPuntos()
	print over 1; at PosicionMarcadores, PosPuntos; "Puntos: "; Puntos
end sub

sub VidaMenos()
	ImprimirVidas()
	Vidas = Vidas - 1
	ImprimirVidas()
end sub

sub SumarPuntos()
	ImprimirPuntos()
	Puntos = Puntos + PuntosLadrillo
	ImprimirPuntos()
end sub

sub NuevaPartida()
	
	ink COLOR

	Vidas = MaxVidas
	Puntos = 0
	InicializarLadrillos()
	Reiniciar()

end sub

sub Reiniciar()

	BorrarPantalla()
	CambiarBorde(BLANCO)
	
	PosicionVausX = PosicionVausInicialX
	PosicionVausY = PosicionVausInicialY
	PelotaLibre = FALSO

	PosicionPelotaX = PosicionVausX + AnchoVaus / 2
	PosicionPelotaY = PosicionVausY+2*RadioPelota+2
	VelocidadPelotaX = VelocidadInicialX
	VelocidadPelotaY = VelocidadInicialY
	
	EstablecerMarco()
	PintarMuro()

	PintarVaus()
	DibujarPelota(PosicionPelotaX, PosicionPelotaY)
	
	ImprimirPuntos()
	ImprimirVidas()

end sub


sub BorrarLadrillo(y, x)

	PintarLadrillo(y, x)
	
	if (Ladrillos(Nivel, y, x) > 0) then
		Ladrillos(Nivel, y, x) = 0
	end if
	
	if (Ladrillos(Nivel, y, x) > 0) then
		PintarLadrillo(y, x)
	else
		NLadrillos = NLadrillos - 1
		
	DarLadrillo()

	end if
	
end sub

sub ComprobarMuro()

	for y = 0 to NLadrillosY

		Superior = InicioMuroY - (SeparacionLadrilloY*y)
		Base = Superior - AltoLadrillo
	
		if PosicionPelotaY + RadioPelota >= Base and Superior >= PosicionPelotaY - RadioPelota then
			for x = 0 to NLadrillosX
				if PosicionPelotaX + RadioPelota >= InicioMuroX+(x*SeparacionLadrilloX) and PosicionPelotaX + RadioPelota <= InicioMuroX+((x+1)*SeparacionLadrilloX) then
					if Ladrillos(Nivel, y, x) <> FALSO then
						CambiarBorde(Ladrillos(Nivel, y, x))
						RebotarPelota()
						BorrarLadrillo(y, x)
						SumarPuntos()
						return 
					end if
				end if
			next x
		end if
	next y
		
end sub

sub InicializarLadrillos()
	
	NLadrillos = CuentaLadrillos()

end sub

sub PintarLadrillo(y, x)
	
	ink Ladrillos(Nivel, y, x)
	
	LX = InicioMuroX + (SeparacionLadrilloX*x)
	LY = InicioMuroY - (SeparacionLadrilloY*y)
	
	for i = 0 to AltoLadrillo - 1
		
 		plot over 1; LX, LY - i
		draw  over 1; AnchoLadrillo , 0
		
	next i
	
	ink COLOR
	
end sub

sub PintarMuro()

	for x = 0 to NLadrillosX
		for y = 0 to NLadrillosY
			if Ladrillos(Nivel, y, x) <> FALSO then
				PintarLadrillo(y, x)
			end if
		next  y
	next x

end sub

sub BorrarPantalla()
	
	cls

end sub

sub PintarVaus()
	
	for i = 0 to AltoVaus
		plot over 1; PosicionVausX, PosicionVausY + i
		draw over 1; AnchoVaus, 0
	next i

	plot over 1; PosicionVausX + ZonaSensible, PosicionVausY
	draw over 1; 0, AltoVaus

	plot over 1; PosicionVausX + AnchoVaus - ZonaSensible, PosicionVausY 
	draw over 1; 0, AltoVaus
	
end sub

sub MoverVaus()

	Movido = FALSO
	
	if INKEY$ = "z" then
		
		PintarVaus()
		
		if PosicionVausX <= VelocidadVaus then
			PosicionVausX = 1
		else
			PosicionVausX = PosicionVausX - VelocidadVaus
		end if 
		
		Movido = VERDADERO
	
	end if
	
	if INKEY$ = "x" and not Movido then
	
		PintarVaus()
		
		if PosicionVausX + AnchoVaus >= MaxX - VelocidadVaus then
			PosicionVausX = MaxX - AnchoVaus - 1
		else
			PosicionVausX = PosicionVausX + VelocidadVaus
		end if 		
		
		Movido = VERDADERO
	
	end if
	
	if INKEY$ = " " then
	
		PelotaLibre = VERDADERO
	
	end if

	if Movido = VERDADERO then 
		PintarVaus()
		if PelotaLibre = FALSO then
			DibujarPelota(PosicionPelotaX, PosicionPelotaY)
			PosicionPelotaX = PosicionVausX + AnchoVaus / 2
			DibujarPelota(PosicionPelotaX, PosicionPelotaY)
		end if
	end if
	
end sub

sub	DibujarPelota(PosicionPelotaX, PosicionPelotaY)

	circle over 1; PosicionPelotaX, PosicionPelotaY, RadioPelota

end sub

sub	MoverPelota()

	if PelotaLibre = VERDADERO then
	
		' Borramos la pelota anterior.
		DibujarPelota(PosicionPelotaX, PosicionPelotaY)
		
		if PosicionPelotaY + RadioPelota >= MaxY - 1 then
			VelocidadPelotaY = -VelocidadPelotaY
		end if
		
		if PosicionPelotaX + RadioPelota >= MaxX - 1 then
			VelocidadPelotaX = -VelocidadPelotaX
		end if
				
		if PosicionPelotaX - RadioPelota <= 1 then
			VelocidadPelotaX = -VelocidadPelotaX
		end if

		PosicionPelotaX = PosicionPelotaX + VelocidadPelotaX
		PosicionPelotaY = PosicionPelotaY + VelocidadPelotaY
		
		DibujarPelota(PosicionPelotaX, PosicionPelotaY)
	
	end if
	
end sub

sub EstablecerMarco()
	
	ink COLOR

	plot 0, 0
	draw 0, MaxY
	draw MaxX, 0
	draw 0, -MaxY
	
end sub

REM -----------------------------------
REM Inicio del programa Principal
REM -----------------------------------

while inkey$ <> "0"
	
	NuevaPartida()

	while Vidas > 0
		
		ComprobarMuro()
		MoverPelota()
		MoverVaus()
		
		if PelotaPerdida() = VERDADERO then
			VidaMenos()
			Reiniciar()
		end if
		
		if NLadrillos = 0 then
			SiguienteNivel()
		end if
	
	end while	

end while

Código Fuente Vaus 2

Ejecutable Vaus 2

Ahora os toca a vosotros hacer más niveles y seguir TUNEANDO el juego.

Gracias, un saludo.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Tiempo de carga de la página: 0.358 segundos

© Canarias Go Retro, 2016