Anuncios Google

duda luadev

bueno este es el codigo :

rojo = color.new(255,0,0)
blanco = color.new(255,255,255)
dofile("graficos.lua")
function captura()
	if controls.press("select") then 
		screenShot = screen.toimage();
		image.save(screenShot,"screenShot.png");
	end
end
function Menu_principal()
cY = 1
cX = 1
 
	function controles()
 
		if controls.press("up") then 
 
			cY = cY - 1;
 
		end
 
		if controls.press("down") then 
 
			cY = cY + 1;
 
		end
 
		if controls.press("left") then 
 
			cX = cX - 1;
 
		end
 
		if controls.press("right") then 
 
			cX = cX + 1;
 
		end
	end	
 
	function iniciar()
		if cX == 1 and cY == 1 then 
				screen.print(10,10,"Sistema",1,rojo,blanco)
				objeto[1]:blit(170,75)
				if controls.cross() then
					os.message("Esta es la opcion 1")
				end
		end	
		if cX == 2 and cY == 1 then 
				screen.print(10,10,"Opcion 2",1,rojo,blanco)
				objeto[1]:blit(170,145)
				if controls.cross() then
					os.message("Esta es la opcion 2")
				end
		end	
		if cX == 1 and cY == 2 then 
				screen.print(10,10,"Opcion 3",1,rojo,blanco)
				objeto[1]:blit(240,75)
				if controls.cross() then
					os.message("Esta es la opcion 3")
				end
		end
		if cX == 2 and cY == 2 then 
				screen.print(10,10,"Opcion 4",1,rojo,blanco)
				objeto[1]:blit(240,145)
				if controls.cross() then
					os.message("Esta es la opcion 4")
				end
		end
	end	
 
 
while true do
pintar_todo()
controles()
captura()
iniciar()
screen.flip();	
end		
end

lo que pasa es que al pulsar los botones no me mueve el objeto



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.
Imagen de User170294

Te falta el controls.read()

Te falta el controls.read()

El problema es que te falto

El problema es que te falto el controls.read() esto hace que se lea los controles, ponlo en el while true do, justo arriba de pintar todo. Osea el while true do seria asi:

while true do
controls.read()
pintar_todo()
controles()
captura()
iniciar()
screen.flip();	
end		

...

muchas gracias ya funciona , ha sido el error mas tonto de mi vida

 

De la función menu_principal,

De la función menu_principal, saca el while, la función iniciar y las variables cY, cX. En tu while, llama a iniciar y a menu_principal.

...

no lo he entendido podrias explicarmelo mejor porfavor

=/

Dentro de tu función menu_principal tienes el while, la función iniciar y las variables cX,cY correcto? Decláralos fuera, y en while llama a las funciones menu_principal e iniciar. Te queda algo así...

cX, cY = --lo que sea xD
function menu_principal()
--Mucho code aquí
end
 
function iniciar()
--más code aquí
end
 
while true do
menu_principal()
iniciar()
--y el resto de code acá
screen.flip()
end

...

sigue sin funcionar

 

Imagen de Dioni0396

Horrible...

Creas una funcion dentro de otra, luego a esta no la llamas, horrible...

Tu error esta en que no llamas a la funcion Menu_Principal() en el bucle.

PD: Se movera el objeto pero automaticamente volvera a su posicion original, aver si detectas el error

...

el bucle està dentro de la funcion por eso no la llamo

PD : como hago para que no vuelva automaticamente a su posicion inicial

Imagen de Dioni0396

OMG

No me habia fijado en eso, para solucionar eso saca cX y cY fuera de la funcion.

...

sigue sin funcionar copio , el nuevo codigo :

