From 8c6df742371192e40d1cb6aca97bcfa2fd5fd15d Mon Sep 17 00:00:00 2001 From: MrZ626 <1046101471@qq.com> Date: Thu, 28 Oct 2021 02:34:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A1=E7=AE=97=E5=99=A8=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E5=BC=B9=E7=90=B4=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- parts/scenes/app_calc.lua | 70 ++++++++++++++++++++++++++------------- 1 file changed, 47 insertions(+), 23 deletions(-) diff --git a/parts/scenes/app_calc.lua b/parts/scenes/app_calc.lua index ac40ec13..3e0fa6e7 100644 --- a/parts/scenes/app_calc.lua +++ b/parts/scenes/app_calc.lua @@ -1,6 +1,15 @@ local gc=love.graphics local kb=love.keyboard +local keySounds={ + ['1']='C5',['2']='D5',['3']='E5', + ['4']='F5',['5']='G5',['6']='A5', + ['7']='B5',['8']='C6',['9']='D6', + ['0']='E6',['.']='F6',['e']='G6', + ['+']='C#5',['-']='D#5',['*']='F#5',['/']='G#5', + ['backspace']='A#5',['return']='C#6', +} + local scene={} local reg--register @@ -9,7 +18,7 @@ local sym--symbol local function _autoReturn() if reg and sym then - scene.keyDown("return") + scene.keyDown("calculate") else reg=false end @@ -26,9 +35,22 @@ end scene.mouseDown=NULL function scene.keyDown(key) - if key:sub(1,2)=="kp"then + if kb.isDown("lshift","rshift")then + if key=="="then + scene.keyDown("+") + return + elseif kb.isDown("lshift","rshift")and key=="8"then + scene.keyDown("*") + return + end + elseif key:sub(1,2)=="kp"then scene.keyDown(key:sub(3)) - elseif key=="."then + return + end + if keySounds[key]then + Snd('bell',keySounds[key]) + end + if key=="."then if sym=="="then sym,reg=false,false val="0." @@ -58,10 +80,10 @@ function scene.keyDown(key) if val==""then val="0" end - elseif key=="+"or key=="="and kb.isDown("lshift","rshift")then + elseif key=="+"then _autoReturn() sym="+" - elseif key=="*"or key=="8"and kb.isDown("lshift","rshift")then + elseif key=="*"then _autoReturn() sym="*" elseif key=="-"then @@ -86,6 +108,8 @@ function scene.keyDown(key) end end elseif key=="return"then + scene.keyDown("calculate") + elseif key=="calculate"then val=val:gsub("e$","") if sym and reg then reg=reg:gsub("e$","") @@ -121,24 +145,24 @@ function scene.draw() end scene.widgetList={ - WIDGET.newKey{name='_1',x=145,y=300,w=90,fText="1",font=50,code=pressKey"1"}, - WIDGET.newKey{name='_2',x=245,y=300,w=90,fText="2",font=50,code=pressKey"2"}, - WIDGET.newKey{name='_3',x=345,y=300,w=90,fText="3",font=50,code=pressKey"3"}, - WIDGET.newKey{name='_4',x=145,y=400,w=90,fText="4",font=50,code=pressKey"4"}, - WIDGET.newKey{name='_5',x=245,y=400,w=90,fText="5",font=50,code=pressKey"5"}, - WIDGET.newKey{name='_6',x=345,y=400,w=90,fText="6",font=50,code=pressKey"6"}, - WIDGET.newKey{name='_7',x=145,y=500,w=90,fText="7",font=50,code=pressKey"7"}, - WIDGET.newKey{name='_8',x=245,y=500,w=90,fText="8",font=50,code=pressKey"8"}, - WIDGET.newKey{name='_9',x=345,y=500,w=90,fText="9",font=50,code=pressKey"9"}, - WIDGET.newKey{name='_0',x=145,y=600,w=90,fText="0",font=50,code=pressKey"0"}, - WIDGET.newKey{name='.',x=245,y=600,w=90,fText=".",color='lM',font=50,code=pressKey"."}, - WIDGET.newKey{name='e',x=345,y=600,w=90,fText="e",color='lM',font=50,code=pressKey"e"}, - WIDGET.newKey{name='+',x=445,y=300,w=90,fText="+",color='lB',font=50,code=pressKey"+"}, - WIDGET.newKey{name='-',x=445,y=400,w=90,fText="-",color='lB',font=50,code=pressKey"-"}, - WIDGET.newKey{name='*',x=445,y=500,w=90,fText="*",color='lB',font=50,code=pressKey"*"}, - WIDGET.newKey{name='/',x=445,y=600,w=90,fText="/",color='lB',font=50,code=pressKey"/"}, - WIDGET.newKey{name='<',x=545,y=300,w=90,fText="<",color='lR',font=50,code=pressKey"backspace"}, - WIDGET.newKey{name='=',x=545,y=400,w=90,fText="=",color='lY',font=50,code=pressKey"return"}, + WIDGET.newKey{name='_1',x=145,y=300,w=90,sound=false,fText="1",font=50,code=pressKey"1"}, + WIDGET.newKey{name='_2',x=245,y=300,w=90,sound=false,fText="2",font=50,code=pressKey"2"}, + WIDGET.newKey{name='_3',x=345,y=300,w=90,sound=false,fText="3",font=50,code=pressKey"3"}, + WIDGET.newKey{name='_4',x=145,y=400,w=90,sound=false,fText="4",font=50,code=pressKey"4"}, + WIDGET.newKey{name='_5',x=245,y=400,w=90,sound=false,fText="5",font=50,code=pressKey"5"}, + WIDGET.newKey{name='_6',x=345,y=400,w=90,sound=false,fText="6",font=50,code=pressKey"6"}, + WIDGET.newKey{name='_7',x=145,y=500,w=90,sound=false,fText="7",font=50,code=pressKey"7"}, + WIDGET.newKey{name='_8',x=245,y=500,w=90,sound=false,fText="8",font=50,code=pressKey"8"}, + WIDGET.newKey{name='_9',x=345,y=500,w=90,sound=false,fText="9",font=50,code=pressKey"9"}, + WIDGET.newKey{name='_0',x=145,y=600,w=90,sound=false,fText="0",font=50,code=pressKey"0"}, + WIDGET.newKey{name='.',x=245,y=600,w=90,sound=false,fText=".",color='lM',font=50,code=pressKey"."}, + WIDGET.newKey{name='e',x=345,y=600,w=90,sound=false,fText="e",color='lM',font=50,code=pressKey"e"}, + WIDGET.newKey{name='+',x=445,y=300,w=90,sound=false,fText="+",color='lB',font=50,code=pressKey"+"}, + WIDGET.newKey{name='-',x=445,y=400,w=90,sound=false,fText="-",color='lB',font=50,code=pressKey"-"}, + WIDGET.newKey{name='*',x=445,y=500,w=90,sound=false,fText="*",color='lB',font=50,code=pressKey"*"}, + WIDGET.newKey{name='/',x=445,y=600,w=90,sound=false,fText="/",color='lB',font=50,code=pressKey"/"}, + WIDGET.newKey{name='<',x=545,y=300,w=90,sound=false,fText="<",color='lR',font=50,code=pressKey"backspace"}, + WIDGET.newKey{name='=',x=545,y=400,w=90,sound=false,fText="=",color='lY',font=50,code=pressKey"return"}, WIDGET.newKey{name='back',x=1135,y=640,w=170,h=80,font=60,fText=CHAR.icon.back,code=backScene}, }