Aprendiendo a programar Videjuegos en Basic

Más
7 meses 2 semanas antes #6730 por pooky2
pooky2 respondió el tema: Aprendiendo a programar Videjuegos en Basic
Hagamos un alto y vamos a probar como vamos.
Descarga de aquí el código fuente y de aquí el .tap ya compilado.

De todas formas te pongo el código de esta pequeña versión de prueba:
#define NLadrillosX 10
#define NLadrillosY 6
#define VelocidadVaus 10
#define RadioPelota 2
#define BLANCO 7
#define MaxX 255
#define MaxY 191
#define AnchoLadrillo 25
#define AltoLadrillo 8
#define InicioMuroX 5  
#define InicioMuroY 130
#define AnchoVaus 40
#define AltoVaus 3
#define PosVidas 20
#define PosPuntos 1
#define PosBase 23
#define VelocidadInicialX 1
#define VelocidadInicialY 1

COLOR = 1
Vidas = 3
DIM Puntos as UInteger
PosicionVausX = 50
PosicionVausY = 10
PelotaLibre = 0
Nivel = 1
NLadrillos = NLadrillosX * NLadrillosY

PosicionPelotaX = PosicionVausX + AnchoVaus / 2
PosicionPelotaY = PosicionVausY+2*RadioPelota+2
VelocidadPelotaX = VelocidadInicialX
VelocidadPelotaY = VelocidadInicialY
	
DIM Ladrillos(NLadrillosX, NLadrillosY) as BYTE

function PelotaPerdida()
	
	if (PosicionPelotaY - RadioPelota = PosicionVausY) then
		if (PosicionPelotaX >= PosicionVausX) and (PosicionPelotaX <= PosicionVausX + AnchoVaus) then
			VelocidadPelotaY = VelocidadInicialY
			CambiarBorde(BLANCO)
			return 0
		end if
	end if

	if (PosicionPelotaY < PosicionVausY - AltoVaus) then
		return 1
	else
		return 0
	end if
	
end function

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 NuevaPartida()
	
	ink COLOR

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

end sub

sub Reiniciar()

	BorrarPantalla()
	CambiarBorde(BLANCO)
	
	PosicionVausX = 50
	PosicionVausY = 10
	PelotaLibre = 1

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


sub BorrarLadrillo(x, y)

	NLadrillos = NLadrillos - 1
	Ladrillos(x, y) = 0
	PintarLadrillo(x, y)
	
end sub

sub ComprobarMuro()

	for y = 0 to NLadrillosY -1 
		if PosicionPelotaY + RadioPelota > InicioMuroY+(y*AltoLadrillo) and PosicionPelotaY + RadioPelota < InicioMuroY+((y+1)*AltoLadrillo) then
			for x = 0 to NLadrillosX -1 
				if PosicionPelotaX + RadioPelota > InicioMuroX+(x*AnchoLadrillo) and PosicionPelotaX + RadioPelota < InicioMuroX+((x+1)*AnchoLadrillo) then
					if Ladrillos(x,y) > 0 then
						CambiarBorde(ColorAleatorio())
						RebotarPelota()
						BorrarLadrillo(x, y)
						return 
					end if
				end if
			next x
		end if
	next y
		
end sub

sub InicializarLadrillos()
	
	NLadrillos = 0
	for x = 0 to NLadrillosX - 1
		for y = 0 to NLadrillosY - 1
			Ladrillos(x,y) = COLOR
			NLadrillos = NLadrillos + 1
		next y
	next x

end sub

sub PintarLadrillo(x, y)

	TamX = 20
	TamY = 5
	
	LX = InicioMuroX + (AnchoLadrillo*x)
	LY = InicioMuroY + (AltoLadrillo*y)
	
	plot over 1; LX, LY
	draw over 1; TamX, 0
	draw over 1; 0, TamY
	draw over 1; -TamX, 0
	draw over 1; 0, -TamY
	
end sub

