

dofile("APP/calculadora/resolucion.lua")


trasero=true

fila1={}
fila2={}
fila3={}
fila4={}
fila5={}

for i=1,2 do
fila1[i]={x=-49+59*i,y=13,w=51,h=39}
end
fila1[3]={x=362,y=13,w=51,h=39}
fila1[4]={x=419,y=13,w=51,h=39}
for i=1,6 do
fila2[i]={x=-49+59*i,y=61,w=51,h=39}
end
for i=1,8 do
fila3[i]={x=-49+59*i,y=100,w=51,h=39}
end
for i=1,8 do
fila4[i]={x=-49+59*i,y=143,w=51,h=39}
end
for i=1,8 do
fila5[i]={x=-49+59*i,y=185,w=51,h=39}
end

igual={x=143,y=230,w=197,h=30}
salida={x=362,y=57,w=107,h=37}

mem1=0
mem2=0

numero={}
numero[1]="0"
numero[2]="0"
operacion=""
punto=false




function calculapsp(equ)
actual=1
	if not equ then
		liberar(2)
	end
	
while true do
controls.read()

if actual==3 then 
if operacion=="/" then numero[1]=numero[1]/numero[2] end
if operacion=="*" then numero[1]=numero[1]*numero[2] end
if operacion=="-" then numero[1]=numero[1]-numero[2] end
if operacion=="+" then numero[1]=numero[1]+numero[2] end
numero[2]=0
actual=1
end

fondoa:blit(0,0)

if trasero then screen.print(lcd,165,30,"888888888888888888",0.7,colortrasero,0) end
screen.print(lcd,335,30,tonumber(numero[actual]),0.7,blanco_t,0,"right")


if controls.press("square") then numero[actual]=0 punto=false end
if controls.press("triangle") and punto==false then numero[actual]=numero[actual].."." punto=true end
if controls.press("r") then numero[actual]=math.deg(numero[actual]) end
if controls.press("l") then numero[actual]=math.rad(numero[actual]) end

if controls.press("circle") then
if trasero then
trasero=false
else
trasero=true
end
end

if controls.press("select") then 
	equazione()
end

if controls.press("cross") then 

	if col(p,fila1[1]) then mem1=numero[actual] end
	if col(p,fila1[2]) then mem2=numero[actual] end
	if col(p,fila1[3]) then numero[actual]=mem1 end
	if col(p,fila1[4]) then numero[actual]=mem2 end
	
	if col(p,fila2[5]) then numero[1]=0 numero[2]=0 actual=1 punto=false mem1=0 mem2=0 end
	if col(p,fila2[6]) then numero[actual]=0 punto=false end
	
	if col(fila2[1],p) and tonumber(numero[actual])<99999999 then numero[actual]=numero[actual].. 7 end
	if col(fila2[2],p) and tonumber(numero[actual])<99999999 then numero[actual]=numero[actual].. 8 end
	if col(fila2[3],p) and tonumber(numero[actual])<99999999 then numero[actual]=numero[actual].. 9 end
	if col(fila3[1],p) and tonumber(numero[actual])<99999999 then numero[actual]=numero[actual].. 4 end
	if col(fila3[2],p) and tonumber(numero[actual])<99999999 then numero[actual]=numero[actual].. 5 end
	if col(fila3[3],p) and tonumber(numero[actual])<99999999 then numero[actual]=numero[actual].. 6 end
	if col(fila4[1],p) and tonumber(numero[actual])<99999999 then numero[actual]=numero[actual].. 1 end
	if col(fila4[2],p) and tonumber(numero[actual])<99999999 then numero[actual]=numero[actual].. 2 end
	if col(fila4[3],p) and tonumber(numero[actual])<99999999 then numero[actual]=numero[actual].. 3 end
	if col(fila5[1],p) and tonumber(numero[actual])<99999999 then numero[actual]=numero[actual].. 0 end
	
	if col(fila3[5],p) then numero[actual]=math.sin(numero[actual]) end
	if col(fila3[6],p) then numero[actual]=math.asin(numero[actual]) end
	if col(fila3[7],p) then numero[actual]=math.pi punto=true end
	if col(fila3[8],p) then numero[actual]=math.log(numero[actual]) end
	if col(fila4[5],p) then numero[actual]=math.cos(numero[actual]) end
	if col(fila4[6],p) then numero[actual]=math.acos(numero[actual]) end
	if col(fila4[7],p) then numero[actual]=math.pow(2,numero[actual]) end
	if col(fila4[8],p) then 
		local x=os.osk("Potencia","",1,1,1) 
			if x!="" then
				numero[actual]=tonumber(math.pow(x,numero[actual])) end 
				x=nil
		end
	if col(fila5[7],p) then numero[actual]=math.tan(numero[actual]) end
	if col(fila5[8],p) then numero[actual]=math.atan(numero[actual]) end
	
	if actual==1 then
		if col(fila2[4],p) then operacion="/" actual=2 end
		if col(fila3[4],p) then operacion="*" actual=2 end
		if col(fila4[4],p) then operacion="-" actual=2 end
		if col(fila5[4],p) then operacion="+" actual=2 end
	end
	if col(p,igual) and actual==2 then actual=3 end
	if col(p,salida) then sistema("CalculaPSP",true) end

	if col(p,fila5[2]) and punto==false then numero[actual]=numero[actual].."." punto=true end
	if col(p,fila5[3]) then numero[actual]=0-numero[actual] end
	if col(p,fila5[5]) then numero[actual]=numero[actual]/100 end
	if col(p,fila5[6]) then numero[actual]=math.sqrt(numero[actual]) end