cY = 1
cX = 1
rojo = color.new(255,0,0)
blanco = color.new(255,255,255)
dofile("graficos.lua")
function Menu_principal()
 
	function controles()
 
		if controls.press("up") then 
 
			cY = cY - 1;
 
		end
 
		if controls.press("down") then 
 
			cY = cY + 1;
 
		end
 
		if controls.press("left") then 
 
			cX = cX - 1;
 
		end
 
		if controls.press("right") then 
 
			cX = cX + 1;
 
		end
		if cY < 1 then cY = 2; end
 
		if cY > 2 then cY = 1; end
 
		if cX < 1 then cX = 2; end
 
		if cX > 2 then cX = 1; end
	end	
 
	function iniciar()
		if cX == 1 and cY == 1 then 
				screen.print(10,10,"Sistema",1,rojo,blanco)
				objeto[1]:blit(170,75)
				if controls.cross() then
					os.message("Esta es la opcion 1")
				end
		end	
		if cX == 2 and cY == 1 then 
				screen.print(10,10,"Opcion 2",1,rojo,blanco)
				objeto[1]:blit(170,145)
				if controls.cross() then
					os.message("Esta es la opcion 2")
				end
		end	
		if cX == 1 and cY == 2 then 
				screen.print(10,10,"Opcion 3",1,rojo,blanco)
				objeto[1]:blit(240,75)
				if controls.cross() then
					os.message("Esta es la opcion 3")
				end
		end
		if cX == 2 and cY == 2 then 
				screen.print(10,10,"Opcion 4",1,rojo,blanco)
				objeto[1]:blit(240,145)
				if controls.cross() then
					os.message("Esta es la opcion 4")
				end
		end
	end	
 
 
	while true do
	pintar_todo()
	controles()
	captura()
	iniciar()
	screen.flip();	
	end		
end


Imagen de Dioni0396

Tiene que haber mas codigo

Ahi falta codigo. Enseñalo todo.

ese es todo el codigo

aparte de los graficos de mi hb i el scripc principal ke redirije directamente a este

codigo de graficos :

iconos = {
	image.load("imagenes/ico/ico_1.png");
	image.load("imagenes/ico/ico_2.png");
	image.load("imagenes/ico/ico_3.png");
	image.load("imagenes/ico/ico_4.png");
}
objeto = {
	image.load("imagenes/obj/obj_1.png")
}
bateria = {
 
	image.load("imagenes/bateria/bat_1.png");
 
	image.load("imagenes/bateria/bat_2.png");
 
	image.load("imagenes/bateria/bat_3.png");
 
	image.load("imagenes/bateria/bat_4.png");
 
}
function salvapantallas()
	if controls.press("hold") then
		screen.brightness(30)
		os.cpu(222)
	end
	if controls.release("hold") then
		screen.brightness(90)
		os.cpu(333)
	end
end
function cargar_ola(k)
 
	ola_imagen = image.load("imagenes/ola/ola_"..k..".png");
 
	ola_seleccionada = k;
 
	ini.write("config.ini", "ola_seleccionada", ola_seleccionada);
 
end
function pintar_ola()
 
	ola_posicion = ola_posicion - ola_velocidad;
 
	if ola_posicion <= 0 then ola_posicion = 480; end
 
	ola_imagen:blit(math.ceil(ola_posicion), 0);
 
	ola_imagen:blit(math.ceil(ola_posicion)-480, 0);
 
end
function cargar_bar(k)
 
	bar_imagen = image.load("imagenes/bar/bar_"..k..".png");
 
	bar_seleccionada = k;
 
	ini.write("config.ini", "bar_seleccionada", bar_seleccionada);
 
end
function pintar_bar()
 
	bar_imagen:blit(0, 0);
 
end
function cargar_wallpaper(k)
 
	wallpaper_imagen = image.load("imagenes/wall/wall_"..k..".png");
 
	wallpaper_seleccionado = k;
 
	ini.write("config.ini", "wallpaper_seleccionado", wallpaper_seleccionado);
 
end
function pintar_wallpaper()
 
	wallpaper_imagen:blit(0, 0);
 
end
function pintar_bateria()
 
	if batt.percent() > 75 then bateria[1]:blit(460, 5);
 
	elseif batt.percent() > 50 then bateria[2]:blit(460, 5);
 
	elseif batt.percent() > 25 then bateria[3]:blit(460, 5);
 
	else bateria[4]:blit(460, 5);
 
	end
 
end
function pintar_iconos()
	iconos[1]:blit(170,75)
	iconos[2]:blit(170,145)
	iconos[3]:blit(240,75)
	iconos[4]:blit(240,145)
end
function pintar_todo()
 
	pintar_wallpaper();
 
	pintar_bar();
 
	pintar_ola();
 
	pintar_bateria();
 
	--pintar_carga();
 
	pintar_iconos()
 
	salvapantallas();
 
end


...

no es por nada pero cual es el problema

Imagen de Dioni0396

Lo que me sorprende es que te va

pero no veo ningun while, como lo haces para que se repita infinitamente si no hay bucle...

Aqui falta mas codigo.

...

porque ese script es solo para cargar graficos despues eso se carga en el menu principal con la funcion pintar_todo

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.