sub PintarMuro()

	for x = 0 to NLadrillosX - 1
		for y = 0 to NLadrillosY - 1
			if Ladrillos(x, y) > 0 then
				PintarLadrillo(x, y)
			end if
		next  y
	next x

end sub

sub BorrarPantalla()
	
	cls

end sub

sub PintarVaus()
	
	plot over 1; PosicionVausX, PosicionVausY
	draw over 1; AnchoVaus, 0
	draw over 1; 0, AltoVaus
	draw over 1; -AnchoVaus, 0
	draw over 1; 0, -AltoVaus
	
end sub


sub	DibujarPelota(PosicionPelotaX, PosicionPelotaY)

	circle over 1; PosicionPelotaX, PosicionPelotaY, RadioPelota

end sub

sub	MoverPelota()

	if PelotaLibre = 1 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

		if PosicionPelotaY - RadioPelota <= 1 then
			VelocidadPelotaY = -VelocidadPelotaY
		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 -----------------------------------

NuevaPartida()
DibujarPelota(PosicionPelotaX, PosicionPelotaY)

while inkey$ <> "0"
	
	ComprobarMuro()
	MoverPelota()

end while

Gracias, un saludo.

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

Más
7 meses 2 semanas antes - 7 meses 1 semana antes #6731 por pooky2
pooky2 respondió el tema: Aprendiendo a programar Videjuegos en Basic
Cada vez queda menos y ya casi solo nos falta lo que afecta a la raqueta, a nuestro querido Vaus con MoverVaus(). Lo primero que debemos averiguar es el jugador ha movido a Vaus, por ello declarmos una varieble Movido a falso (Movido = 0), si el usuario pulsa una tecla, Movido = 1.
Cuando el jugador pulsa una tecla, lo que debemos hacer es calcular el movimiento, es decir sumar o restar la velocidad de desplazamiento dependiendo de si nos movemos a derecha o a izquierda, sin embargo primero hay que hacer la comprobación de si nos movemos ¿nos saldríamos de la pantalla?, tanto por la izquierda como por la derecha, por ello hay una comprobación con cada tecla.

Mucho cuidado con este valor:
if PosicionVausX + AnchoVaus >= MaxX - VelocidadVaus then

Sería mas claro hacer:
if PosicionVausX + AnchoVaus + ValocidadVaus >= MaxX

Es decir la posición de Vaus más su longitd más la velocidad (o sea la posición final despues de moverse) ¿es menor que el margen derecho?, es decir ¿tengo espacio para moverme?.

Sin embargo he hecho
if PosicionVausX + AnchoVaus >= MaxX - VelocidadVaus then

Que es lo mismo, pero con un pequeño matiz, si hubiera hecho de la primera forma significaría que PosicionVausX + AnchoVaus + ValocidadVaus PODRIA SER MAYOR que 255 y recuerda que eso es MUY MALO ya que si pones un valor mayor que 255 en un BYTE se desbordaría eso significa que si pones 256 en la variable tendrías un 1, con 257 tendrías un 2 y así. Si no lo controlas Vaus literamente atravesará la pared y aparecerá en el otro lado de la pantalla, por eso mejor Restar algo a 255 (VelocidadVaus) y entonces hacer la comparación.
sub MoverVaus()
	Movido = 0
	if INKEY$ = "z" then
		PintarVaus()
		if PosicionVausX <= VelocidadVaus then
			PosicionVausX = 1
		else
			PosicionVausX = PosicionVausX - VelocidadVaus
		end if 
		
		Movido = 1
	end if
	
	if INKEY$ = "x" then
		PintarVaus()
		if PosicionVausX + AnchoVaus >= MaxX - VelocidadVaus then
			PosicionVausX = MaxX - AnchoVaus - 1
		else
			PosicionVausX = PosicionVausX + VelocidadVaus
		end if 		
		Movido = 1
	end if
	
	if INKEY$ = " " then
		PelotaLibre = 1
	end if

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

