Anuncios Google

[LuaDEV](Solucionado) Generar un Mapa Aleatorio

Hola, pues me gustaria crear un juego como Terraria o Starbound, pues empeze por crear un mapa aleatorio, el problema es que LuaDev me da un error, y no se como arreglarlo.

El error que me dice es: script.lua:15. attempt to index field ? (a nil value)

 

SOLUCION: esta en los comentarios, dejo el codigo actualiza para quien lo necesite junto a dos capturas.


Aqui teneis el codigo:

 

script.lua

dofile("bloques.lua")
 
mapa = {}
 
screenshot = ""
 
for y = 0,26 do
	mapa[y] = {}
	for x = 0, 47 do
		mapa[y][x] = math.random(0,9)
	end
end
 
while true do
 
	controls.read()
 
	for Y = 0,26 do
		for X = 0,47 do
			bloque[mapa[Y][X]]:blit(X*10,Y*10)
		end
	end
 
	if controls.press("r") then
		fallo()
	end
 
	if controls.press("l") then
		screenshot = screen.toimage()
		image.save(screenshot,"screenshot.png")
	end
 
	screen.flip()
end

bloques.lua

bloque = {}
 
bloque[0] = image.load("img/Bloque Amarillo.png")
bloque[1] = image.load("img/Bloque Azul.png")
bloque[2] = image.load("img/Bloque Blanco.png")
bloque[3] = image.load("img/Bloque Gris.png")
bloque[4] = image.load("img/Bloque Lima.png")
bloque[5] = image.load("img/Bloque Morado.png")
bloque[6] = image.load("img/Bloque Naranja.png")
bloque[7] = image.load("img/Bloque Negro.png")
bloque[8] = image.load("img/Bloque Purpura.png")
bloque[9] = image.load("img/Bloque Rojo.png")

Las imagenes que cargo son imagenes de 10x10 pixel de colores.

 

CAPTURAS:

Captura 1

Captura 2

 

Saludos y Gracias.


Programador en C++ y Lua.

Creando un Juego con Unity3D para Android.

Deseo poder crear mi propio IDE para C++ y un Motor de Videojuegos.


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Mmm...

Primero, hace tiempo que no me paso por aqui y que no toco LuaDEV asi que voy a intentar no responder alguna tontería.

  • La función blend toma 4 argumentos, tu le estas indicando 3, imagen, pixel x y pixel y, pero no indicas el canal alpha por ninguna parte, intenta usar la función blit en vez de blend.
  • Puede que tengas un problema con el editor que estas usando, asegurate de que el archivo está en codificación ASCII.

 

Aparte de esto yo no veo otro fallo

Saludos!

Imagen de AdriGV

No me habia fijado en el BLEN

No me habia fijado en el BLEND, pero en realidad iba a poner un BLIT, lo cambiare ahora mismo, de todas forma creo que si no pones un valor ALPHA LuaDEV lo interpreta como por defecto que es 255 (no se exactamente), probare cambiarlo a ANCII.

 

Gracias y Feliz Navidad.


Programador en C++ y Lua.

Creando un Juego con Unity3D para Android.

Deseo poder crear mi propio IDE para C++ y un Motor de Videojuegos.

Imagen de gdljjrod

Checa aquí

Primero debes declarar que mapa[y] es una tabla, así:

for y=0,26 do
  mapa[y]={}
    for... 
     ...resto del code


 

Imagen de AdriGV

Gracias

Gracias a ti pude solucionarlo, actualizare el code del post y pondre unas capturas.

 

Gracias y Feliz Navidad.

Imagen de gdljjrod

De hecho

Estas variables aquí:

x = 0
y = 0
 
X = 0
Y = 0

están de más, ya que con el for se inicializan (es Luadev y no C xDD), así ya puedes quitar el mapa.lua y declarar la tabla mapa={} antes del primer For en el script.lua

 


 

Imagen de Almamu

Un apunte, en C tambien se

Un apunte, en C tambien se puede declarar la variable en el bucle for sin necesidad de que esté declarada fuera, en la misma "cabecera" del for puedes.


Imagen de Andresmargar

No, eso es solo en C++, en C

No, eso es solo en C++, en C hay que declararla antes.

Saludos.

 

Imagen de Almamu

Depende de la versión del

Depende de la versión del estandar que uses puedes o no.

C?

Me resolveis la duda? Esto es válido en C o solo en ANSI C o C++

for(int z=0;z<1024;z++){
 ...
}

Saludos!

Imagen de Almamu

En ANSI C no es válido, el

En ANSI C no es válido, el estándar c99 (creo que era) es valido para C. Y en C++ es correcto.

Imagen de gdljjrod

Mm

Yo solo lo he probado en C++, en C no se puede.

Imagen de gdljjrod

Claro

Pero yo a lo que me referia exactamente es que sobraba en Luadev iniciar las dos variables en 0 (Como si las estuvieras declarando en C) y despues en los for volverlas a inicializar...


 

Imagen de AdriGV

Ya lo e actualizado

Ya lo e actualizado, gracias de nuevo.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.