os.cpu(333)

sudoku={
{" ","3"," ","7"," "," "," "," ","5"},
{" ","8","6"," ","4"," "," "," "," "},
{"9"," "," "," "," "," "," "," "," "},
{" ","9"," "," ","1"," "," ","3"," "},
{" "," ","3","9","6"," ","5"," ","7"},
{" "," ","2"," ","8"," "," "," "," "},
{" ","6"," "," "," "," "," ","4","3"},
{" "," "," ","1"," "," "," "," "," "},
{" "," ","7"," ","9"," "," ","1","8"},
}

intocables={
{" ","3"," ","7"," "," "," "," ","5"},
{" ","8","6"," ","4"," "," "," "," "},
{"9"," "," "," "," "," "," "," "," "},
{" ","9"," "," ","1"," "," ","3"," "},
{" "," ","3","9","6"," ","5"," ","7"},
{" "," ","2"," ","8"," "," "," "," "},
{" ","6"," "," "," "," "," ","4","3"},
{" "," "," ","1"," "," "," "," "," "},
{" "," ","7"," ","9"," "," ","1","8"},
}


numx=1
numy=1

verdad=false

function victoria()
local moment=true
for y=1, 9 do
	for x=1, 9 do
		if sudoku[y][x]==" " then moment=false break end
	end
end
if moment==true then os.message("Sudoku Completado. Enhorabuena!") end
end	

function comprobar()
for y=1, 9 do
for x=1, 9 do
		for y2=1, 9 do
		for x2=1, 9 do
			if sudoku[y][x]!=" " then
				if sudoku[y][x]==sudoku[y2][x2] and y==y2 and x!=x2 then os.message("Misma Fila") sudoku[numy][numx]=" " end
				if sudoku[y][x]==sudoku[y2][x2] and y!=y2 and x==x2 then os.message("Misma Columna") sudoku[numy][numx]=" " end
				if sudoku[y][x]==sudoku[y2][x2] and y==y2 and x!=x2 then os.message("Misma Fila") sudoku[numy][numx]=" " end
			end
		end
		end
end
end

for y=1,3 do
for x=1,3 do
	for y2=1, 3 do
	for x2=1, 3 do
		if sudoku[y][x]!=" " and x!=x2 and y!=y2 then
			if 	sudoku[y][x]==sudoku[y2][x2] then os.message("Mismo Cuadro") sudoku[numy][numx]=" " end
		end
	end
	end
end
end

for y=4,6 do
for x=1,3 do
	for y2=4, 6 do
	for x2=1, 3 do
		if sudoku[y][x]!=" " and x!=x2 and y!=y2 then
			if 	sudoku[y][x]==sudoku[y2][x2] then os.message("Mismo Cuadro") sudoku[numy][numx]=" " end
		end
	end
	end
end
end

for y=7,9 do
for x=1,3 do
	for y2=7, 9 do
	for x2=1, 3 do
		if sudoku[y][x]!=" " and x!=x2 and y!=y2 then
			if 	sudoku[y][x]==sudoku[y2][x2] then os.message("Mismo Cuadro") sudoku[numy][numx]=" " end
		end
	end
	end
end
end

for y=1,3 do
for x=4,6 do
	for y2=1, 3 do
	for x2=4, 6 do
		if sudoku[y][x]!=" " and x!=x2 and y!=y2 then
			if 	sudoku[y][x]==sudoku[y2][x2] then os.message("Mismo Cuadro") sudoku[numy][numx]=" " end
		end
	end
	end
end
end

for y=4,6 do
for x=4,6 do
	for y2=4, 6 do
	for x2=4, 6 do
		if sudoku[y][x]!=" " and x!=x2 and y!=y2 then
			if 	sudoku[y][x]==sudoku[y2][x2] then os.message("Mismo Cuadro") sudoku[numy][numx]=" " end
		end
	end
	end
end
end

for y=7,9 do
for x=4,6 do
	for y2=7, 9 do
	for x2=4, 6 do
		if sudoku[y][x]!=" " and x!=x2 and y!=y2 then
			if 	sudoku[y][x]==sudoku[y2][x2] then os.message("Mismo Cuadro") sudoku[numy][numx]=" " end
		end
	end
	end
end
end

for y=1,3 do
for x=7,9 do
	for y2=1, 3 do
	for x2=7, 9 do
		if sudoku[y][x]!=" " and x!=x2 and y!=y2 then
			if 	sudoku[y][x]==sudoku[y2][x2] then os.message("Mismo Cuadro") sudoku[numy][numx]=" " end
		end
	end
	end
end
end

for y=4,6 do
for x=7,9 do
	for y2=4, 6 do
	for x2=7, 9 do
		if sudoku[y][x]!=" " and x!=x2 and y!=y2 then
			if 	sudoku[y][x]==sudoku[y2][x2] then os.message("Mismo Cuadro") sudoku[numy][numx]=" " end
		end
	end
	end
end
end

for y=7,9 do
for x=7,9 do
	for y2=7, 9 do
	for x2=7, 9 do
		if sudoku[y][x]!=" " and x!=x2 and y!=y2 then
			if 	sudoku[y][x]==sudoku[y2][x2] then os.message("Mismo Cuadro") sudoku[numy][numx]=" " end
		end
	end
	end
end
end

end

pensando=timer.new()

dificultad=1

function sudok()
pensando:start()
minutos=0
segundos=0
dofile("GAMES/sudoku/niveles.lua")
while true do
controls.read()
img_sudok:blit(0,0)

if dificultad==1 then screen.print(65,148,"Muy Fácil",rojo) end
if dificultad==2 then screen.print(74,148,"Fácil",rojo) end
if dificultad==3 then screen.print(70,148,"Difícil",rojo) end
if dificultad==4 then screen.print(65,148,"Muy Difícil",rojo) end

segundos=math.ceil(pensando:time()/1000)
screen.print(40,210,"Segundos: "..segundos,rojo)



if controls.press("cross") and intocables[numy][numx]==" " then 
if keyboard==1 then 
	a=teclado(2,"Sudoku",1,"")
	a=tonumber(a)
	if a!=nil then
		sudoku[numy][numx]=a
	end
else 
	sudoku[numy][numx]=os.osk("Sudoku","",1,1,1) 
end 
if sudoku[numy][numx]=="" then sudoku[numy][numx]=" " else verdad=true end
end


for y=1, 9 do
	for x=1, 9 do
		if intocables[y][x]!=" " then screen.print(208+25*x,4+25*y,sudoku[y][x],azul) else screen.print(206+25*x,4+25*y,sudoku[y][x],verde) end
		if numx==x and numy==y then 
			draw.rect(206+25*x,1+25*y,20,20,rojo)
		end
	end
end	


if verdad then comprobar() end


verdad=false

if controls.press("left") and numx>1 then numx=numx-1 elseif controls.press("right") and numx<9 then numx=numx+1 end
if controls.press("up") and numy>1 then numy=numy-1 elseif controls.press("down") and numy<9 then numy=numy+1 end
if controls.start() then main_sudoku() end


victoria()
screen.flip()
end
end