Si se pulsa una tecla se borra la raqueta (Vaus) se calcula la posición siguiente y al entrar en la parte en la que Movido = 1 se redibuja la raqueta.
Existe una característica que no hemos explicado demasiado y es al principio cuando la pelota está pegada a la raqueta eso es cuando PelotaLibre = 1, es ese caso la pelota se mueve también al mover la raqueta (la pelota se pone en el centro de Vaus) y es la última parte:
if PelotaLibre = 0 then
	DibujarPelota(PosicionPelotaX, PosicionPelotaY)
	PosicionPelotaX = PosicionVausX + AnchoVaus / 2
	DibujarPelota(PosicionPelotaX, PosicionPelotaY)
end if

Y por último DibujarPelota() es tan simple como llamar a un Circle(x, y, r), eso si con la precaución de poner un OVER 1 delante lo que le permite borrar la pelota antes de moverla, simplemente volviéndola a imprimir.
sub	DibujarPelota(PosicionPelotaX, PosicionPelotaY)

	circle over 1; PosicionPelotaX, PosicionPelotaY, RadioPelota

end sub

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 #6732 por pooky2
pooky2 respondió el tema: Aprendiendo a programar Videjuegos en Basic
Lo que queda es código para controlar la partida:
if PelotaPerdida() = 1 then
	VidaMenos()
	Reiniciar()
end if
		
if NLadrillos = 0 then
	SiguienteNivel()
end if

Veamos el código de PelotaPerdida(), pero como podrá imaginar solo comprueba que la pelota ha traspasado en horizontal la posición donde está Vaus pero además comprueba si Vaus le ha dado a la pelota y por tanto cambia su dirección. Fíjate en que si devuelve un 1, tomamos que es cierto, que la pelota se ha PERDIDO en caso contrario se devuelve 0.
function PelotaPerdida()
	
	if (PosicionPelotaY - RadioPelota = PosicionVausY + AltoVaus) then
		if (PosicionPelotaX >= PosicionVausX) and (PosicionPelotaX <= PosicionVausX + AnchoVaus) then
			VelocidadPelotaY = -VelocidadPelotaY
			CambiarBorde(BLANCO)
			return 0
		end if
	end if

	if (PosicionPelotaY < PosicionVausY - AltoVaus) then
		return 1
	else
		return 0
	end if
	
end function

El código puede ser un poco engorroso, pero si coges un PAPEL y un LÁPIZ (por cierto que son el secreto del BUEN PROGRAMADOR) y te pones a dibujar la nave y la pelota, ves donde están los puntos que deben tocarse, es decir normalmente a la pelota hay que sumarle o restarle (según esté subiendo o bajando) el radio y a Vaus hay que sumarle el AltoVaus si queremos coger la parte de arriba.

Gracias, un saludo.

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

Más
7 meses 1 semana antes - 7 meses 1 semana antes #6733 por pooky2
pooky2 respondió el tema: Aprendiendo a programar Videjuegos en Basic
Ya queda lo sencillo
VidaMenos()
Reiniciar()

Veamos VidaMenos() y la rutina que la complementa ImprimirVidas()
sub ImprimirVidas()
	print over 1; at  23, PosVidas; "Vidas: "; Vidas
end sub

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

Este código si que merece una explicación:

print over 1; at 23, PosVidas; "Vidas: "; Vidas

Hasta ahora habíamos dibujado / impreso en pantalla en pixels, es decir podíamos comenzar a dibujar en cualquier posición de la pantalla que tiene una resolución de 256x192 pixels.
Sin embargo ahora vamos a imprimir texto y el texto no se imprime en una posición en pixels, sino en filas y columnas y solo hay 32x24 posiciones para el texto, así que PRINT AT imprime en una de esas posibles 32 columnas y 24 filas.

Como siempre ponernos un OVER 1 para que al reimprimir se borre, a continuación la posición y separados por punto y coma ";" los textos y las variables que queremos imprimir en esa posición.

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 #6734 por pooky2
pooky2 respondió el tema: Aprendiendo a programar Videjuegos en Basic
La siguiente rutina a la que se llama es Reiniciar() de la que ya vimos su código:
sub Reiniciar()

	BorrarPantalla()
	CambiarBorde(BLANCO)
	
	PosicionVausX = 50
	PosicionVausY = 10
	PelotaLibre = 0

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

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

