Antes de seguir vamos a afianzar lo aprendido y aplicarlo a un ejemplo de minijuego. Con apenas unas lineas interactuamos con el programa, repasaremos variables, condiciones y bucles.

El objetivo es adivinar un número al azar entre 1 y 10 en menos de 3 intentos. Para ello el ordenador «pensará» un número y nos pedirá que le demos números hasta que lo acertemos o gastemos todos los intentos.

El código

-- inicio funciones
function bienvenida(titulo)
	print("www.altaruru.com lua - basics - bucles")
	print(titulo .. "\n")
	print("hola, he pensado un número del 1 al 10")
	print("intenta adivinarlo! :-D")
end

function piensanumero()
	math.randomseed(os.time())
	return math.random(1,10)
end

function pedirnumero()
	print("dime tu numero")
	numero=io.read("*n")
	return numero
end

function compruebanumero(numero, intentos)
	if(numero<1 or numero>10) then
		print(">> El número " .. numero .. " no es válido,")
		print("   debe ser un número del 1 al 10")
	else
		if(adivina ~= numero) then
			intentos = intentos - 1
			print(">> No es el numero " .. numero)
			if(intentos>0) then			
				if(intentos>1) then
					print(">> Te quedan " .. intentos .. " intentos!")
				else
					print(">> Último intento!!")
				end
			end
		end
	end
	return intentos
end

function resultado(adivina, numero)
	if(adivina == numero) then
		print(">> Acertaste! ;-)  mi numero es el " .. adivina)
	else
		print(">> Ohh :-(, mi numero era el " .. adivina)
	end
end

-- fin funciones

-- inicio codigo principal:
bienvenida("mini juego - Repaso I")
adivina = piensanumero()
numero = 0
intentos = 3
print("Tienes " .. intentos .. " intentos!")
-- bucle principal
while(adivina ~= numero and intentos > 0)
do	
	numero=pedirnumero()
	intentos=compruebanumero(numero, intentos)
end
resultado(adivina, numero)

Se ha dividido y organizado el código utilizando funciones.

Ejecutalo y juega con el, prueba a hacer modificaciones como cambiar el rango de números, o el número de intentos.

Muchas veces necesitaremos un valor al azar, la forma de obtenerlo es con la función math.random(). En la entrada del curso Invaders, «Invaders VII – Azar, números aleatorios» se explica con todo detalle.

Verás que hay muchas condiciones que evaluar, casi todos los programas se basan en analizar condiciones y toman un camino u otro en función de las mismas.

Dejo enlaces a las entradas del curso a las que hace referencia por si necesitas un repaso:

Al utilizar Lua sin Love2d hemos omitido la parte gráfica, en próximas entradas volvemos a jugar con gráficos.

Espero resulte divertido.

Saludos!

Deja tu comentario