end


if controls.press("start") then sistema("CalculaPSP") end

puntero(true)
screen.flip()
end
end

eq={}
eq[1]={}
eq[1][1]={x=151,y=84,w=71,h=33}
eq[1][2]={x=151,y=122,w=33,h=33,s="7"}
eq[1][3]={x=151,y=160,w=33,h=33,s="4"}
eq[1][4]={x=151,y=197,w=33,h=33,s="1"}
eq[1][5]={x=151,y=234,w=71,h=33,s="0"}

eq[2]={}
eq[2][1]={x=189,y=122,w=33,h=33,s="8"}
eq[2][2]={x=189,y=160,w=33,h=33,s="5"}
eq[2][3]={x=189,y=197,w=33,h=33,s="2"}

eq[3]={}
eq[3][1]={x=228,y=84,w=33,h=33,s="/"}
eq[3][2]={x=228,y=122,w=33,h=33,s="9"}
eq[3][3]={x=228,y=160,w=33,h=33,s="6"}
eq[3][4]={x=228,y=197,w=33,h=33,s="3"}
eq[3][5]={x=228,y=234,w=33,h=33,s="."}

eq[4]={}
eq[4][1]={x=266,y=84,w=33,h=33,s="*"}
eq[4][2]={x=266,y=122,w=33,h=33,s="-"}
eq[4][3]={x=266,y=160,w=33,h=33,s="+"}
eq[4][4]={x=266,y=197,w=33,h=70}

eq[5]={}
eq[5][1]={x=304,y=84,w=33,h=33}
eq[5][2]={x=304,y=122,w=33,h=33,s="x"}
eq[5][3]={x=304,y=160,w=33,h=33,s="^"}
eq[5][4]={x=304,y=197,w=33,h=70}


function eq_f(o,i)
	if controls.press("cross") then
		if o==1 and i==1 then
			seg[cadena]=seg[cadena]:sub(1,#seg[cadena]-1)
			return
		end
		if o==5 and i==4 then
			busqueda()
			return
		end
		if o==5 and i==1 then
			if parentesis then
				seg[cadena]=seg[cadena]..")"
				parentesis=false
			else
				seg[cadena]=seg[cadena].."("
				parentesis=true
			end
			return
		end
		if o==4 and i==4 then
			cadena=cadena+1
			if cadena>2 then cadena=1 end
			return
		end
		if eq[o][i].s!=nil then
			if #seg[cadena]<16 then
				seg[cadena]=seg[cadena]..eq[o][i].s
			end
		end
	end
end


function equazione()

px=1
py=1

seg={}
seg[1]=""
seg[2]=""

cadena=1
parentesis=false


while true do
controls.read()
img_escritorio[fondo_escritorio]:blend(0,0,200)
fondob:blit(0,0)

if cadena==1 then 
	screen.print(156,21,">",0.7,negro,rojo) 
else 
	screen.print(156,58,">",0.7,negro,rojo) 
end

screen.print(170,20,seg[1],0.7,negro,0) 
screen.print(170,60,seg[2],0.7,negro,0) 

for o=1,5 do
	for i=1,#eq[o] do
		if col(p,eq[o][i]) then
			draw.fillrect(eq[o][i].x,eq[o][i].y,eq[o][i].w,eq[o][i].h,blanco_t)
			eq_f(o,i)
		end
	end
end

if controls.press("square") then
	seg[cadena]=seg[cadena]:sub(1,#seg[cadena]-1)
end

if controls.press("start") then sistema("CalculaPSP") end
if controls.press("select") then calculapsp(true) end


puntero()
screen.flip()

end
end