end sub

Y de lo único que nos faltaría mostrar el código es de ImprimirPuntos() que es muy similar a ImprimirVidas()
sub ImprimirPuntos()
	print over 1; at 23, PosPuntos; "Puntos: "; Puntos
end sub

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

Gracias, un saludo.

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

Más
7 meses 1 semana antes - 7 meses 1 semana antes #6735 por pooky2
pooky2 respondió el tema: Aprendiendo a programar Videjuegos en Basic
Ya tenéis todo el código del juego y podéis ir copiandolo en vuestro editor de texto favorito. Yo por mi parte dejaros el codigo y el tap ya compilado.

De todas formas os voy a dejar aquí el código, con unas pequeñas modificaciones, que incluyen más definición de CONSTANTES con el objetivo de que podais TUNEAR el juego simplemente cambiando los valores de las constantes sin tener que buscar y cambiar los valores dentro del juego:
#define NLadrillosX 10
#define NLadrillosY 6
#define VelocidadVaus 10
#define RadioPelota 2
#define BLANCO 7
#define MaxX 255
#define MaxY 191
#define SeparacionLadrilloX 25
#define SeparacionLadrilloY 8
#define AnchoLadrillo 20
#define AltoLadrillo 5
#define InicioMuroX 5  
#define InicioMuroY 130
#define AnchoVaus 40
#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

Y una cosa importante, en vez de utilizar 1 para Verdadero y 0 para Falso en el código, he declarado las constantes VERDADERO y FALSO para que sea más cómodo entender el código, que os pego completo a continuación:
#define NLadrillosX 10
#define NLadrillosY 6
#define VelocidadVaus 10
#define RadioPelota 2
#define BLANCO 7
#define MaxX 255
#define MaxY 191
#define SeparacionLadrilloX 25
#define SeparacionLadrilloY 8
#define AnchoLadrillo 20
#define AltoLadrillo 5
#define InicioMuroX 5  
#define InicioMuroY 130
#define AnchoVaus 40
#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 = 1
PelotaLibre = FALSO
NLadrillos = NLadrillosX * NLadrillosY

PosicionPelotaX = PosicionVausX + AnchoVaus / 2
PosicionPelotaY = PosicionVausY+2*RadioPelota+2
VelocidadPelotaX = VelocidadInicialX
VelocidadPelotaY = VelocidadInicialY
	
DIM Ladrillos(NLadrillosX, NLadrillosY) as BYTE

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

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

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(x, y)

	NLadrillos = NLadrillos - 1
	Ladrillos(x, y) = FALSO
	PintarLadrillo(x, y)
	
end sub

sub ComprobarMuro()

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

sub InicializarLadrillos()
	
	NLadrillos = 0
	for x = 0 to NLadrillosX - 1
		for y = 0 to NLadrillosY - 1
			Ladrillos(x,y) = COLOR
			NLadrillos = NLadrillos + 1
		next y
	next x

end sub

sub PintarLadrillo(x, y)
	
	LX = InicioMuroX + (SeparacionLadrilloX*x)
	LY = InicioMuroY + (SeparacionLadrilloY*y)
	
	plot over 1; LX, LY
	draw over 1; AnchoLadrillo, 0
	draw over 1; 0, AltoLadrillo
	draw over 1; -AnchoLadrillo, 0
	draw over 1; 0, -AltoLadrillo
	
end sub

sub PintarMuro()

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

end sub

sub BorrarPantalla()
	
	cls

end sub

sub PintarVaus()
	
	plot over 1; PosicionVausX, PosicionVausY
	draw over 1; AnchoVaus, 0
	draw over 1; 0, AltoVaus
	draw over 1; -AnchoVaus, 0
	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" 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

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.

Tiempo de carga de la página: 0.451 segundos

© Canarias Go Retro, 2016