Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f82e979f9c |
8
ai.lua
8
ai.lua
@@ -60,7 +60,7 @@ function resetField(f0,f,start)
|
|||||||
goto L
|
goto L
|
||||||
end
|
end
|
||||||
for i=start,#f0 do
|
for i=start,#f0 do
|
||||||
f[i]=getNewRow()
|
f[i]=getNewRow(0)
|
||||||
for j=1,10 do
|
for j=1,10 do
|
||||||
f[i][j]=f0[i][j]
|
f[i][j]=f0[i][j]
|
||||||
end
|
end
|
||||||
@@ -69,7 +69,7 @@ end
|
|||||||
function getScore(field,bn,cb,cx,cy)
|
function getScore(field,bn,cb,cx,cy)
|
||||||
local score=0
|
local score=0
|
||||||
local highest=0
|
local highest=0
|
||||||
local height=getNewRow()
|
local height=getNewRow(0)
|
||||||
local clear=0
|
local clear=0
|
||||||
local hole=0
|
local hole=0
|
||||||
|
|
||||||
@@ -124,7 +124,7 @@ function AI_getControls(ctrl)
|
|||||||
local Tfield={}--test field
|
local Tfield={}--test field
|
||||||
local field_org=P.field
|
local field_org=P.field
|
||||||
for i=1,#field_org do
|
for i=1,#field_org do
|
||||||
Tfield[i]=getNewRow()
|
Tfield[i]=getNewRow(0)
|
||||||
for j=1,10 do
|
for j=1,10 do
|
||||||
Tfield[i][j]=field_org[i][j]
|
Tfield[i][j]=field_org[i][j]
|
||||||
end
|
end
|
||||||
@@ -142,7 +142,7 @@ function AI_getControls(ctrl)
|
|||||||
end--move to bottom
|
end--move to bottom
|
||||||
for i=1,#cb do
|
for i=1,#cb do
|
||||||
local y=cy+i-1
|
local y=cy+i-1
|
||||||
if not Tfield[y]then Tfield[y]=getNewRow()end
|
if not Tfield[y]then Tfield[y]=getNewRow(0)end
|
||||||
for j=1,#cb[1]do
|
for j=1,#cb[1]do
|
||||||
if cb[i][j]then
|
if cb[i][j]then
|
||||||
Tfield[y][cx+j-1]=1
|
Tfield[y][cx+j-1]=1
|
||||||
|
|||||||
319
call&sys.lua
319
call&sys.lua
@@ -1,16 +1,15 @@
|
|||||||
local gc=love.graphics
|
local gc,tm=love.graphics,love.timer
|
||||||
local tm=love.timer
|
local ms,kb,tc=love.mouse,love.keyboard,love.touch
|
||||||
local ms=love.mouse
|
|
||||||
local tc=love.touch
|
|
||||||
local wd=love.window
|
local wd=love.window
|
||||||
local setFont=setFont
|
local setFont=setFont
|
||||||
local Timer=tm.getTime
|
local Timer=tm.getTime
|
||||||
|
|
||||||
local ww,wh=gc.getWidth(),gc.getHeight()
|
local scr=scr
|
||||||
local xOy=love.math.newTransform()
|
local xOy=love.math.newTransform()
|
||||||
local focus=true
|
local focus=true
|
||||||
local mx,my,mouseShow=-20,-20,false
|
local mx,my,mouseShow=-20,-20,false
|
||||||
local touching=nil--1st touching ID
|
local touching=nil--1st touching ID
|
||||||
|
|
||||||
local sceneInit={
|
local sceneInit={
|
||||||
load=function()
|
load=function()
|
||||||
curBG="none"
|
curBG="none"
|
||||||
@@ -41,6 +40,14 @@ local sceneInit={
|
|||||||
curBG="matrix"
|
curBG="matrix"
|
||||||
keeprun=true
|
keeprun=true
|
||||||
end,
|
end,
|
||||||
|
draw=function()
|
||||||
|
kb.setKeyRepeat(true)
|
||||||
|
clearSureTime=0
|
||||||
|
pen=1
|
||||||
|
sx,sy=1,1
|
||||||
|
curBG="none"
|
||||||
|
keeprun=true
|
||||||
|
end,
|
||||||
play=function()
|
play=function()
|
||||||
keeprun=false
|
keeprun=false
|
||||||
resetGameData()
|
resetGameData()
|
||||||
@@ -78,6 +85,7 @@ local sceneInit={
|
|||||||
love.event.quit()
|
love.event.quit()
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
BGblockList={}for i=1,16 do BGblockList[i]={v=0}end
|
BGblockList={}for i=1,16 do BGblockList[i]={v=0}end
|
||||||
local BGblock={tm=150,next=7,ct=0}
|
local BGblock={tm=150,next=7,ct=0}
|
||||||
local function getNewBlock()
|
local function getNewBlock()
|
||||||
@@ -92,10 +100,9 @@ local function getNewBlock()
|
|||||||
BGblock.next=BGblock.next%7+1
|
BGblock.next=BGblock.next%7+1
|
||||||
return t
|
return t
|
||||||
end
|
end
|
||||||
local scs={{1,2},{1,2},{1,2},{1,2},{1,2},{1.5,1.5},{0.5,2.5}}
|
local scs={{1,2},nil,nil,nil,nil,{1.5,1.5},{0.5,2.5}}for i=2,5 do scs[i]=scs[1]end
|
||||||
|
|
||||||
function onVirtualkey(x,y)
|
function onVirtualkey(x,y)
|
||||||
local x,y=xOy:inverseTransformPoint(x,y)
|
|
||||||
local d2,nearest,distance
|
local d2,nearest,distance
|
||||||
for K=1,#virtualkey do
|
for K=1,#virtualkey do
|
||||||
local b=virtualkey[K]
|
local b=virtualkey[K]
|
||||||
@@ -150,11 +157,122 @@ function mouseDown.intro(x,y,k)
|
|||||||
gotoScene("main")
|
gotoScene("main")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
function mouseDown.draw(x,y,k)
|
||||||
|
mouseMove.draw(x,y)
|
||||||
|
return sx and sy
|
||||||
|
end
|
||||||
|
function mouseDown.setting3(x,y,k)
|
||||||
|
if k==2 then back()end
|
||||||
|
x,y=xOy:inverseTransformPoint(x,y)
|
||||||
|
for K=1,#virtualkey do
|
||||||
|
local b=virtualkey[K]
|
||||||
|
if (x-b[1])^2+(y-b[2])^2<b[3]then
|
||||||
|
sel=K
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
mouseMove={}
|
||||||
|
function mouseMove.draw(x,y,dx,dy)
|
||||||
|
sx,sy=int((x-200)/30)+1,20-int((y-60)/30)
|
||||||
|
if sx<1 or sx>10 then sx=nil end
|
||||||
|
if sy<1 or sy>20 then sy=nil end
|
||||||
|
if sx and sy and ms.isDown(1,2)then
|
||||||
|
preField[sy][sx]=ms.isDown(1)and pen or 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
function mouseMove.setting3(x,y,dx,dy)
|
||||||
|
x,y=xOy:inverseTransformPoint(x,y)
|
||||||
|
dx,dy=dx*scr.k,dy*scr.k
|
||||||
|
if sel and ms.isDown(1)then
|
||||||
|
local b=virtualkey[sel]
|
||||||
|
b[1],b[2]=b[1]+dx,b[2]+dy
|
||||||
|
end
|
||||||
|
end
|
||||||
|
mouseUp={}
|
||||||
|
function mouseUp.setting3(x,y,k)
|
||||||
|
if sel then
|
||||||
|
local b=virtualkey[sel]
|
||||||
|
local k=snapLevelValue[snapLevel]
|
||||||
|
b[1],b[2]=int(b[1]/k+.5)*k,int(b[2]/k+.5)*k
|
||||||
|
end
|
||||||
|
end
|
||||||
wheelmoved={}
|
wheelmoved={}
|
||||||
|
function wheelmoved.draw(x,y)
|
||||||
|
if y<0 then
|
||||||
|
pen=pen+1
|
||||||
|
if pen==8 then pen=9 elseif pen==14 then pen=0 end
|
||||||
|
else
|
||||||
|
pen=pen-1
|
||||||
|
if pen==8 then pen=7 elseif pen==-1 then pen=13 end
|
||||||
|
end
|
||||||
|
end
|
||||||
function wheelmoved.mode(x,y)
|
function wheelmoved.mode(x,y)
|
||||||
modeSel=min(max(modeSel+(y>0 and -1 or 1),1),#modeID)
|
modeSel=min(max(modeSel+(y>0 and -1 or 1),1),#modeID)
|
||||||
levelSel=ceil(#modeLevel[modeID[modeSel]]*.5)
|
levelSel=ceil(#modeLevel[modeID[modeSel]]*.5)
|
||||||
end
|
end
|
||||||
|
touchDown={}
|
||||||
|
function touchDown.intro(id,x,y)
|
||||||
|
gotoScene("main")
|
||||||
|
end
|
||||||
|
function touchDown.draw(id,x,y)
|
||||||
|
end
|
||||||
|
function touchDown.setting3(id,x,y)
|
||||||
|
for K=1,#virtualkey do
|
||||||
|
local b=virtualkey[K]
|
||||||
|
if (x-b[1])^2+(y-b[2])^2<b[3]then
|
||||||
|
sel=K
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
function touchDown.play(id,x,y)
|
||||||
|
if setting.virtualkeySwitch then
|
||||||
|
local t=onVirtualkey(x,y)
|
||||||
|
if t then
|
||||||
|
pressKey(t,players[1])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
touchUp={}
|
||||||
|
function touchUp.setting3(id,x,y)
|
||||||
|
if sel then
|
||||||
|
x,y=xOy:inverseTransformPoint(x,y)
|
||||||
|
if sel then
|
||||||
|
local b=virtualkey[sel]
|
||||||
|
local k=snapLevelValue[snapLevel]
|
||||||
|
b[1],b[2]=int(b[1]/k+.5)*k,int(b[2]/k+.5)*k
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
function touchUp.play(id,x,y)
|
||||||
|
if setting.virtualkeySwitch then
|
||||||
|
local t=onVirtualkey(x,y)
|
||||||
|
if t then
|
||||||
|
releaseKey(t,players[1])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
touchMove={}
|
||||||
|
function touchMove.setting3(id,x,y)
|
||||||
|
dx,dy=dx*scr.k,dy*scr.k
|
||||||
|
if sel then
|
||||||
|
local b=virtualkey[sel]
|
||||||
|
b[1],b[2]=b[1]+dx,b[2]+dy
|
||||||
|
end
|
||||||
|
end
|
||||||
|
function touchMove.play(id,x,y)
|
||||||
|
if setting.virtualkeySwitch then
|
||||||
|
local l=tc.getTouches()
|
||||||
|
for n=1,#virtualkey do
|
||||||
|
local b=virtualkey[n]
|
||||||
|
for i=1,#l do
|
||||||
|
local x,y=xOy:inverseTransformPoint(tc.getPosition(l[i]))
|
||||||
|
if(x-b[1])^2+(y-b[2])^2<=b[3]then goto L end
|
||||||
|
end
|
||||||
|
releaseKey(n,players[1])
|
||||||
|
::L::
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
keyDown={}
|
keyDown={}
|
||||||
function keyDown.intro(key)
|
function keyDown.intro(key)
|
||||||
if key=="escape"then
|
if key=="escape"then
|
||||||
@@ -201,12 +319,40 @@ function keyDown.custom(key)
|
|||||||
optSel=optSel%#customID+1
|
optSel=optSel%#customID+1
|
||||||
elseif key=="up"then
|
elseif key=="up"then
|
||||||
optSel=(optSel-2)%#customID+1
|
optSel=(optSel-2)%#customID+1
|
||||||
|
elseif key=="d"then
|
||||||
|
gotoScene("draw")
|
||||||
elseif key=="return"then
|
elseif key=="return"then
|
||||||
loadGame(0,1)
|
loadGame(0,1)
|
||||||
elseif key=="escape"then
|
elseif key=="escape"then
|
||||||
back()
|
back()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
function keyDown.draw(key)
|
||||||
|
if key=="delete"then
|
||||||
|
Buttons.draw.clear.code()
|
||||||
|
elseif key=="up"or key=="down"or key=="left"or key=="right"then
|
||||||
|
if not sx then sx=1 end
|
||||||
|
if not sy then sy=1 end
|
||||||
|
if key=="up"and sy<20 then sy=sy+1
|
||||||
|
elseif key=="down"and sy>1 then sy=sy-1
|
||||||
|
elseif key=="left"and sx>1 then sx=sx-1
|
||||||
|
elseif key=="right"and sx<10 then sx=sx+1
|
||||||
|
end
|
||||||
|
if kb.isDown("space")then
|
||||||
|
preField[sy][sx]=pen
|
||||||
|
end
|
||||||
|
elseif key=="space"then
|
||||||
|
if sx and sy then
|
||||||
|
preField[sy][sx]=pen
|
||||||
|
end
|
||||||
|
elseif key=="backspace"then
|
||||||
|
pen=0
|
||||||
|
elseif key=="escape"then
|
||||||
|
back()
|
||||||
|
else
|
||||||
|
pen=find("123qwea#sdzxc",key)or pen
|
||||||
|
end
|
||||||
|
end
|
||||||
function keyDown.setting2(key)
|
function keyDown.setting2(key)
|
||||||
if key=="escape"then
|
if key=="escape"then
|
||||||
if keyboardSetting then
|
if keyboardSetting then
|
||||||
@@ -237,7 +383,7 @@ function keyDown.setting2(key)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
function keyDown.play(key)
|
function keyDown.play(key)
|
||||||
if key=="escape"then back()return end
|
if key=="escape"then back()end
|
||||||
local m=setting.keyMap
|
local m=setting.keyMap
|
||||||
for p=1,human do
|
for p=1,human do
|
||||||
local lib=setting.keyLib[p]
|
local lib=setting.keyLib[p]
|
||||||
@@ -346,12 +492,34 @@ function gamepadUp.play(key)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function love.mousepressed(x,y,k,t,num)
|
||||||
|
if t then return end
|
||||||
|
mouseShow=true
|
||||||
|
mx,my=xOy:inverseTransformPoint(x,y)
|
||||||
|
if mouseDown[scene]then
|
||||||
|
mouseDown[scene](mx,my,k)
|
||||||
|
elseif k==2 then
|
||||||
|
back()
|
||||||
|
end
|
||||||
|
if k==1 then
|
||||||
|
if not sceneSwaping and Buttons.sel then
|
||||||
|
local B=Buttons.sel
|
||||||
|
B.code()
|
||||||
|
B.alpha=1
|
||||||
|
Buttons.sel=nil
|
||||||
|
love.mousemoved(x,y,0,0)
|
||||||
|
sysSFX("button")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
function love.mousemoved(x,y,dx,dy,t)
|
function love.mousemoved(x,y,dx,dy,t)
|
||||||
if t then return end
|
if t then return end
|
||||||
mouseShow=true
|
mouseShow=true
|
||||||
mx,my=xOy:inverseTransformPoint(x,y)
|
mx,my=xOy:inverseTransformPoint(x,y)
|
||||||
Buttons.sel=nil
|
Buttons.sel=nil
|
||||||
|
if mouseMove[scene]then
|
||||||
|
mouseMove[scene](mx,my,dx,dy)
|
||||||
|
end
|
||||||
for N,B in next,Buttons[scene]do
|
for N,B in next,Buttons[scene]do
|
||||||
if not(B.hide and B.hide())then
|
if not(B.hide and B.hide())then
|
||||||
if abs(mx-B.x)<B.w*.5 and abs(my-B.y)<B.h*.5 then
|
if abs(mx-B.x)<B.w*.5 and abs(my-B.y)<B.h*.5 then
|
||||||
@@ -361,28 +529,12 @@ function love.mousemoved(x,y,dx,dy,t)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function love.mousepressed(x,y,k,t,num)
|
|
||||||
if t then return end
|
|
||||||
mouseShow=true
|
|
||||||
mx,my=xOy:inverseTransformPoint(x,y)
|
|
||||||
if mouseDown[scene]then
|
|
||||||
mouseDown[scene](mx,my,k)
|
|
||||||
else
|
|
||||||
if k==1 then
|
|
||||||
if not sceneSwaping and Buttons.sel then
|
|
||||||
local B=Buttons.sel
|
|
||||||
B.code()
|
|
||||||
B.alpha=1
|
|
||||||
Buttons.sel=nil
|
|
||||||
love.mousemoved(x,y)
|
|
||||||
sysSFX("button")
|
|
||||||
end
|
|
||||||
elseif k==2 then
|
|
||||||
back()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
function love.mousereleased(x,y,k,t,num)
|
function love.mousereleased(x,y,k,t,num)
|
||||||
|
if t then return end
|
||||||
|
mx,my=xOy:inverseTransformPoint(x,y)
|
||||||
|
if mouseUp[scene]then
|
||||||
|
mouseUp[scene](mx,my,k)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
function love.wheelmoved(x,y)
|
function love.wheelmoved(x,y)
|
||||||
if wheelmoved[scene]then wheelmoved[scene](x,y)end
|
if wheelmoved[scene]then wheelmoved[scene](x,y)end
|
||||||
@@ -394,23 +546,8 @@ function love.touchpressed(id,x,y)
|
|||||||
love.mousemoved(x,y)
|
love.mousemoved(x,y)
|
||||||
mouseShow=false
|
mouseShow=false
|
||||||
end
|
end
|
||||||
if scene=="play"then
|
if touchDown[scene]then
|
||||||
if setting.virtualkeySwitch then
|
touchDown[scene](id,xOy:inverseTransformPoint(x,y))
|
||||||
local t=onVirtualkey(x,y)
|
|
||||||
if t then
|
|
||||||
pressKey(t,players[1])
|
|
||||||
end
|
|
||||||
end
|
|
||||||
elseif scene=="setting3"then
|
|
||||||
x,y=xOy:inverseTransformPoint(x,y)
|
|
||||||
for K=1,#virtualkey do
|
|
||||||
local b=virtualkey[K]
|
|
||||||
if (x-b[1])^2+(y-b[2])^2<b[3]then
|
|
||||||
sel=K
|
|
||||||
end
|
|
||||||
end
|
|
||||||
elseif scene=="intro"then
|
|
||||||
gotoScene("main")
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function love.touchreleased(id,x,y)
|
function love.touchreleased(id,x,y)
|
||||||
@@ -426,18 +563,9 @@ function love.touchreleased(id,x,y)
|
|||||||
Buttons.sel=nil
|
Buttons.sel=nil
|
||||||
mouseShow=false
|
mouseShow=false
|
||||||
end
|
end
|
||||||
if scene=="play"and setting.virtualkeySwitch then
|
if touchUp[scene]then
|
||||||
local t=onVirtualkey(x,y)
|
x,y=
|
||||||
if t then
|
touchUp[scene](id,xOy:inverseTransformPoint(x,y))
|
||||||
releaseKey(t,players[1])
|
|
||||||
end
|
|
||||||
elseif scene=="setting3"and sel then
|
|
||||||
x,y=xOy:inverseTransformPoint(x,y)
|
|
||||||
if sel then
|
|
||||||
local b=virtualkey[sel]
|
|
||||||
local k=snapLevelValue[snapLevel]
|
|
||||||
b[1],b[2]=int(b[1]/k+.5)*k,int(b[2]/k+.5)*k
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function love.touchmoved(id,x,y,dx,dy)
|
function love.touchmoved(id,x,y,dx,dy)
|
||||||
@@ -446,24 +574,8 @@ function love.touchmoved(id,x,y,dx,dy)
|
|||||||
if not Buttons.sel then
|
if not Buttons.sel then
|
||||||
touching=nil
|
touching=nil
|
||||||
end
|
end
|
||||||
if scene=="play"and setting.virtualkeySwitch then
|
if touchMove[scene]then
|
||||||
local l=tc.getTouches()
|
touchMove[scene](id,xOy:inverseTransformPoint(x,y))
|
||||||
for n=1,#virtualkey do
|
|
||||||
local b=virtualkey[n]
|
|
||||||
for i=1,#l do
|
|
||||||
local x,y=xOy:inverseTransformPoint(tc.getPosition(l[i]))
|
|
||||||
if(x-b[1])^2+(y-b[2])^2<=b[3]then goto L end
|
|
||||||
end
|
|
||||||
releaseKey(n,players[1])
|
|
||||||
::L::
|
|
||||||
end
|
|
||||||
elseif scene=="setting3"then
|
|
||||||
x,y=xOy:inverseTransformPoint(x,y)
|
|
||||||
dx,dy=dx*screenK,dy*screenK
|
|
||||||
if sel then
|
|
||||||
local b=virtualkey[sel]
|
|
||||||
b[1],b[2]=b[1]+dx,b[2]+dy
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -478,6 +590,8 @@ function love.keypressed(i)
|
|||||||
for k,B in next,Buttons[scene]do
|
for k,B in next,Buttons[scene]do
|
||||||
print(format("x=%d,y=%d,w=%d,h=%d",B.x,B.y,B.w,B.h))
|
print(format("x=%d,y=%d,w=%d,h=%d",B.x,B.y,B.w,B.h))
|
||||||
end
|
end
|
||||||
|
elseif i=="s"then
|
||||||
|
print(scr.x,scr.y,scr.w,scr.h,scr.k)
|
||||||
elseif Buttons.sel then
|
elseif Buttons.sel then
|
||||||
local B=Buttons.sel
|
local B=Buttons.sel
|
||||||
if i=="left"then B.x=B.x-10
|
if i=="left"then B.x=B.x-10
|
||||||
@@ -533,6 +647,25 @@ function love.receiveData(id,data)
|
|||||||
end
|
end
|
||||||
]]
|
]]
|
||||||
|
|
||||||
|
function love.lowmemory()
|
||||||
|
collectgarbage()
|
||||||
|
end
|
||||||
|
function love.resize(w,h)
|
||||||
|
if w>=h then scr.w,scr.h=w,h
|
||||||
|
else scr.w,scr.h=h,w
|
||||||
|
end
|
||||||
|
scr.r=h/w
|
||||||
|
if h/w>=.5625 then
|
||||||
|
scr.k=w/1280
|
||||||
|
scr.x,scr.y=0,(h-w*9/16)*.5
|
||||||
|
else
|
||||||
|
scr.k=h/720
|
||||||
|
scr.x,scr.y=(w-h*16/9)*.5,0
|
||||||
|
end
|
||||||
|
xOy=xOy:setTransformation(w*.5,h*.5,nil,scr.k,nil,640,360)
|
||||||
|
gc.replaceTransform(xOy)
|
||||||
|
collectgarbage()
|
||||||
|
end
|
||||||
function love.update(dt)
|
function love.update(dt)
|
||||||
--[[
|
--[[
|
||||||
if players then
|
if players then
|
||||||
@@ -575,6 +708,7 @@ function love.update(dt)
|
|||||||
updateButton()
|
updateButton()
|
||||||
end
|
end
|
||||||
function love.draw()
|
function love.draw()
|
||||||
|
gc.discard()
|
||||||
Pnt.BG[curBG]()
|
Pnt.BG[curBG]()
|
||||||
gc.setColor(1,1,1,.22)
|
gc.setColor(1,1,1,.22)
|
||||||
for n=1,#BGblock do
|
for n=1,#BGblock do
|
||||||
@@ -600,31 +734,24 @@ function love.draw()
|
|||||||
end
|
end
|
||||||
if sceneSwaping then sceneSwaping.draw()end
|
if sceneSwaping then sceneSwaping.draw()end
|
||||||
|
|
||||||
if wh/ww>.5625 then
|
if scr.r==.5625 then goto L end
|
||||||
gc.setColor(0,0,0)
|
if scr.r>.5625 then
|
||||||
gc.rectangle("fill",0,0,1280,ww*9/16-wh)
|
gc.setColor(0,0,0)
|
||||||
gc.rectangle("fill",0,720,1280,wh-ww*9/16)
|
gc.rectangle("fill",0,0,1280,scr.w*9/16-scr.h)
|
||||||
elseif wh/ww<.5625 then
|
gc.rectangle("fill",0,720,1280,scr.h-scr.w*9/16)
|
||||||
gc.setColor(0,0,0)
|
else
|
||||||
gc.rectangle("fill",0,0,wh*16/9-ww,720)
|
gc.setColor(0,0,0)
|
||||||
gc.rectangle("fill",1280,0,ww-wh*16/9,720)
|
gc.rectangle("fill",0,0,scr.h*16/9-scr.w,720)
|
||||||
end
|
gc.rectangle("fill",1280,0,scr.w-scr.h*16/9,720)
|
||||||
|
end
|
||||||
|
::L::
|
||||||
setFont(20)gc.setColor(1,1,1)
|
setFont(20)gc.setColor(1,1,1)
|
||||||
gc.print(tm.getFPS(),5,700)
|
gc.print(tm.getFPS(),5,700)
|
||||||
if devMode then
|
if devMode then
|
||||||
gc.print(gcinfo(),5,680)
|
gc.print(gcinfo(),5,680)
|
||||||
gc.print(freeRow and #freeRow or 0,5,660)
|
gc.print(#freeRow or 0,5,660)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function love.resize(w,h)
|
|
||||||
if w>=h then ww,wh=w,h
|
|
||||||
else ww,wh=h,w
|
|
||||||
end
|
|
||||||
screenK=h/w>=.5625 and w/1280 or h/720
|
|
||||||
xOy=xOy:setTransformation(w*.5,h*.5,nil,screenK,nil,640,360)
|
|
||||||
gc.replaceTransform(xOy)
|
|
||||||
collectgarbage()
|
|
||||||
end
|
|
||||||
function love.run()
|
function love.run()
|
||||||
local frameT=Timer()
|
local frameT=Timer()
|
||||||
local readyDrawFrame=0
|
local readyDrawFrame=0
|
||||||
|
|||||||
2
conf.lua
2
conf.lua
@@ -9,7 +9,7 @@ function love.conf(t)
|
|||||||
t.audio.mixwithsystem=true--Switch on to keep sysBGM
|
t.audio.mixwithsystem=true--Switch on to keep sysBGM
|
||||||
|
|
||||||
local W=t.window
|
local W=t.window
|
||||||
W.title="Techmino V0.7.13+"
|
W.title="Techmino V0.7.14"
|
||||||
W.icon="/image/icon.png"
|
W.icon="/image/icon.png"
|
||||||
W.width,W.height=1280,720
|
W.width,W.height=1280,720
|
||||||
W.minwidth,W.minheight=640,360
|
W.minwidth,W.minheight=640,360
|
||||||
|
|||||||
27
dataList.lua
27
dataList.lua
@@ -149,13 +149,28 @@ loadmode={
|
|||||||
modeEnv[k]=customRange[k][customSel[k]]
|
modeEnv[k]=customRange[k][customSel[k]]
|
||||||
end
|
end
|
||||||
modeEnv._20G=modeEnv.drop==-1
|
modeEnv._20G=modeEnv.drop==-1
|
||||||
|
createPlayer(1,340,15)
|
||||||
if modeEnv.opponent==0 then
|
if modeEnv.opponent==0 then
|
||||||
createPlayer(1,340,15)
|
|
||||||
else
|
else
|
||||||
modeEnv.target=nil
|
modeEnv.target=nil
|
||||||
createPlayer(1,340,15)
|
|
||||||
createPlayer(2,965,360,.5,modeEnv.opponent)
|
createPlayer(2,965,360,.5,modeEnv.opponent)
|
||||||
end
|
end
|
||||||
|
local h=20
|
||||||
|
::R::
|
||||||
|
for i=1,10 do
|
||||||
|
if preField[h][i]>0 then modeEnv.Fkey=true goto L end
|
||||||
|
end
|
||||||
|
h=h-1
|
||||||
|
if h>0 then goto R end
|
||||||
|
::L::
|
||||||
|
for _,P in next,players.alive do
|
||||||
|
local t=P.showTime*3
|
||||||
|
for y=1,h do
|
||||||
|
P.field[y]=getNewRow(0)
|
||||||
|
P.visTime[y]=getNewRow(t)
|
||||||
|
for x=1,10 do P.field[y][x]=preField[y][x]end
|
||||||
|
end
|
||||||
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
mesDisp={
|
mesDisp={
|
||||||
@@ -527,7 +542,7 @@ Event_task={
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
if P.endCounter==100 then
|
if P.endCounter==100 then
|
||||||
for i=1,#P.field do
|
while P.field[1]do
|
||||||
removeRow(P.field)
|
removeRow(P.field)
|
||||||
removeRow(P.visTime)
|
removeRow(P.visTime)
|
||||||
end
|
end
|
||||||
@@ -550,7 +565,7 @@ Event_task={
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
if P.endCounter==100 then
|
if P.endCounter==100 then
|
||||||
for i=1,#P.field do
|
while P.field[1]do
|
||||||
removeRow(P.field)
|
removeRow(P.field)
|
||||||
removeRow(P.visTime)
|
removeRow(P.visTime)
|
||||||
end
|
end
|
||||||
@@ -666,7 +681,7 @@ Event_task={
|
|||||||
if P.counter==21 then
|
if P.counter==21 then
|
||||||
local t=P.cstat.pc%2
|
local t=P.cstat.pc%2
|
||||||
for i=1,4 do
|
for i=1,4 do
|
||||||
local r=getNewRow()
|
local r=getNewRow(0)
|
||||||
for j=1,10 do
|
for j=1,10 do
|
||||||
r[j]=PCbase[4*t+i][j]
|
r[j]=PCbase[4*t+i][j]
|
||||||
end
|
end
|
||||||
@@ -1092,6 +1107,7 @@ defaultModeEnv={
|
|||||||
{
|
{
|
||||||
fall=20,
|
fall=20,
|
||||||
royaleMode=true,
|
royaleMode=true,
|
||||||
|
Fkey=true,
|
||||||
royalePowerup={2,5,10,20},
|
royalePowerup={2,5,10,20},
|
||||||
royaleRemain={30,20,15,10,5},
|
royaleRemain={30,20,15,10,5},
|
||||||
pushSpeed=2,
|
pushSpeed=2,
|
||||||
@@ -1104,6 +1120,7 @@ defaultModeEnv={
|
|||||||
{
|
{
|
||||||
fall=20,
|
fall=20,
|
||||||
royaleMode=true,
|
royaleMode=true,
|
||||||
|
Fkey=true,
|
||||||
royalePowerup={2,6,14,30},
|
royalePowerup={2,6,14,30},
|
||||||
royaleRemain={75,50,35,20,10},
|
royaleRemain={75,50,35,20,10},
|
||||||
pushSpeed=2,
|
pushSpeed=2,
|
||||||
|
|||||||
30
gamefunc.lua
30
gamefunc.lua
@@ -163,7 +163,14 @@ function resetGameData()
|
|||||||
frame=0
|
frame=0
|
||||||
garbageSpeed=1
|
garbageSpeed=1
|
||||||
pushSpeed=3
|
pushSpeed=3
|
||||||
|
if players then
|
||||||
|
for _,P in next,players do if P.id then
|
||||||
|
while P.field[1]do
|
||||||
|
removeRow(P.field)
|
||||||
|
removeRow(P.visTime)
|
||||||
|
end
|
||||||
|
end end
|
||||||
|
end
|
||||||
players={alive={}}human=0
|
players={alive={}}human=0
|
||||||
modeEnv=defaultModeEnv[curMode.id][curMode.lv]or defaultModeEnv[curMode.id][1]
|
modeEnv=defaultModeEnv[curMode.id][curMode.lv]or defaultModeEnv[curMode.id][1]
|
||||||
loadmode[curMode.id]()
|
loadmode[curMode.id]()
|
||||||
@@ -193,12 +200,11 @@ function resetGameData()
|
|||||||
virtualkey[i].press=false
|
virtualkey[i].press=false
|
||||||
end
|
end
|
||||||
stat.game=stat.game+1
|
stat.game=stat.game+1
|
||||||
|
local p=60*#players
|
||||||
freeRow={}
|
while freeRow[p]do
|
||||||
collectgarbage()
|
rem(freeRow)
|
||||||
for i=1,30*#players do
|
|
||||||
freeRow[i]={0,0,0,0,0,0,0,0,0,0}
|
|
||||||
end
|
end
|
||||||
|
collectgarbage()
|
||||||
end
|
end
|
||||||
function gameStart()
|
function gameStart()
|
||||||
sysSFX("start")
|
sysSFX("start")
|
||||||
@@ -224,6 +230,7 @@ function createPlayer(id,x,y,size,AIspeed,data)
|
|||||||
P.size=P.size*5
|
P.size=P.size*5
|
||||||
else
|
else
|
||||||
P.centerX,P.centerY=P.x+300*P.size,P.y+670*P.size
|
P.centerX,P.centerY=P.x+300*P.size,P.y+670*P.size
|
||||||
|
P.absFieldPos={P.x+150*P.size,P.y+60*P.size}
|
||||||
end
|
end
|
||||||
|
|
||||||
if AIspeed then
|
if AIspeed then
|
||||||
@@ -666,6 +673,7 @@ function spin(d,ifpre)
|
|||||||
end
|
end
|
||||||
goto fail
|
goto fail
|
||||||
::spin::
|
::spin::
|
||||||
|
createShade(P.curX,P.curY+P.r-1,P.curX+P.c-1,P.curY)
|
||||||
P.curX,P.curY,P.dir=ix,iy,idir
|
P.curX,P.curY,P.dir=ix,iy,idir
|
||||||
P.sc,P.cur.bk=scs[P.cur.id][idir],icb
|
P.sc,P.cur.bk=scs[P.cur.id][idir],icb
|
||||||
P.r,P.c=ir,ic
|
P.r,P.c=ir,ic
|
||||||
@@ -673,7 +681,7 @@ function spin(d,ifpre)
|
|||||||
freshgho()
|
freshgho()
|
||||||
freshLockDelay()
|
freshLockDelay()
|
||||||
SFX(ifpre and"prerotate"or ifoverlap(P.cur.bk,P.curX,P.curY+1)and ifoverlap(P.cur.bk,P.curX-1,P.curY)and ifoverlap(P.cur.bk,P.curX+1,P.curY)and"rotatekick"or"rotate")
|
SFX(ifpre and"prerotate"or ifoverlap(P.cur.bk,P.curX,P.curY+1)and ifoverlap(P.cur.bk,P.curX-1,P.curY)and ifoverlap(P.cur.bk,P.curX+1,P.curY)and"rotatekick"or"rotate")
|
||||||
if id==1 then
|
if P.id==1 then
|
||||||
stat.rotate=stat.rotate+1
|
stat.rotate=stat.rotate+1
|
||||||
end
|
end
|
||||||
::fail::
|
::fail::
|
||||||
@@ -907,7 +915,7 @@ end
|
|||||||
function lock()
|
function lock()
|
||||||
for i=1,P.r do
|
for i=1,P.r do
|
||||||
local y=P.curY+i-1
|
local y=P.curY+i-1
|
||||||
if not P.field[y]then P.field[y],P.visTime[y]=getNewRow(),getNewRow()end
|
if not P.field[y]then P.field[y],P.visTime[y]=getNewRow(0),getNewRow(0)end
|
||||||
for j=1,P.c do
|
for j=1,P.c do
|
||||||
if P.cur.bk[i][j]then
|
if P.cur.bk[i][j]then
|
||||||
P.field[y][P.curX+j-1]=P.cur.color
|
P.field[y][P.curX+j-1]=P.cur.color
|
||||||
@@ -994,7 +1002,7 @@ act={
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
rotRight=function()spin(1)end,
|
rotRight=function()spin(1)end,
|
||||||
rotLeft=function()spin(3)end,
|
rotLeft=function()spin(-1)end,
|
||||||
rotFlip=function()spin(2)end,
|
rotFlip=function()spin(2)end,
|
||||||
hardDrop=function()
|
hardDrop=function()
|
||||||
if P.keyPressing[9]and setting.swap then
|
if P.keyPressing[9]and setting.swap then
|
||||||
@@ -1057,7 +1065,7 @@ act={
|
|||||||
local x0=cx
|
local x0=cx
|
||||||
::L::if not ifoverlap(P.cur.bk,P.curX-1,P.curY)then
|
::L::if not ifoverlap(P.cur.bk,P.curX-1,P.curY)then
|
||||||
P.curX=P.curX-1
|
P.curX=P.curX-1
|
||||||
createShade(P.curX-1,P.curY+P.r-1,P.curX+P.c-1,P.curY)
|
createShade(P.curX+1,P.curY+P.r-1,P.curX+P.c-1,P.curY)
|
||||||
freshgho()
|
freshgho()
|
||||||
goto L
|
goto L
|
||||||
end
|
end
|
||||||
@@ -1067,7 +1075,7 @@ act={
|
|||||||
local x0=cx
|
local x0=cx
|
||||||
::L::if not ifoverlap(P.cur.bk,P.curX+1,P.curY)then
|
::L::if not ifoverlap(P.cur.bk,P.curX+1,P.curY)then
|
||||||
P.curX=P.curX+1
|
P.curX=P.curX+1
|
||||||
createShade(P.curX,P.curY+P.r-1,P.curX+P.c-1,P.curY)
|
createShade(P.curX-1,P.curY+P.r-1,P.curX+P.c-1,P.curY)
|
||||||
freshgho()
|
freshgho()
|
||||||
goto L
|
goto L
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -146,6 +146,24 @@ return{
|
|||||||
left="<",
|
left="<",
|
||||||
right=">",
|
right=">",
|
||||||
start="开始",
|
start="开始",
|
||||||
|
draw="画图(D)",
|
||||||
|
back="返回",
|
||||||
|
},
|
||||||
|
draw={
|
||||||
|
block1="■",
|
||||||
|
block2="■",
|
||||||
|
block3="■",
|
||||||
|
block4="■",
|
||||||
|
block5="■",
|
||||||
|
block6="■",
|
||||||
|
block7="■",
|
||||||
|
gb1="■",
|
||||||
|
gb2="■",
|
||||||
|
gb3="■",
|
||||||
|
gb4="■",
|
||||||
|
gb5="■",
|
||||||
|
erase="×",
|
||||||
|
clear="清空",
|
||||||
back="返回",
|
back="返回",
|
||||||
},
|
},
|
||||||
play={
|
play={
|
||||||
@@ -193,4 +211,4 @@ return{
|
|||||||
path="打开存储目录",
|
path="打开存储目录",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}--中文
|
}--中文■
|
||||||
@@ -109,7 +109,7 @@ return{
|
|||||||
"Total spin:",
|
"Total spin:",
|
||||||
},
|
},
|
||||||
help={
|
help={
|
||||||
"I think you don't need \"help\".",
|
"I don't think you need \"help\".",
|
||||||
"THIS IS ONLY A SMALL BLOCK GAME",
|
"THIS IS ONLY A SMALL BLOCK GAME",
|
||||||
"But just play like playing TOP/C2/KOS/TGM3",
|
"But just play like playing TOP/C2/KOS/TGM3",
|
||||||
"Game is not public now,so DO NOT DISTIRBUTE",
|
"Game is not public now,so DO NOT DISTIRBUTE",
|
||||||
@@ -146,8 +146,26 @@ return{
|
|||||||
left="<",
|
left="<",
|
||||||
right=">",
|
right=">",
|
||||||
start="Start",
|
start="Start",
|
||||||
|
draw="Draw(D)",
|
||||||
back="Back",
|
back="Back",
|
||||||
},
|
},
|
||||||
|
draw={
|
||||||
|
block1="■",
|
||||||
|
block2="■",
|
||||||
|
block3="■",
|
||||||
|
block4="■",
|
||||||
|
block5="■",
|
||||||
|
block6="■",
|
||||||
|
block7="■",
|
||||||
|
gb1="■",
|
||||||
|
gb2="■",
|
||||||
|
gb3="■",
|
||||||
|
gb4="■",
|
||||||
|
gb5="■",
|
||||||
|
erase="×",
|
||||||
|
clear="clear",
|
||||||
|
back="back",
|
||||||
|
},
|
||||||
play={
|
play={
|
||||||
back="Back",
|
back="Back",
|
||||||
},
|
},
|
||||||
|
|||||||
124
list.lua
124
list.lua
@@ -1,6 +1,6 @@
|
|||||||
local gc=love.graphics
|
local gc=love.graphics
|
||||||
local sys=love.system
|
local sys=love.system
|
||||||
|
local fs=love.filesystem
|
||||||
actName={"moveLeft","moveRight","rotRight","rotLeft","rotFlip","hardDrop","softDrop","hold","swap","restart","insLeft","insRight","insDown"}
|
actName={"moveLeft","moveRight","rotRight","rotLeft","rotFlip","hardDrop","softDrop","hold","swap","restart","insLeft","insRight","insDown"}
|
||||||
color={
|
color={
|
||||||
red={1,0,0},
|
red={1,0,0},
|
||||||
@@ -31,9 +31,24 @@ color={
|
|||||||
orange={1,.6,0},
|
orange={1,.6,0},
|
||||||
lightOrange={1,.7,.3},
|
lightOrange={1,.7,.3},
|
||||||
purple={.5,0,1},
|
purple={.5,0,1},
|
||||||
lightPurple={.7,.3,1},
|
lightPurple={.8,.4,1},
|
||||||
|
darkPurple={.3,0,.6},
|
||||||
|
}
|
||||||
|
blockColor={
|
||||||
|
color.red,
|
||||||
|
color.green,
|
||||||
|
color.orange,
|
||||||
|
color.blue,
|
||||||
|
color.magenta,
|
||||||
|
color.yellow,
|
||||||
|
color.cyan,
|
||||||
|
color.darkGreen,
|
||||||
|
color.darkGrey,
|
||||||
|
color.grey,
|
||||||
|
color.darkPurple,
|
||||||
|
color.darkRed,
|
||||||
|
color.darkGreen,
|
||||||
}
|
}
|
||||||
|
|
||||||
sfx={
|
sfx={
|
||||||
"button",
|
"button",
|
||||||
"ready","start","win","fail","collect",
|
"ready","start","win","fail","collect",
|
||||||
@@ -208,59 +223,84 @@ Buttons={
|
|||||||
quit={x=1180,y=620,w=120,h=120,rgb=color.lightGrey,f=50,code=function()gotoScene("quit")end,up="setting",left="help"},
|
quit={x=1180,y=620,w=120,h=120,rgb=color.lightGrey,f=50,code=function()gotoScene("quit")end,up="setting",left="help"},
|
||||||
},
|
},
|
||||||
mode={
|
mode={
|
||||||
up={x=1000,y=210,w=200,h=140,rgb=color.white,hide=function()return modeSel==1 end,f=64,code=function()keyDown.mode("up")end},
|
up= {x=1000, y=210,w=200,h=140,rgb=color.white, f=64, code=function()keyDown.mode("up")end, hide=function()return modeSel==1 end,},
|
||||||
down={x=1000,y=430,w=200,h=140,rgb=color.white,hide=function()return modeSel==#modeID end,f=80,code=function()keyDown.mode("down")end},
|
down= {x=1000, y=430,w=200,h=140,rgb=color.white, f=80, code=function()keyDown.mode("down")end, hide=function()return modeSel==#modeID end,},
|
||||||
left={x=190,y=160,w=100,h=80,rgb=color.white,hide=function()return levelSel==1 end,code=function()keyDown.mode("left")end},
|
left= {x=190, y=160,w=100,h=80, rgb=color.white, code=function()keyDown.mode("left")end, hide=function()return levelSel==1 end,},
|
||||||
right={x=350,y=160,w=100,h=80,rgb=color.white,hide=function()return levelSel==#modeLevel[modeID[modeSel]] end,code=function()keyDown.mode("right")end},
|
right={x=350, y=160,w=100,h=80, rgb=color.white, code=function()keyDown.mode("right")end,hide=function()return levelSel==#modeLevel[modeID[modeSel]]end,},
|
||||||
start={x=1000,y=600,w=250,h=100,rgb=color.green,f=50,code=function()loadGame(modeSel,levelSel)end},
|
start={x=1000, y=600,w=250,h=100,rgb=color.green, f=50, code=function()
|
||||||
custom={x=270,y=540,w=190,h=85,rgb=color.yellow,code=function()gotoScene("custom")end},
|
loadGame(modeSel,levelSel)end},
|
||||||
back={x=640,y=630,w=230,h=90,rgb=color.white,f=45,code=back},
|
custom={x=275, y=420,w=200,h=90, rgb=color.yellow, code=function()gotoScene("custom")end},
|
||||||
|
back= {x=640, y=630,w=230,h=90, rgb=color.white, f=45, code=back},
|
||||||
},
|
},
|
||||||
custom={
|
custom={
|
||||||
up={x=1000,y=200,w=100,h=100,rgb=color.white,code=function()optSel=(optSel-2)%#customID+1 end},
|
up= {x=1000, y=220,w=100,h=100,rgb=color.white, code=function()optSel=(optSel-2)%#customID+1 end},
|
||||||
down={x=1000,y=440,w=100,h=100,rgb=color.white,f=50,code=function()optSel=optSel%#customID+1 end},
|
down= {x=1000, y=460,w=100,h=100,rgb=color.white,f=50, code=function()optSel=optSel%#customID+1 end},
|
||||||
left={x=880,y=320,w=100,h=100,rgb=color.white,f=50,code=function()local k=customID[optSel]customSel[k]=(customSel[k]-2)%#customRange[k]+1 end},
|
left= {x=880, y=340,w=100,h=100,rgb=color.white,f=50, code=function()local k=customID[optSel]customSel[k]=(customSel[k]-2)%#customRange[k]+1 end},
|
||||||
right={x=1120,y=320,w=100,h=100,rgb=color.white,f=50,code=function()local k=customID[optSel]customSel[k]=customSel[k]%#customRange[k]+1 end},
|
right={x=1120, y=340,w=100,h=100,rgb=color.white,f=50, code=function()local k=customID[optSel]customSel[k]=customSel[k]%#customRange[k]+1 end},
|
||||||
start={x=1000,y=580,w=180,h=80,rgb=color.green,code=function()loadGame(0,1)end},
|
start={x=1000, y=580,w=180,h=80, rgb=color.green, code=function()loadGame(0,1)end},
|
||||||
back={x=640,y=630,w=180,h=60,rgb=color.white,code=back},
|
draw= {x=1000, y=90, w=190,h=85, rgb=color.cyan, code=function()gotoScene("draw")end},
|
||||||
|
back= {x=640, y=630,w=180,h=60, rgb=color.white, code=back},
|
||||||
|
},
|
||||||
|
draw={
|
||||||
|
block1= {x=840, y=80,w=120,h=120, f=65, rgb=color.red, code=function()pen=1 end},
|
||||||
|
block2= {x=980, y=80,w=120,h=120, f=65, rgb=color.green, code=function()pen=2 end},
|
||||||
|
block3= {x=1120, y=80,w=120,h=120, f=65, rgb=color.orange, code=function()pen=3 end},
|
||||||
|
block4= {x=840, y=220,w=120,h=120,f=65, rgb=color.blue, code=function()pen=4 end},
|
||||||
|
block5= {x=980, y=220,w=120,h=120,f=65, rgb=color.magenta, code=function()pen=5 end},
|
||||||
|
block6= {x=1120, y=220,w=120,h=120,f=65, rgb=color.yellow, code=function()pen=6 end},
|
||||||
|
block7= {x=840, y=360,w=120,h=120,f=65, rgb=color.cyan, code=function()pen=7 end},
|
||||||
|
gb1= {x=980, y=360,w=120,h=120,f=65, rgb=color.darkGrey, code=function()pen=9 end},
|
||||||
|
gb2= {x=1120, y=360,w=120,h=120,f=65, rgb=color.grey, code=function()pen=10 end},
|
||||||
|
gb3= {x=840, y=500,w=120,h=120,f=65, rgb=color.darkPurple, code=function()pen=11 end},
|
||||||
|
gb4= {x=980, y=500,w=120,h=120,f=65, rgb=color.darkRed, code=function()pen=12 end},
|
||||||
|
gb5= {x=1120, y=500,w=120,h=120,f=65, rgb=color.darkGreen, code=function()pen=13 end},
|
||||||
|
erase= {x=840, y=640,w=120,h=120,f=70, rgb=color.grey, code=function()pen=0 end},
|
||||||
|
clear= {x=1120, y=640,w=120,h=120, rgb=color.white, code=function()
|
||||||
|
if clearSureTime>0 then
|
||||||
|
for y=1,20 do for x=1,10 do preField[y][x]=0 end end
|
||||||
|
clearSureTime=0
|
||||||
|
else
|
||||||
|
clearSureTime=50
|
||||||
|
end
|
||||||
|
end},
|
||||||
|
back= {x=1235, y=45, w=80, h=80, f=35, rgb=color.white, code=back},
|
||||||
},
|
},
|
||||||
play={
|
play={
|
||||||
back={x=1235,y=45,w=80,h=80,rgb=color.white,code=back,f=35},
|
back={x=1235,y=45,w=80,h=80,rgb=color.white,code=back,f=35},
|
||||||
},
|
},
|
||||||
setting={--Normal setting
|
setting={--Normal setting
|
||||||
ghost= {x=290, y=90, w=210, h=60, rgb=color.white, code=function()setting.ghost=not setting.ghost end,down="grid",right="center"},
|
ghost= {x=290, y=90, w=210,h=60, rgb=color.white, code=function()setting.ghost=not setting.ghost end,down="grid",right="center"},
|
||||||
center= {x=505, y=90, w=210, h=60, rgb=color.white, code=function()setting.center=not setting.center end,down="swap",left="ghost",right="sfx"},
|
center= {x=505, y=90, w=210,h=60, rgb=color.white, code=function()setting.center=not setting.center end,down="swap",left="ghost",right="sfx"},
|
||||||
grid= {x=290, y=160, w=210, h=60, rgb=color.white, code=function()setting.grid=not setting.grid end,up="ghost",down="fxs",right="swap"},
|
grid= {x=290, y=160,w=210,h=60, rgb=color.white, code=function()setting.grid=not setting.grid end,up="ghost",down="fxs",right="swap"},
|
||||||
swap= {x=505, y=160, w=210, h=60,f=28, rgb=color.white, code=function()setting.swap=not setting.swap end,up="center",down="arrD",left="grid",right="vib"},
|
swap= {x=505, y=160,w=210,h=60,f=28, rgb=color.white, code=function()setting.swap=not setting.swap end,up="center",down="arrD",left="grid",right="vib"},
|
||||||
fxs= {x=290, y=230, w=210, h=60, rgb=color.white, code=function()setting.fxs=not setting.fxs end,up="grid",down="dasU",right="fullscreen"},
|
fxs= {x=290, y=230,w=210,h=60, rgb=color.white, code=function()setting.fxs=not setting.fxs end,up="grid",down="dasU",right="fullscreen"},
|
||||||
|
dasD= {x=210, y=300,w=50, h=50, rgb=color.white, code=function()setting.das=(setting.das-1)%31 end,up="fxs",down="sddasD",right="dasU"},
|
||||||
|
dasU= {x=370, y=300,w=50, h=50, rgb=color.white, code=function()setting.das=(setting.das+1)%31 end,up="fxs",down="sddasU",left="dasD",right="arrD"},
|
||||||
|
arrD= {x=425, y=300,w=50, h=50, rgb=color.white, code=function()setting.arr=(setting.arr-1)%16 end,up="swap",down="sdarrD",left="dasU",right="arrU"},
|
||||||
|
arrU= {x=585, y=300,w=50, h=50, rgb=color.white, code=function()setting.arr=(setting.arr+1)%16 end,up="swap",down="sdarrU",left="arrD",right="bgblock"},--3~6
|
||||||
|
sddasD= {x=210, y=370,w=50, h=50, rgb=color.white, code=function()setting.sddas=(setting.sddas-1)%11 end,up="dasD",down="lang",right="sddasU"},
|
||||||
|
sddasU= {x=370, y=370,w=50, h=50, rgb=color.white, code=function()setting.sddas=(setting.sddas+1)%11 end,up="dasU",down="lang",left="sddasD",right="sdarrD"},
|
||||||
|
sdarrD= {x=425, y=370,w=50, h=50, rgb=color.white, code=function()setting.sdarr=(setting.sdarr-1)%4 end,up="arrD",down="lang",left="sddasU",right="sdarrU"},
|
||||||
|
sdarrU= {x=585, y=370,w=50, h=50, rgb=color.white, code=function()setting.sdarr=(setting.sdarr+1)%4 end,up="arrU",down="lang",left="sdarrD",right="frame"},
|
||||||
|
|
||||||
dasD= {x=210, y=300, w=50, h=50, rgb=color.white, code=function()setting.das=(setting.das-1)%31 end,up="fxs",down="sddasD",right="dasU"},
|
sfx= {x=760,y=90, w=160,h=60,rgb=color.white, code=function()setting.sfx=not setting.sfx end,down="vib",left="center",right="bgm"},
|
||||||
dasU= {x=370, y=300, w=50, h=50, rgb=color.white, code=function()setting.das=(setting.das+1)%31 end,up="fxs",down="sddasU",left="dasD",right="arrD"},
|
bgm= {x=940,y=90, w=160,h=60,rgb=color.white, code=function()
|
||||||
arrD= {x=425, y=300, w=50, h=50, rgb=color.white, code=function()setting.arr=(setting.arr-1)%16 end,up="swap",down="sdarrD",left="dasU",right="arrU"},
|
|
||||||
arrU= {x=585, y=300, w=50, h=50, rgb=color.white, code=function()setting.arr=(setting.arr+1)%16 end,up="swap",down="sdarrU",left="arrD",right="bgblock"},--3~6
|
|
||||||
sddasD= {x=210, y=370, w=50, h=50, rgb=color.white, code=function()setting.sddas=(setting.sddas-1)%11 end,up="dasD",down="lang",right="sddasU"},
|
|
||||||
sddasU= {x=370, y=370, w=50, h=50, rgb=color.white, code=function()setting.sddas=(setting.sddas+1)%11 end,up="dasU",down="lang",left="sddasD",right="sdarrD"},
|
|
||||||
sdarrD= {x=425, y=370, w=50, h=50, rgb=color.white, code=function()setting.sdarr=(setting.sdarr-1)%4 end,up="arrD",down="lang",left="sddasU",right="sdarrU"},
|
|
||||||
sdarrU= {x=585, y=370, w=50, h=50, rgb=color.white, code=function()setting.sdarr=(setting.sdarr+1)%4 end,up="arrU",down="lang",left="sdarrD",right="frame"},
|
|
||||||
|
|
||||||
sfx= {x=760, y=90, w=160, h=60, rgb=color.white, code=function()setting.sfx=not setting.sfx end,down="vib",left="center",right="bgm"},
|
|
||||||
bgm= {x=940, y=90, w=160, h=60, rgb=color.white, code=function()
|
|
||||||
BGM()
|
BGM()
|
||||||
setting.bgm=not setting.bgm
|
setting.bgm=not setting.bgm
|
||||||
BGM("blank")
|
BGM("blank")
|
||||||
end,down="vib",left="sfx"},
|
end,down="vib",left="sfx"},
|
||||||
vib= {x=850, y=160, w=340, h=60, rgb=color.white, code=function()
|
vib= {x=850,y=160, w=340,h=60,rgb=color.white, code=function()
|
||||||
setting.vib=(setting.vib+1)%5
|
setting.vib=(setting.vib+1)%5
|
||||||
VIB(2)
|
VIB(2)
|
||||||
end,up="sfx",down="fullscreen",left="swap"},
|
end,up="sfx",down="fullscreen",left="swap"},
|
||||||
fullscreen= {x=850, y=230, w=340, h=60, rgb=color.white, code=function()
|
fullscreen= {x=850,y=230, w=340,h=60,rgb=color.white, code=function()
|
||||||
setting.fullscreen=not setting.fullscreen
|
setting.fullscreen=not setting.fullscreen
|
||||||
love.window.setFullscreen(setting.fullscreen)
|
love.window.setFullscreen(setting.fullscreen)
|
||||||
if not setting.fullscreen then
|
if not setting.fullscreen then
|
||||||
love.resize(gc.getWidth(),gc.getHeight())
|
love.resize(gc.getWidth(),gc.getHeight())
|
||||||
end
|
end
|
||||||
end,up="vib",down="bgblock",left="arrU"},
|
end,up="vib",down="bgblock",left="arrU"},
|
||||||
bgblock= {x=850, y=300, w=340, h=60, rgb=color.white, code=function()
|
bgblock= {x=850,y=300, w=340,h=60,rgb=color.white, code=function()
|
||||||
setting.bgblock=not setting.bgblock
|
setting.bgblock=not setting.bgblock
|
||||||
if not setting.bgblock then
|
if not setting.bgblock then
|
||||||
for i=1,16 do
|
for i=1,16 do
|
||||||
@@ -268,17 +308,17 @@ Buttons={
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,up="fullscreen",down="frame",left="sdarrU"},
|
end,up="fullscreen",down="frame",left="sdarrU"},
|
||||||
frame= {x=850, y=370, w=340, h=60, rgb=color.white, code=function()
|
frame= {x=850,y=370, w=340,h=60,rgb=color.white, code=function()
|
||||||
setting.frameMul=setting.frameMul+(setting.frameMul<50 and 5 or 10)
|
setting.frameMul=setting.frameMul+(setting.frameMul<50 and 5 or 10)
|
||||||
if setting.frameMul>100 then setting.frameMul=25 end
|
if setting.frameMul>100 then setting.frameMul=25 end
|
||||||
end,up="bgblock",down="control",left="sdarrU"},
|
end,up="bgblock",down="control",left="sdarrU"},
|
||||||
control= {x=850, y=440, w=340, h=60, rgb=color.green, code=function()gotoScene("setting2")end,up="frame",down="touch",left="lang"},
|
control= {x=850,y=440, w=340,h=60,rgb=color.green, code=function()gotoScene("setting2")end,up="frame",down="touch",left="lang"},
|
||||||
touch= {x=850, y=510, w=340, h=60, rgb=color.yellow, code=function()gotoScene("setting3")end,up="control",down="back",left="lang"},
|
touch= {x=850,y=510, w=340,h=60,rgb=color.yellow, code=function()gotoScene("setting3")end,up="control",down="back",left="lang"},
|
||||||
lang= {x=280, y=510, w=200, h=60, rgb=color.red, code=function()
|
lang= {x=280,y=510, w=200,h=60,rgb=color.red, code=function()
|
||||||
setting.lang=setting.lang%#langName+1
|
setting.lang=setting.lang%#langName+1
|
||||||
swapLanguage(setting.lang)
|
swapLanguage(setting.lang)
|
||||||
end,up="sddasD",down="back",right="touch"},
|
end,up="sddasD",down="back",right="touch"},
|
||||||
back= {x=640, y=620, w=300, h=70, rgb=color.white, code=back,up="touch"},
|
back= {x=640,y=620, w=300,h=70,rgb=color.white, code=back,up="touch"},
|
||||||
},
|
},
|
||||||
setting2={--Control setting
|
setting2={--Control setting
|
||||||
back={x=840,y=630,w=180,h=60,rgb=color.white,code=back},
|
back={x=840,y=630,w=180,h=60,rgb=color.white,code=back},
|
||||||
@@ -317,11 +357,11 @@ Buttons={
|
|||||||
},
|
},
|
||||||
help={
|
help={
|
||||||
back={x=640,y=590,w=180,h=60,rgb=color.white,code=back,right="qq"},
|
back={x=640,y=590,w=180,h=60,rgb=color.white,code=back,right="qq"},
|
||||||
qq={x=980,y=590,w=230,h=60,rgb=color.white,code=function()sys.openURL("tencent://message/?uin=1046101471&Site=&Menu=yes")end,left="back"},
|
qq={x=980,y=590,w=230,h=60,hide=function()return system=="Android"end,rgb=color.white,code=function()sys.openURL("tencent://message/?uin=1046101471&Site=&Menu=yes")end,left="back"},
|
||||||
},
|
},
|
||||||
stat={
|
stat={
|
||||||
back={x=640,y=590,w=180,h=60,rgb=color.white,code=back,right="path"},
|
back={x=640,y=590,w=180,h=60,rgb=color.white,code=back,right="path"},
|
||||||
path={x=980,y=590,w=250,h=60,f=30,rgb=color.white,code=function()sys.openURL("C:/Users/MrZ/AppData/Roaming/LOVE/Techmino")end,left="back"},
|
path={x=980,y=590,w=250,h=60,f=30,hide=function()return system=="Android"end,rgb=color.white,code=function()sys.openURL(fs.getSaveDirectory())end,left="back"},
|
||||||
},
|
},
|
||||||
sel=nil,--selected button id(integer)
|
sel=nil,--selected button id(integer)
|
||||||
}
|
}
|
||||||
10
main.lua
10
main.lua
@@ -1,5 +1,4 @@
|
|||||||
local gc=love.graphics
|
local gc,tm=love.graphics,love.timer
|
||||||
local tm=love.timer
|
|
||||||
local ms,kb=love.mouse,love.keyboard
|
local ms,kb=love.mouse,love.keyboard
|
||||||
local fs,sys=love.filesystem,love.system
|
local fs,sys=love.filesystem,love.system
|
||||||
int,ceil,abs,rnd,max,min,sin,cos,atan,pi=math.floor,math.ceil,math.abs,math.random,math.max,math.min,math.sin,math.cos,math.atan,math.pi
|
int,ceil,abs,rnd,max,min,sin,cos,atan,pi=math.floor,math.ceil,math.abs,math.random,math.max,math.min,math.sin,math.cos,math.atan,math.pi
|
||||||
@@ -8,6 +7,7 @@ ins,rem,sort=table.insert,table.remove,table.sort
|
|||||||
null=function()end
|
null=function()end
|
||||||
|
|
||||||
system=sys.getOS()
|
system=sys.getOS()
|
||||||
|
scr={x=0,y=0,w=gc.getWidth(),h=gc.getHeight(),k=1}
|
||||||
scene=""
|
scene=""
|
||||||
bgmPlaying=nil
|
bgmPlaying=nil
|
||||||
curBG="none"
|
curBG="none"
|
||||||
@@ -44,6 +44,7 @@ gameEnv0={
|
|||||||
keepVisible=true,visible="show",
|
keepVisible=true,visible="show",
|
||||||
sequence="bag7",
|
sequence="bag7",
|
||||||
block=true,
|
block=true,
|
||||||
|
Fkey=false,
|
||||||
ospin=true,
|
ospin=true,
|
||||||
freshLimit=1e99,
|
freshLimit=1e99,
|
||||||
target=1e99,
|
target=1e99,
|
||||||
@@ -64,6 +65,11 @@ customSel={
|
|||||||
freshLimit=3,
|
freshLimit=3,
|
||||||
opponent=1,
|
opponent=1,
|
||||||
}
|
}
|
||||||
|
preField={}for i=1,20 do preField[i]={0,0,0,0,0,0,0,0,0,0}end
|
||||||
|
freeRow={}
|
||||||
|
for i=1,40 do
|
||||||
|
freeRow[i]={0,0,0,0,0,0,0,0,0,0}
|
||||||
|
end
|
||||||
--Game system Data
|
--Game system Data
|
||||||
setting={
|
setting={
|
||||||
ghost=true,center=true,
|
ghost=true,center=true,
|
||||||
|
|||||||
91
paint.lua
91
paint.lua
@@ -53,12 +53,6 @@ local function stencil_miniTitle()
|
|||||||
gc.rectangle("fill",unpack(miniTitle_rect[i]))
|
gc.rectangle("fill",unpack(miniTitle_rect[i]))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
local function stencil_field()
|
|
||||||
gc.rectangle("fill",0,-10,300,610)
|
|
||||||
end
|
|
||||||
local function stencil_field_small()
|
|
||||||
gc.rectangle("fill",0,0,60,120)
|
|
||||||
end
|
|
||||||
|
|
||||||
FX={
|
FX={
|
||||||
flash=0,--Black screen(frame)
|
flash=0,--Black screen(frame)
|
||||||
@@ -187,7 +181,8 @@ end
|
|||||||
|
|
||||||
function VirtualkeyPreview()
|
function VirtualkeyPreview()
|
||||||
for i=1,#virtualkey do
|
for i=1,#virtualkey do
|
||||||
gc.setColor(1,sel==i and .5 or 1,sel==i and .5 or 1,setting.virtualkeyAlpha*.2)
|
local c=sel==i and .8 or 1
|
||||||
|
gc.setColor(c,c,c,setting.virtualkeyAlpha*.2)
|
||||||
local b=virtualkey[i]
|
local b=virtualkey[i]
|
||||||
gc.setLineWidth(b[4]*.07)
|
gc.setLineWidth(b[4]*.07)
|
||||||
gc.circle("line",b[1],b[2],b[4]-5)
|
gc.circle("line",b[1],b[2],b[4]-5)
|
||||||
@@ -198,16 +193,18 @@ function drawVirtualkey()
|
|||||||
local a=setting.virtualkeyAlpha*.2
|
local a=setting.virtualkeyAlpha*.2
|
||||||
local P=players[1]
|
local P=players[1]
|
||||||
for i=1,#virtualkey do
|
for i=1,#virtualkey do
|
||||||
local p,b=virtualkeyDown[i],virtualkey[i]
|
if i~=9 or modeEnv.Fkey then
|
||||||
if p then gc.setColor(.7,.7,.7,a)
|
local p,b=virtualkeyDown[i],virtualkey[i]
|
||||||
else gc.setColor(1,1,1,a)
|
if p then gc.setColor(.7,.7,.7,a)
|
||||||
end
|
else gc.setColor(1,1,1,a)
|
||||||
gc.setLineWidth(b[4]*.07)
|
end
|
||||||
gc.circle("line",b[1],b[2]+virtualkeyPressTime[i],b[4]-5)
|
gc.setLineWidth(b[4]*.07)
|
||||||
if setting.virtualkeyIcon then gc.draw(virtualkeyIcon[i],b[1],b[2]+virtualkeyPressTime[i],nil,b[4]*.025,nil,18,18)end
|
gc.circle("line",b[1],b[2]+virtualkeyPressTime[i],b[4]-5)
|
||||||
if virtualkeyPressTime[i]>0 then
|
if setting.virtualkeyIcon then gc.draw(virtualkeyIcon[i],b[1],b[2]+virtualkeyPressTime[i],nil,b[4]*.025,nil,18,18)end
|
||||||
gc.setColor(1,1,1,a*virtualkeyPressTime[i]*.1)
|
if virtualkeyPressTime[i]>0 then
|
||||||
gc.circle("line",b[1],b[2],b[4]*(1.4-virtualkeyPressTime[i]*.04))
|
gc.setColor(1,1,1,a*virtualkeyPressTime[i]*.1)
|
||||||
|
gc.circle("line",b[1],b[2],b[4]*(1.4-virtualkeyPressTime[i]*.04))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -247,6 +244,7 @@ function Pnt.BG.strap()
|
|||||||
end
|
end
|
||||||
local matrixT={}for i=0,15 do matrixT[i]={}for j=0,8 do matrixT[i][j]=mt.noise(i,j)+2 end end
|
local matrixT={}for i=0,15 do matrixT[i]={}for j=0,8 do matrixT[i][j]=mt.noise(i,j)+2 end end
|
||||||
function Pnt.BG.matrix()
|
function Pnt.BG.matrix()
|
||||||
|
gc.clear(.15,.15,.15)
|
||||||
for i=0,15 do
|
for i=0,15 do
|
||||||
for j=0,8 do
|
for j=0,8 do
|
||||||
local t=sin(matrixT[i][j]*Timer())*.2+.2
|
local t=sin(matrixT[i][j]*Timer())*.2+.2
|
||||||
@@ -287,7 +285,7 @@ function Pnt.main()
|
|||||||
gc.setColor(1,1,1)
|
gc.setColor(1,1,1)
|
||||||
gc.draw(titleImage,300,30)
|
gc.draw(titleImage,300,30)
|
||||||
setFont(30)
|
setFont(30)
|
||||||
gc.print("Alpha V0.7.13+",290,140)
|
gc.print("Alpha V0.7.14",290,140)
|
||||||
gc.print(system,800,110)
|
gc.print(system,800,110)
|
||||||
end
|
end
|
||||||
function Pnt.mode()
|
function Pnt.mode()
|
||||||
@@ -327,6 +325,38 @@ function Pnt.custom()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
function Pnt.draw()
|
||||||
|
gc.translate(200,60)
|
||||||
|
gc.setColor(1,1,1,.2)
|
||||||
|
gc.setLineWidth(1)
|
||||||
|
for x=1,9 do gc.line(30*x,0,30*x,600)end
|
||||||
|
for y=0,19 do gc.line(0,30*y,300,30*y)end
|
||||||
|
gc.setColor(1,1,1)
|
||||||
|
gc.setLineWidth(3)
|
||||||
|
gc.rectangle("line",-2,-2,304,604)
|
||||||
|
for y=1,20 do for x=1,10 do
|
||||||
|
if preField[y][x]>0 then
|
||||||
|
drawPixel(y,x,preField[y][x])
|
||||||
|
end
|
||||||
|
end end
|
||||||
|
if sx and sy then
|
||||||
|
gc.setLineWidth(2)
|
||||||
|
gc.rectangle("line",30*sx-30,600-30*sy,30,30)
|
||||||
|
end
|
||||||
|
gc.translate(-200,-60)
|
||||||
|
if clearSureTime>0 then
|
||||||
|
gc.setColor(1,1,1,clearSureTime*.02)
|
||||||
|
gc.draw(drawableText.question,1100,570)
|
||||||
|
end
|
||||||
|
if pen>0 then
|
||||||
|
gc.setLineWidth(13)
|
||||||
|
gc.setColor(blockColor[pen])
|
||||||
|
gc.rectangle("line",945,605,70,70)
|
||||||
|
else
|
||||||
|
gc.setColor(.8,.8,.8)
|
||||||
|
gc.draw(drawableText.x,950,560)
|
||||||
|
end
|
||||||
|
end
|
||||||
function Pnt.play()
|
function Pnt.play()
|
||||||
for p=1,#players do
|
for p=1,#players do
|
||||||
P=players[p]
|
P=players[p]
|
||||||
@@ -334,20 +364,22 @@ function Pnt.play()
|
|||||||
gc.push("transform")
|
gc.push("transform")
|
||||||
gc.translate(P.x,P.y)gc.scale(P.size)--Scale
|
gc.translate(P.x,P.y)gc.scale(P.size)--Scale
|
||||||
gc.setColor(0,0,0,.4)gc.rectangle("fill",0,0,60,120)--Black Background
|
gc.setColor(0,0,0,.4)gc.rectangle("fill",0,0,60,120)--Black Background
|
||||||
gc.stencil(stencil_field_small,"replace",1)
|
|
||||||
gc.translate(0,P.fieldBeneath*.2)
|
gc.translate(0,P.fieldBeneath*.2)
|
||||||
gc.setStencilTest("equal",1)
|
gc.setScissor(scr.x+P.x*scr.k,scr.y+P.y*scr.k,60*P.size*scr.k,120*P.size*scr.k)
|
||||||
gc.setColor(1,1,1,P.result and max(20-P.endCounter,0)*.05 or 1)
|
gc.setColor(1,1,1,P.result and max(20-P.endCounter,0)*.05 or 1)
|
||||||
|
local h=#P.clearing
|
||||||
for j=int(P.fieldBeneath/30+1),#P.field do
|
for j=int(P.fieldBeneath/30+1),#P.field do
|
||||||
if P.falling<=0 or without(P.clearing,j)then
|
if j==P.clearing[h]and P.falling>-1 then
|
||||||
|
h=h-1
|
||||||
|
else
|
||||||
for i=1,10 do
|
for i=1,10 do
|
||||||
if P.field[j][i]>0 then
|
if P.field[j][i]>0 then
|
||||||
gc.draw(blockSkinmini[P.field[j][i]],6*i-6,120-6*j)
|
gc.draw(blockSkinmini[P.field[j][i]],6*i-6,120-6*j)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end--Field
|
||||||
gc.setStencilTest()--In-playField mask
|
gc.setScissor()
|
||||||
gc.translate(0,-P.fieldBeneath*.2)
|
gc.translate(0,-P.fieldBeneath*.2)
|
||||||
gc.setLineWidth(2)
|
gc.setLineWidth(2)
|
||||||
gc.setColor(frameColor[P.strength])gc.rectangle("line",-1,-1,62,122)--Draw boarder
|
gc.setColor(frameColor[P.strength])gc.rectangle("line",-1,-1,62,122)--Draw boarder
|
||||||
@@ -380,10 +412,9 @@ function Pnt.play()
|
|||||||
gc.setColor(1,1,1,.2)
|
gc.setColor(1,1,1,.2)
|
||||||
for x=1,9 do gc.line(30*x,-10,30*x,600)end
|
for x=1,9 do gc.line(30*x,-10,30*x,600)end
|
||||||
for y=0,19 do gc.line(0,30*y,300,30*y)end
|
for y=0,19 do gc.line(0,30*y,300,30*y)end
|
||||||
end
|
end--Grid lines
|
||||||
gc.stencil(stencil_field,"replace", 1)
|
|
||||||
gc.translate(0,P.fieldBeneath)
|
gc.translate(0,P.fieldBeneath)
|
||||||
gc.setStencilTest("equal",1)
|
gc.setScissor(scr.x+P.absFieldPos[1]*scr.k,scr.y+P.absFieldPos[2]*scr.k,300*P.size*scr.k,610*P.size*scr.k)
|
||||||
local h=#P.clearing
|
local h=#P.clearing
|
||||||
for j=int(P.fieldBeneath/30+1),#P.field do
|
for j=int(P.fieldBeneath/30+1),#P.field do
|
||||||
if j==P.clearing[h]and P.falling>-1 then
|
if j==P.clearing[h]and P.falling>-1 then
|
||||||
@@ -393,7 +424,7 @@ function Pnt.play()
|
|||||||
else
|
else
|
||||||
for i=1,10 do
|
for i=1,10 do
|
||||||
if P.field[j][i]>0 then
|
if P.field[j][i]>0 then
|
||||||
gc.setColor(1,1,1,min(P.visTime[j][i],20)*.05)
|
gc.setColor(1,1,1,min(P.visTime[j][i]*.05,1))
|
||||||
drawPixel(j,i,P.field[j][i])
|
drawPixel(j,i,P.field[j][i])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -401,13 +432,13 @@ function Pnt.play()
|
|||||||
end--Field
|
end--Field
|
||||||
for i=1,#P.shade do
|
for i=1,#P.shade do
|
||||||
local S=P.shade[i]
|
local S=P.shade[i]
|
||||||
gc.setColor(1,1,1,.15+S[1]*.08)
|
gc.setColor(1,1,1,S[1]*.12)
|
||||||
for x=S[3],S[5]do
|
for x=S[3],S[5]do
|
||||||
for y=S[6],S[4]do
|
for y=S[6],S[4]do
|
||||||
drawPixel(y,x,S[2])
|
drawPixel(y,x,S[2])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end--shade FX
|
||||||
if P.waiting==-1 then
|
if P.waiting==-1 then
|
||||||
if P.gameEnv.ghost then
|
if P.gameEnv.ghost then
|
||||||
gc.setColor(1,1,1,.3)
|
gc.setColor(1,1,1,.3)
|
||||||
@@ -442,7 +473,7 @@ function Pnt.play()
|
|||||||
gc.setColor(1,1,1)
|
gc.setColor(1,1,1)
|
||||||
gc.draw(PTC.dust[p])
|
gc.draw(PTC.dust[p])
|
||||||
--Draw game field
|
--Draw game field
|
||||||
gc.setStencilTest()--In-playField mask
|
gc.setScissor()--In-playField mask
|
||||||
gc.translate(0,-P.fieldBeneath)
|
gc.translate(0,-P.fieldBeneath)
|
||||||
gc.setLineWidth(3)
|
gc.setLineWidth(3)
|
||||||
gc.setColor(1,1,1)
|
gc.setColor(1,1,1)
|
||||||
|
|||||||
14
texture.lua
14
texture.lua
@@ -8,7 +8,6 @@ local function C(x,y)
|
|||||||
end
|
end
|
||||||
|
|
||||||
gc.setDefaultFilter("nearest","nearest")
|
gc.setDefaultFilter("nearest","nearest")
|
||||||
|
|
||||||
local blockImg=N("/image/block/1.png")
|
local blockImg=N("/image/block/1.png")
|
||||||
blockSkin,blockSkinmini={},{}
|
blockSkin,blockSkinmini={},{}
|
||||||
for i=1,13 do
|
for i=1,13 do
|
||||||
@@ -26,15 +25,6 @@ for i=1,10 do
|
|||||||
virtualkeyIcon[i]=N("/image/virtualkey/"..actName[i]..".png")
|
virtualkeyIcon[i]=N("/image/virtualkey/"..actName[i]..".png")
|
||||||
end
|
end
|
||||||
|
|
||||||
local blockColor={
|
|
||||||
color.red,
|
|
||||||
color.green,
|
|
||||||
color.orange,
|
|
||||||
color.blue,
|
|
||||||
color.magenta,
|
|
||||||
color.yellow,
|
|
||||||
color.cyan,
|
|
||||||
}
|
|
||||||
gc.setColor(1,1,1)
|
gc.setColor(1,1,1)
|
||||||
mouseBlock={}
|
mouseBlock={}
|
||||||
for i=1,7 do
|
for i=1,7 do
|
||||||
@@ -92,8 +82,9 @@ background1=N("/image/BG/bg1.jpg")
|
|||||||
background2=N("/image/BG/bg2.png")
|
background2=N("/image/BG/bg2.png")
|
||||||
groupCode=N("/image/mess/groupcode.png")
|
groupCode=N("/image/mess/groupcode.png")
|
||||||
payCode=N("/image/mess/paycode.png")
|
payCode=N("/image/mess/paycode.png")
|
||||||
|
|
||||||
drawableText={
|
drawableText={
|
||||||
|
question=T(100,"?"),
|
||||||
|
x=T(110,"×"),
|
||||||
bpm=T(15,"BPM"),
|
bpm=T(15,"BPM"),
|
||||||
kpm=T(15,"KPM"),
|
kpm=T(15,"KPM"),
|
||||||
modeName=T(30),
|
modeName=T(30),
|
||||||
@@ -101,5 +92,4 @@ drawableText={
|
|||||||
next=T(40),
|
next=T(40),
|
||||||
hold=T(40),
|
hold=T(40),
|
||||||
}
|
}
|
||||||
|
|
||||||
c=gc.setCanvas()
|
c=gc.setCanvas()
|
||||||
@@ -45,6 +45,9 @@ function Tmr.intro()
|
|||||||
count=count+1
|
count=count+1
|
||||||
if count==200 then count=80 end
|
if count==200 then count=80 end
|
||||||
end
|
end
|
||||||
|
function Tmr.draw()
|
||||||
|
if clearSureTime>0 then clearSureTime=clearSureTime-1 end
|
||||||
|
end
|
||||||
function Tmr.play(dt)
|
function Tmr.play(dt)
|
||||||
frame=frame+1
|
frame=frame+1
|
||||||
stat.gametime=stat.gametime+dt
|
stat.gametime=stat.gametime+dt
|
||||||
|
|||||||
17
toolfunc.lua
17
toolfunc.lua
@@ -1,4 +1,5 @@
|
|||||||
local gc=love.graphics
|
local gc=love.graphics
|
||||||
|
local kb=love.keyboard
|
||||||
local setFont=setFont
|
local setFont=setFont
|
||||||
local toN,toS=tonumber,tostring
|
local toN,toS=tonumber,tostring
|
||||||
|
|
||||||
@@ -11,25 +12,18 @@ local function splitS(s,sep)
|
|||||||
if #s~=0 then goto L end
|
if #s~=0 then goto L end
|
||||||
return t
|
return t
|
||||||
end
|
end
|
||||||
function without(t,v)
|
|
||||||
for i=1,#t do
|
|
||||||
if t[i]==v then return end
|
|
||||||
end
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
function mStr(s,x,y)
|
function mStr(s,x,y)
|
||||||
gc.printf(s,x-300,y,600,"center")
|
gc.printf(s,x-300,y,600,"center")
|
||||||
end
|
end
|
||||||
|
|
||||||
function getNewRow(val)
|
function getNewRow(val)
|
||||||
if not val then val=0 end
|
|
||||||
local t=rem(freeRow)
|
local t=rem(freeRow)
|
||||||
for i=1,10 do
|
for i=1,10 do
|
||||||
t[i]=val or 0
|
t[i]=val
|
||||||
end
|
end
|
||||||
--clear a row and move to active list
|
--clear a row and move to active list
|
||||||
if #freeRow==0 then
|
if #freeRow==0 then
|
||||||
for i=1,20 do
|
for i=1,10 do
|
||||||
ins(freeRow,{0,0,0,0,0,0,0,0,0,0})
|
ins(freeRow,{0,0,0,0,0,0,0,0,0,0})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -177,13 +171,16 @@ function gotoScene(s,style)
|
|||||||
Buttons.sel=nil
|
Buttons.sel=nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local prevMenu={
|
local prevMenu={
|
||||||
load=love.event.quit,
|
load=love.event.quit,
|
||||||
intro="quit",
|
intro="quit",
|
||||||
main="intro",
|
main="intro",
|
||||||
mode="main",
|
mode="main",
|
||||||
custom="mode",
|
custom="mode",
|
||||||
|
draw=function()
|
||||||
|
kb.setKeyRepeat(false)
|
||||||
|
gotoScene("custom")
|
||||||
|
end,
|
||||||
ready="mode",
|
ready="mode",
|
||||||
play=function()
|
play=function()
|
||||||
clearTask("play")
|
clearTask("play")
|
||||||
|
|||||||
Reference in New Issue
Block a user