修复计算器e键非法输入报错

This commit is contained in:
MrZ626
2020-10-13 10:42:16 +08:00
parent e89a4c682d
commit 285af92d88

View File

@@ -47,10 +47,6 @@ do--calculator
end end
mouseDown.calculator=NULL mouseDown.calculator=NULL
local function EGG(str)
sceneTemp.reg=str
sceneTemp.sym="="
end
function keyDown.calculator(k) function keyDown.calculator(k)
local S=sceneTemp local S=sceneTemp
if byte(k)>=48 and byte(k)<=57 then if byte(k)>=48 and byte(k)<=57 then
@@ -68,6 +64,10 @@ do--calculator
end end
elseif k=="."then elseif k=="."then
if not(find(S.val,".",nil,true)or find(S.val,"e"))then if not(find(S.val,".",nil,true)or find(S.val,"e"))then
if S.sym and not S.reg then
S.reg=S.val
S.val="0."
end
S.val=S.val.."." S.val=S.val.."."
end end
elseif k=="e"then elseif k=="e"then
@@ -75,7 +75,13 @@ do--calculator
S.val=S.val.."e" S.val=S.val.."e"
end end
elseif k=="backspace"then elseif k=="backspace"then
S.val=sub(S.val,1,-2) if S.sym=="="then
S.val=""
elseif S.sym then
S.sym=false
else
S.val=sub(S.val,1,-2)
end
if S.val==""then S.val="0"end if S.val==""then S.val="0"end
elseif k=="+"or k=="="and kb.isDown("lshift","rshift")then elseif k=="+"or k=="="and kb.isDown("lshift","rshift")then
S.sym="+" S.sym="+"
@@ -90,37 +96,37 @@ do--calculator
S.sym="/" S.sym="/"
S.reg=false S.reg=false
elseif k=="return"then elseif k=="return"then
if S.val then if byte(S.val,-1)==101 then S.val=sub(S.val,1,-2)end
if S.sym and S.reg then if S.sym and S.reg then
S.val= if byte(S.reg,-1)==101 then S.reg=sub(S.reg,1,-2)end
S.sym=="+"and (tonumber(S.reg)or 0)+tonumber(S.val)or S.val=
S.sym=="-"and (tonumber(S.reg)or 0)-tonumber(S.val)or S.sym=="+"and (tonumber(S.reg)or 0)+tonumber(S.val)or
S.sym=="*"and (tonumber(S.reg)or 0)*tonumber(S.val)or S.sym=="-"and (tonumber(S.reg)or 0)-tonumber(S.val)or
S.sym=="/"and (tonumber(S.reg)or 0)/tonumber(S.val)or S.sym=="*"and (tonumber(S.reg)or 0)*tonumber(S.val)or
-1 S.sym=="/"and (tonumber(S.reg)or 0)/tonumber(S.val)or
end -1
S.sym="=" end
S.reg=false S.sym="="
local v=tonumber(S.val) S.reg=false
if v==600+26 then S.pass=true local v=tonumber(S.val)
elseif v==190000+6022 then if v==600+26 then S.pass=true
S.pass,marking=true elseif v==190000+6022 then
LOG.print("\68\69\86\58\87\97\116\101\114\109\97\114\107\32\82\101\109\111\118\101\100","message") S.pass,marking=true
SFX.play("clear") LOG.print("\68\69\86\58\87\97\116\101\114\109\97\114\107\32\82\101\109\111\118\101\100","message")
elseif v==72943816 then SFX.play("clear")
S.pass=true elseif v==72943816 then
for name,M in next,Modes do S.pass=true
if not modeRanks[name]then for name,M in next,Modes do
modeRanks[name]=M.score and 0 or 6 if not modeRanks[name]then
end modeRanks[name]=M.score and 0 or 6
end end
FILE.saveUnlock()
LOG.print("\68\69\86\58\85\78\76\79\67\75\65\76\76","message")
SFX.play("clear_2")
elseif v==1379e8+2626e4+1379 then
S.pass=true
SCN.go("debug")
end end
FILE.saveUnlock()
LOG.print("\68\69\86\58\85\78\76\79\67\75\65\76\76","message")
SFX.play("clear_2")
elseif v==1379e8+2626e4+1379 then
S.pass=true
SCN.go("debug")
end end
elseif k=="escape"then elseif k=="escape"then
S.val,S.reg,S.sym="0" S.val,S.reg,S.sym="0"