0.190719α
This commit is contained in:
BIN
BGM/race.ogg
BIN
BGM/race.ogg
Binary file not shown.
6
ai.lua
6
ai.lua
@@ -74,10 +74,10 @@ function getScore(field,cb,cx,cy)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
return
|
return
|
||||||
-highest*10
|
-highest*5
|
||||||
-rough*10
|
-rough*15
|
||||||
-cy*15
|
-cy*15
|
||||||
+clear^1.5*15
|
+clear^2*3
|
||||||
-hole*20
|
-hole*20
|
||||||
end
|
end
|
||||||
--controlname:mL,mR,rR,rL,rF,hD,sD,H,LL,RR
|
--controlname:mL,mR,rR,rL,rF,hD,sD,H,LL,RR
|
||||||
|
|||||||
25
button.lua
25
button.lua
@@ -9,20 +9,24 @@ Buttons={
|
|||||||
{x=500,y=540,w=320,h=60,rgb={.5,.5,.5},alpha=0,t="Quit",code=function()gotoScene("quit")end},
|
{x=500,y=540,w=320,h=60,rgb={.5,.5,.5},alpha=0,t="Quit",code=function()gotoScene("quit")end},
|
||||||
},
|
},
|
||||||
mode={
|
mode={
|
||||||
{x=350,y=200,w=220,h=70,rgb={1,1,1},alpha=0,t="Marathon",code=function()startGame("marathon")end},
|
{x=200,y=150,w=250,h=70,rgb={1,1,1},alpha=0,t="40 Lines",code=function()startGame("sprint")end},
|
||||||
{x=350,y=300,w=220,h=70,rgb={1,1,1},alpha=0,t="40 Lines",code=function()startGame("sprint")end},
|
{x=500,y=150,w=250,h=70,rgb={1,1,1},alpha=0,t="Zen",code=function()startGame("zen")end},
|
||||||
{x=650,y=200,w=220,h=70,rgb={1,1,1},alpha=0,t="Zen",code=function()startGame("zen")end},
|
{x=200,y=250,w=250,h=70,rgb={1,1,1},alpha=0,t="Marathon",code=function()startGame("marathon")end},
|
||||||
{x=650,y=300,w=220,h=70,rgb={1,1,1},alpha=0,t="Battle",code=function()startGame("battle")end},
|
{x=200,y=350,w=250,h=70,rgb={1,1,1},alpha=0,t="Death",code=function()startGame("death")end},
|
||||||
|
{x=500,y=250,w=250,h=70,rgb={1,1,1},alpha=0,t="Tetris 25",code=function()startGame("tetris25")end},
|
||||||
|
{x=500,y=350,w=250,h=70,rgb={1,1,1},alpha=0,t="AI Solo",code=function()startGame("solo")end},
|
||||||
|
{x=800,y=250,w=250,h=70,rgb={1,1,1},alpha=0,t="Blind",code=function()startGame("blind")end},
|
||||||
|
{x=800,y=350,w=250,h=70,rgb={1,1,1},alpha=0,t="Asymmetry Solo",code=function()startGame("asymsolo")end},
|
||||||
{x=500,y=520,w=350,h=80,rgb={1,1,1},alpha=0,t="Back",code=function()gotoScene("main")end},
|
{x=500,y=520,w=350,h=80,rgb={1,1,1},alpha=0,t="Back",code=function()gotoScene("main")end},
|
||||||
},
|
},
|
||||||
play={
|
play={
|
||||||
{x=950,y=30,w=80,h=40,rgb={1,1,1},alpha=0,t="Back",code=function()gotoScene("mode")end},
|
{x=950,y=30,w=80,h=40,rgb={1,1,1},alpha=0,t="Back",code=function()gotoScene("mode")end},
|
||||||
},
|
},
|
||||||
setting={
|
setting={
|
||||||
{x=120,y=80,w=30,h=30,rgb={1,1,1},alpha=0,t="-",code=function()setting.das=(setting.das-1)%41 end,hold=true},
|
{x=120,y=80,w=30,h=30,rgb={1,1,1},alpha=0,t="-",code=function()setting.das=(setting.das-1)%31 end,hold=true},
|
||||||
{x=280,y=80,w=30,h=30,rgb={1,1,1},alpha=0,t="+",code=function()setting.das=(setting.das+1)%41 end,hold=true},
|
{x=280,y=80,w=30,h=30,rgb={1,1,1},alpha=0,t="+",code=function()setting.das=(setting.das+1)%31 end,hold=true},
|
||||||
{x=320,y=80,w=30,h=30,rgb={1,1,1},alpha=0,t="-",code=function()setting.arr=(setting.arr-1)%21 end,hold=true},
|
{x=320,y=80,w=30,h=30,rgb={1,1,1},alpha=0,t="-",code=function()setting.arr=(setting.arr-1)%16 end,hold=true},
|
||||||
{x=480,y=80,w=30,h=30,rgb={1,1,1},alpha=0,t="+",code=function()setting.arr=(setting.arr+1)%21 end,hold=true},
|
{x=480,y=80,w=30,h=30,rgb={1,1,1},alpha=0,t="+",code=function()setting.arr=(setting.arr+1)%16 end,hold=true},
|
||||||
{x=200,y=200,w=190,h=40,rgb={1,1,1},alpha=0,t=function()return setting.ghost and"Ghost ON"or"Ghost OFF"end,code=function()setting.ghost=not setting.ghost end},
|
{x=200,y=200,w=190,h=40,rgb={1,1,1},alpha=0,t=function()return setting.ghost and"Ghost ON"or"Ghost OFF"end,code=function()setting.ghost=not setting.ghost end},
|
||||||
{x=400,y=200,w=190,h=40,rgb={1,1,1},alpha=0,t=function()return setting.center and"Center ON"or"Center OFF"end,code=function()setting.center=not setting.center end},
|
{x=400,y=200,w=190,h=40,rgb={1,1,1},alpha=0,t=function()return setting.center and"Center ON"or"Center OFF"end,code=function()setting.center=not setting.center end},
|
||||||
|
|
||||||
@@ -53,8 +57,9 @@ Buttons={
|
|||||||
{x=350,y=320,w=210,h=43,rgb={1,1,1},alpha=0,t=function()return setting.key[6]end,code=function()keysetting=6 end},
|
{x=350,y=320,w=210,h=43,rgb={1,1,1},alpha=0,t=function()return setting.key[6]end,code=function()keysetting=6 end},
|
||||||
{x=350,y=370,w=210,h=43,rgb={1,1,1},alpha=0,t=function()return setting.key[7]end,code=function()keysetting=7 end},
|
{x=350,y=370,w=210,h=43,rgb={1,1,1},alpha=0,t=function()return setting.key[7]end,code=function()keysetting=7 end},
|
||||||
{x=350,y=420,w=210,h=43,rgb={1,1,1},alpha=0,t=function()return setting.key[8]end,code=function()keysetting=8 end},
|
{x=350,y=420,w=210,h=43,rgb={1,1,1},alpha=0,t=function()return setting.key[8]end,code=function()keysetting=8 end},
|
||||||
{x=320,y=500,w=130,h=43,rgb={1,1,1},alpha=0,t="Reset",code=function()setting.key={"left","right","x","z","c","up","down","space","LEFT","RIGHT"}end},
|
{x=350,y=470,w=210,h=43,rgb={1,1,1},alpha=0,t=function()return setting.key[9]end,code=function()keysetting=9 end},
|
||||||
{x=500,y=500,w=100,h=50,rgb={1,1,1},alpha=0,t="Back",code=function()back()end},
|
{x=320,y=550,w=130,h=43,rgb={1,1,1},alpha=0,t="Reset",code=function()setting.key={"left","right","x","z","c","up","down","space","r","LEFT","RIGHT"}end},
|
||||||
|
{x=500,y=550,w=100,h=50,rgb={1,1,1},alpha=0,t="Back",code=function()back()end},
|
||||||
},
|
},
|
||||||
help={
|
help={
|
||||||
{x=500,y=500,w=200,h=60,rgb={1,1,1},alpha=0,t="Back",code=function()back()end},
|
{x=500,y=500,w=200,h=60,rgb={1,1,1},alpha=0,t="Back",code=function()back()end},
|
||||||
|
|||||||
2
conf.lua
2
conf.lua
@@ -19,7 +19,7 @@ function love.conf(t)
|
|||||||
t.window.minheight=300
|
t.window.minheight=300
|
||||||
t.window.fullscreen=X
|
t.window.fullscreen=X
|
||||||
t.window.fullscreentype="desktop"--Choose between "desktop" fullscreen or "exclusive" fullscreen mode (string)
|
t.window.fullscreentype="desktop"--Choose between "desktop" fullscreen or "exclusive" fullscreen mode (string)
|
||||||
t.window.vsync=1
|
t.window.vsync=0
|
||||||
t.window.msaa=0--The number of samples to use with multi-sampled antialiasing (number)
|
t.window.msaa=0--The number of samples to use with multi-sampled antialiasing (number)
|
||||||
t.window.depth=nil--The number of bits per sample in the depth buffer
|
t.window.depth=nil--The number of bits per sample in the depth buffer
|
||||||
t.window.stencil=nil--The number of bits per sample in the stencil buffer
|
t.window.stencil=nil--The number of bits per sample in the stencil buffer
|
||||||
|
|||||||
308
main.lua
308
main.lua
@@ -135,30 +135,30 @@ FX={
|
|||||||
stretch=function(t)
|
stretch=function(t)
|
||||||
gc.push("transform")
|
gc.push("transform")
|
||||||
setFont(t.font)
|
setFont(t.font)
|
||||||
gc.translate(150,250)
|
gc.translate(150,250+t.dy)
|
||||||
gc.setColor(1,1,1,min((30-abs(t.t-30))*.1,1)*(#field>9 and .7 or 1))
|
gc.setColor(1,1,1,min((30-abs(t.t-30))*.1,1)*(#field>9 and .7 or 1))
|
||||||
if t.t<20 then gc.scale((20-t.t)*.015+1,1)end
|
if t.t<20 then gc.scale((20-t.t)*.015+1,1)end
|
||||||
mStr(t.text,0,-t.font*.5+t.dy)
|
mStr(t.text,0,-t.font*.5)
|
||||||
gc.pop()
|
gc.pop()
|
||||||
end,
|
end,
|
||||||
drive=function(t)
|
drive=function(t)
|
||||||
gc.push("transform")
|
gc.push("transform")
|
||||||
setFont(t.font)
|
setFont(t.font)
|
||||||
gc.translate(150,290)
|
gc.translate(150,290+t.dy)
|
||||||
gc.setColor(1,1,1,min((30-abs(t.t-30))*.1,1)*(#field>9 and .7 or 1))
|
gc.setColor(1,1,1,min((30-abs(t.t-30))*.1,1)*(#field>9 and .7 or 1))
|
||||||
if t.t<20 then gc.shear((20-t.t)*.03,0)end
|
if t.t<20 then gc.shear((20-t.t)*.05,0)end
|
||||||
mStr(t.text,0,-t.font*.5+t.dy)
|
mStr(t.text,0,-t.font*.5)
|
||||||
gc.pop()
|
gc.pop()
|
||||||
end,
|
end,
|
||||||
spin=function(t)
|
spin=function(t)
|
||||||
gc.push("transform")
|
gc.push("transform")
|
||||||
setFont(t.font)
|
setFont(t.font)
|
||||||
gc.translate(150,250)
|
gc.translate(150,250+t.dy)
|
||||||
gc.setColor(1,1,1,min((30-abs(t.t-30))*.1,1)*(#field>9 and .7 or 1))
|
gc.setColor(1,1,1,min((30-abs(t.t-30))*.1,1)*(#field>9 and .7 or 1))
|
||||||
if t.t<20 then
|
if t.t<20 then
|
||||||
gc.scale((20-t.t)*.01+1,(20-t.t)*.015+1)
|
gc.rotate((20-t.t)^2*.0015)
|
||||||
end
|
end
|
||||||
mStr(t.text,0,-t.font*.5+t.dy)
|
mStr(t.text,0,-t.font*.5)
|
||||||
gc.pop()
|
gc.pop()
|
||||||
end,
|
end,
|
||||||
flicker=function(t)
|
flicker=function(t)
|
||||||
@@ -176,8 +176,8 @@ list={
|
|||||||
reason={[0]="Escape","Block out","Lock out","Finished","Top out"},
|
reason={[0]="Escape","Block out","Lock out","Finished","Top out"},
|
||||||
method={"Bag7","His4","Rnd"},
|
method={"Bag7","His4","Rnd"},
|
||||||
}
|
}
|
||||||
actName={"moveLeft","moveRight","rotRight","rotLeft","rotFlip","hardDrop","softDrop","hold","toLeft","toRight"}
|
actName={"moveLeft","moveRight","rotRight","rotLeft","rotFlip","hardDrop","softDrop","hold","restart","toLeft","toRight"}
|
||||||
actName_={"move left","move right","rotate right","rotate left","rotate flip","hard drop","soft drop","hold","toLeft","toRight"}
|
actName_={"move left","move right","rotate right","rotate left","rotate flip","hard drop","soft drop","hold","restart","toLeft","toRight"}
|
||||||
name={"Z","S","L","J","T","O","I"}
|
name={"Z","S","L","J","T","O","I"}
|
||||||
blockPos={4,4,4,4,4,5,4}
|
blockPos={4,4,4,4,4,5,4}
|
||||||
renATK={[0]=0,0,0,1,1,1,2,2,2,3,3,3}
|
renATK={[0]=0,0,0,1,1,1,2,2,2,3,3,3}
|
||||||
@@ -190,6 +190,7 @@ gameEnv0={
|
|||||||
next=6,hold=true,
|
next=6,hold=true,
|
||||||
sequence=1,visible=1,
|
sequence=1,visible=1,
|
||||||
_20G=false,target=9e99,
|
_20G=false,target=9e99,
|
||||||
|
freshLimit=9e99,
|
||||||
color={1,5,2,8,10,3,7,13},
|
color={1,5,2,8,10,3,7,13},
|
||||||
key={"left","right","x","z","c","up","down","space","LEFT","RIGHT"},
|
key={"left","right","x","z","c","up","down","space","LEFT","RIGHT"},
|
||||||
reach=function()end
|
reach=function()end
|
||||||
@@ -226,18 +227,6 @@ randomMethod={
|
|||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
loadmode={
|
loadmode={
|
||||||
marathon=function()
|
|
||||||
modeEnv={
|
|
||||||
drop=60,
|
|
||||||
wait=1,
|
|
||||||
fall=20,
|
|
||||||
target=10,
|
|
||||||
reach=Event.marathon_reach,
|
|
||||||
}
|
|
||||||
createPlayer(1,190,20,.8)
|
|
||||||
curBG="game1"
|
|
||||||
BGM("way")
|
|
||||||
end,
|
|
||||||
sprint=function()
|
sprint=function()
|
||||||
modeEnv={
|
modeEnv={
|
||||||
wait=1,
|
wait=1,
|
||||||
@@ -262,51 +251,165 @@ loadmode={
|
|||||||
curBG="game1"
|
curBG="game1"
|
||||||
BGM("reason")
|
BGM("reason")
|
||||||
end,
|
end,
|
||||||
gm=function()
|
marathon=function()
|
||||||
modeEnv={
|
modeEnv={
|
||||||
drop=60,
|
drop=60,
|
||||||
wait=10,
|
wait=1,
|
||||||
fall=5,
|
fall=20,
|
||||||
target=100,
|
target=10,
|
||||||
reach=Event.gm_reach,
|
reach=Event.marathon_reach,
|
||||||
|
freshLimit=20,
|
||||||
|
}
|
||||||
|
createPlayer(1,190,20,.8)
|
||||||
|
curBG="game1"
|
||||||
|
BGM("way")
|
||||||
|
end,
|
||||||
|
death=function()
|
||||||
|
modeEnv={
|
||||||
|
_20G=true,
|
||||||
|
drop=0,
|
||||||
|
lock=10,
|
||||||
|
wait=6,
|
||||||
|
fall=10,
|
||||||
|
target=50,
|
||||||
|
reach=Event.death_reach,
|
||||||
|
freshLimit=13,
|
||||||
|
arr=1,
|
||||||
}
|
}
|
||||||
createPlayer(1,190,20,.8)
|
createPlayer(1,190,20,.8)
|
||||||
curBG="game2"
|
curBG="game2"
|
||||||
BGM("push")
|
BGM("push")
|
||||||
end,
|
end,
|
||||||
battle=function()
|
tetris25=function()
|
||||||
modeEnv={
|
modeEnv={
|
||||||
wait=1,
|
wait=1,
|
||||||
fall=1,
|
fall=1,
|
||||||
}
|
}
|
||||||
createPlayer(1,240,30,.8)--Player
|
createPlayer(1,240,30,.8)--Player
|
||||||
|
|
||||||
-- createPlayer(2,580,25,.38,true)
|
|
||||||
-- createPlayer(3,580,315,.38,true)
|
|
||||||
--Triple
|
|
||||||
|
|
||||||
-- createPlayer(2,580,140,.6,true)
|
|
||||||
--Solo
|
|
||||||
|
|
||||||
local n=2
|
local n=2
|
||||||
for i=1,3 do
|
for i=1,2 do
|
||||||
for j=1,7 do
|
for j=1,5 do
|
||||||
createPlayer(n,75*i-65,80*j-55,.1,true)
|
createPlayer(n,100*i-65,110*j-75,.15,rnd(4)+1)
|
||||||
n=n+1
|
n=n+1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
for i=11,13 do
|
for i=9,10 do
|
||||||
for j=1,7 do
|
for j=1,5 do
|
||||||
createPlayer(n,75*i-65,80*j-55,.1,true)
|
createPlayer(n,100*i-130,110*j-75,.14,rnd(4)+1)
|
||||||
n=n+1
|
n=n+1
|
||||||
end
|
end
|
||||||
end
|
end--AIs
|
||||||
|
|
||||||
|
curBG="game2"
|
||||||
|
BGM("race")
|
||||||
|
end,
|
||||||
|
solo=function()
|
||||||
|
modeEnv={
|
||||||
|
wait=1,
|
||||||
|
fall=1,
|
||||||
|
}
|
||||||
|
createPlayer(1,40,30,.8)--Player
|
||||||
|
createPlayer(2,560,100,.7,2)--AI
|
||||||
|
|
||||||
|
curBG="game2"
|
||||||
|
BGM("race")
|
||||||
|
end,
|
||||||
|
blind=function()
|
||||||
|
modeEnv={
|
||||||
|
drop=15,
|
||||||
|
lock=30,
|
||||||
|
wait=1,
|
||||||
|
fall=1,
|
||||||
|
visible=0,
|
||||||
|
freshLimit=5,
|
||||||
|
}
|
||||||
|
createPlayer(1,190,20,.8)
|
||||||
|
|
||||||
|
curBG="game1"
|
||||||
|
BGM("push")
|
||||||
|
end,
|
||||||
|
asymsolo=function()
|
||||||
|
modeEnv={
|
||||||
|
wait=1,
|
||||||
|
fall=1,
|
||||||
|
visible=2,
|
||||||
|
}
|
||||||
|
createPlayer(1,40,30,.8)--Player
|
||||||
|
createPlayer(2,560,100,.7,2)--AI
|
||||||
|
|
||||||
curBG="game2"
|
curBG="game2"
|
||||||
BGM("race")
|
BGM("race")
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
Event={
|
Event={
|
||||||
|
gameover={
|
||||||
|
win=function()
|
||||||
|
P.alive=false
|
||||||
|
P.control=false
|
||||||
|
P.waiting=1e99
|
||||||
|
gameover=0
|
||||||
|
for i=1,#visTime do for j=1,10 do
|
||||||
|
P.visTime[i][j]=1e99
|
||||||
|
end end--Make all visible
|
||||||
|
P.control=false
|
||||||
|
ins(task,Event.task.win)
|
||||||
|
end,
|
||||||
|
lose=function()
|
||||||
|
P.alive=false
|
||||||
|
P.control=false
|
||||||
|
P.waiting=1e99
|
||||||
|
gameover=0
|
||||||
|
for i=1,#visTime do for j=1,10 do
|
||||||
|
P.visTime[i][j]=1e99
|
||||||
|
end end--Make all visible
|
||||||
|
for i=1,#players.alive do
|
||||||
|
if players.alive[i]==P.id then
|
||||||
|
rem(players.alive,i)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
for i=1,#P.atkBuffer do
|
||||||
|
P.atkBuffer[i].sent=true
|
||||||
|
P.atkBuffer[i].time=0
|
||||||
|
end
|
||||||
|
ins(task,Event.task.lose)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
marathon_reach=function()
|
||||||
|
local s=int(P.cstat.row*.1)
|
||||||
|
if s>=20 then
|
||||||
|
Event.gameover.win()
|
||||||
|
else
|
||||||
|
gameEnv.drop=Data.marathon_drop[s]
|
||||||
|
gameEnv.target=s*10+10
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
death_reach=function()
|
||||||
|
if gameEnv.target==50 then
|
||||||
|
gameEnv.lock=9
|
||||||
|
gameEnv.wait=4
|
||||||
|
gameEnv.fall=8
|
||||||
|
showText("STAGE 2","drive",80,-80)
|
||||||
|
elseif gameEnv.target==100 then
|
||||||
|
gameEnv.lock=8
|
||||||
|
gameEnv.wait=3
|
||||||
|
gameEnv.fall=6
|
||||||
|
showText("STAGE 3","drive",80,-80)
|
||||||
|
elseif gameEnv.target==150 then
|
||||||
|
gameEnv.lock=7
|
||||||
|
gameEnv.wait=3
|
||||||
|
gameEnv.fall=5
|
||||||
|
showText("STAGE 4","drive",80,-80)
|
||||||
|
elseif gameEnv.target==200 then
|
||||||
|
gameEnv.lock=6
|
||||||
|
gameEnv.wait=2
|
||||||
|
gameEnv.fall=4
|
||||||
|
showText("STAGE 5","drive",80,-80)
|
||||||
|
gameEnv.target=250
|
||||||
|
end
|
||||||
|
gameEnv.target=gameEnv.target+50
|
||||||
|
end,
|
||||||
task={
|
task={
|
||||||
win=function()
|
win=function()
|
||||||
gameover=gameover+1
|
gameover=gameover+1
|
||||||
@@ -338,50 +441,6 @@ Event={
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
gameover={
|
|
||||||
win=function()
|
|
||||||
P.control=false
|
|
||||||
P.waiting=1e99
|
|
||||||
gameover=0
|
|
||||||
for i=1,#visTime do for j=1,10 do
|
|
||||||
P.visTime[i][j]=1e99
|
|
||||||
end end--Make all visible
|
|
||||||
P.control=false
|
|
||||||
ins(task,Event.task.win)
|
|
||||||
end,
|
|
||||||
lose=function()
|
|
||||||
P.control=false
|
|
||||||
P.waiting=1e99
|
|
||||||
gameover=0
|
|
||||||
for i=1,#visTime do for j=1,10 do
|
|
||||||
P.visTime[i][j]=1e99
|
|
||||||
end end--Make all visible
|
|
||||||
P.control=false
|
|
||||||
for i=1,#players.alive do
|
|
||||||
if players.alive[i]==P.id then
|
|
||||||
rem(players.alive,i)
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
for i=1,#P.atkBuffer do
|
|
||||||
P.atkBuffer[i].sent=true
|
|
||||||
P.atkBuffer[i].time=0
|
|
||||||
end
|
|
||||||
ins(task,Event.task.lose)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
marathon_reach=function()
|
|
||||||
local s=int(P.cstat.row*.1)
|
|
||||||
if s>=20 then
|
|
||||||
Event.gameover.win()
|
|
||||||
else
|
|
||||||
gameEnv.drop=Data.marathon_drop[s]
|
|
||||||
gameEnv.target=s*10+10
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
gm_reach=function()
|
|
||||||
|
|
||||||
end
|
|
||||||
}
|
}
|
||||||
Data={
|
Data={
|
||||||
marathon_drop={[0]=60,50,40,30,25,20,18,16,14,12,10,8,7,6,5,4,3,2,1,1},
|
marathon_drop={[0]=60,50,40,30,25,20,18,16,14,12,10,8,7,6,5,4,3,2,1,1},
|
||||||
@@ -391,12 +450,6 @@ Data={
|
|||||||
shirase_lare={[0]=0},
|
shirase_lare={[0]=0},
|
||||||
}
|
}
|
||||||
mesDisp={
|
mesDisp={
|
||||||
marathon=function()
|
|
||||||
gc.setColor(1,1,1)
|
|
||||||
setFont(40)
|
|
||||||
gc.print(format("%0.2f",time),-130,530)
|
|
||||||
mStr(P.cstat.row.."/"..gameEnv.target,-80,250)
|
|
||||||
end,
|
|
||||||
sprint=function()
|
sprint=function()
|
||||||
gc.setColor(1,1,1)
|
gc.setColor(1,1,1)
|
||||||
setFont(40)
|
setFont(40)
|
||||||
@@ -411,8 +464,30 @@ mesDisp={
|
|||||||
setFont(75)
|
setFont(75)
|
||||||
mStr(max(200-P.cstat.row,0),-80,280)
|
mStr(max(200-P.cstat.row,0),-80,280)
|
||||||
end,
|
end,
|
||||||
gm=function()end,
|
marathon=function()
|
||||||
battle=function()end,
|
gc.setColor(1,1,1)
|
||||||
|
setFont(40)
|
||||||
|
gc.print(format("%0.2f",time),-130,530)
|
||||||
|
mStr(P.cstat.row.."/"..gameEnv.target,-80,250)
|
||||||
|
end,
|
||||||
|
death=function()
|
||||||
|
gc.setColor(1,1,1)
|
||||||
|
setFont(40)
|
||||||
|
gc.print(format("%0.2f",time),-130,530)
|
||||||
|
mStr(P.cstat.row.."/"..gameEnv.target,-80,250)
|
||||||
|
end,
|
||||||
|
tetris25=function()
|
||||||
|
gc.setColor(1,1,1)
|
||||||
|
setFont(80)
|
||||||
|
mStr(#players.alive,-80,440)
|
||||||
|
setFont(40)
|
||||||
|
gc.print("Remain",-142,510)
|
||||||
|
end,
|
||||||
|
blind=function()
|
||||||
|
gc.setColor(1,1,1)
|
||||||
|
setFont(40)
|
||||||
|
gc.print(P.cstat.row,-80,250)
|
||||||
|
end,
|
||||||
}
|
}
|
||||||
--Game system Data
|
--Game system Data
|
||||||
|
|
||||||
@@ -422,7 +497,7 @@ setting={
|
|||||||
lang="eng",
|
lang="eng",
|
||||||
das=5,arr=0,
|
das=5,arr=0,
|
||||||
ghost=true,center=true,
|
ghost=true,center=true,
|
||||||
key={"left","right","x","z","c","up","down","space","LEFT","RIGHT"},
|
key={"left","right","x","z","c","up","down","space","r","LEFT","RIGHT"},
|
||||||
color={1,5,2,8,10,3,7,13},
|
color={1,5,2,8,10,3,7,13},
|
||||||
}
|
}
|
||||||
stat={
|
stat={
|
||||||
@@ -526,21 +601,22 @@ function gotoScene(s,style)
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function createPlayer(id,x,y,size,ifAI,data)
|
function createPlayer(id,x,y,size,AIspeed,data)
|
||||||
players[id]={id=id}
|
players[id]={id=id}
|
||||||
ins(players.alive,id)
|
ins(players.alive,id)
|
||||||
local P=players[id]
|
local P=players[id]
|
||||||
P.index={__index=P}
|
P.index={__index=P}
|
||||||
P.x,P.y,P.size=x,y,size
|
P.x,P.y,P.size=x,y,size
|
||||||
|
|
||||||
if ifAI then
|
if AIspeed then
|
||||||
P.ai={
|
P.ai={
|
||||||
controls={},
|
controls={},
|
||||||
controlDelay=2,
|
controlDelay=60,
|
||||||
controlDelay0=2,
|
controlDelay0=AIspeed,
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
P.alive=true
|
||||||
P.control=false
|
P.control=false
|
||||||
P.time=0
|
P.time=0
|
||||||
P.cstat={piece=0,row=0,atk=0}--Current gamestat
|
P.cstat={piece=0,row=0,atk=0}--Current gamestat
|
||||||
@@ -564,6 +640,7 @@ function createPlayer(id,x,y,size,ifAI,data)
|
|||||||
P.hn,P.hb,P.holded=0,{{}},false
|
P.hn,P.hb,P.holded=0,{{}},false
|
||||||
P.nxt,P.nb={},{}
|
P.nxt,P.nb={},{}
|
||||||
P.dropDelay,P.lockDelay=P.gameEnv.drop,P.gameEnv.lock
|
P.dropDelay,P.lockDelay=P.gameEnv.drop,P.gameEnv.lock
|
||||||
|
P.freshTime=0
|
||||||
|
|
||||||
local bag1={1,2,3,4,5,6,7}
|
local bag1={1,2,3,4,5,6,7}
|
||||||
for i=1,7 do
|
for i=1,7 do
|
||||||
@@ -598,6 +675,7 @@ function startGame(mode)
|
|||||||
|
|
||||||
frame=0
|
frame=0
|
||||||
count=179
|
count=179
|
||||||
|
FX.beam={}
|
||||||
for i=1,#PTC.dust do PTC.dust[i]:release()end
|
for i=1,#PTC.dust do PTC.dust[i]:release()end
|
||||||
for i=1,#players do
|
for i=1,#players do
|
||||||
PTC.dust[i]=PTC.dust[0]:clone()
|
PTC.dust[i]=PTC.dust[0]:clone()
|
||||||
@@ -707,7 +785,7 @@ function resetblock()
|
|||||||
P.r,P.c=#cb,#cb[1]
|
P.r,P.c=#cb,#cb[1]
|
||||||
P.cx,P.cy=blockPos[bn],21+ceil(fieldBeneath/30)
|
P.cx,P.cy=blockPos[bn],21+ceil(fieldBeneath/30)
|
||||||
freshgho()
|
freshgho()
|
||||||
P.dropDelay,P.lockDelay=gameEnv.drop,gameEnv.lock
|
P.dropDelay,P.lockDelay,P.freshTime=gameEnv.drop,gameEnv.lock,0
|
||||||
if keyPressing[8]then hold(true)end
|
if keyPressing[8]then hold(true)end
|
||||||
if keyPressing[3]then spin(1,true)end
|
if keyPressing[3]then spin(1,true)end
|
||||||
if keyPressing[4]then spin(-1,true)end
|
if keyPressing[4]then spin(-1,true)end
|
||||||
@@ -718,9 +796,9 @@ end
|
|||||||
function pressKey(i,player)
|
function pressKey(i,player)
|
||||||
P=player or players[1]
|
P=player or players[1]
|
||||||
setmetatable(_G,P.index)
|
setmetatable(_G,P.index)
|
||||||
if control then
|
P.keyPressing[i]=true
|
||||||
P.keyPressing[i]=true
|
if alive then
|
||||||
if waiting<=0 then
|
if control and waiting<=0 then
|
||||||
act[actName[i]]()
|
act[actName[i]]()
|
||||||
if i>2 and i<6 then keyPressing[i]=false end
|
if i>2 and i<6 then keyPressing[i]=false end
|
||||||
elseif i==1 then
|
elseif i==1 then
|
||||||
@@ -729,9 +807,11 @@ function pressKey(i,player)
|
|||||||
P.moving=1
|
P.moving=1
|
||||||
end
|
end
|
||||||
P.cstat.key=stat.key+1;ins(keyTime,1,frame)rem(keyTime,11)
|
P.cstat.key=stat.key+1;ins(keyTime,1,frame)rem(keyTime,11)
|
||||||
-- if playmode=="recording"then ins(rec,{i,frame})end
|
|
||||||
stat.key=stat.key+1
|
stat.key=stat.key+1
|
||||||
|
elseif i==9 then
|
||||||
|
act[actName[i]]()
|
||||||
end
|
end
|
||||||
|
-- if playmode=="recording"then ins(rec,{i,frame})end
|
||||||
end
|
end
|
||||||
function releaseKey(i,player)
|
function releaseKey(i,player)
|
||||||
P=player or players[1]
|
P=player or players[1]
|
||||||
@@ -760,7 +840,10 @@ function spin(d,ifpre)
|
|||||||
P.r,P.c=ir,ic
|
P.r,P.c=ir,ic
|
||||||
P.dir=(dir+d)%4
|
P.dir=(dir+d)%4
|
||||||
freshgho()
|
freshgho()
|
||||||
P.lockDelay=gameEnv.lock
|
P.freshTime=P.freshTime+1
|
||||||
|
if P.freshTime<=gameEnv.freshLimit then
|
||||||
|
P.lockDelay=gameEnv.lock
|
||||||
|
end
|
||||||
SFX(ifpre and"prerotate"or ifoverlap(cb,cx,cy+1)and ifoverlap(cb,cx-1,cy)and ifoverlap(cb,cx+1,cy)and"rotatekick"or"rotate")
|
SFX(ifpre and"prerotate"or ifoverlap(cb,cx,cy+1)and ifoverlap(cb,cx-1,cy)and ifoverlap(cb,cx+1,cy)and"rotatekick"or"rotate")
|
||||||
stat.rotate=stat.rotate+1
|
stat.rotate=stat.rotate+1
|
||||||
end
|
end
|
||||||
@@ -775,7 +858,7 @@ function hold(ifpre)
|
|||||||
P.r,P.c=#cb,#cb[1]
|
P.r,P.c=#cb,#cb[1]
|
||||||
P.cx,P.cy=blockPos[bn],21
|
P.cx,P.cy=blockPos[bn],21
|
||||||
freshgho()
|
freshgho()
|
||||||
P.dropDelay,P.lockDelay=gameEnv.drop,gameEnv.lock
|
P.dropDelay,P.lockDelay,P.freshTime=gameEnv.drop,gameEnv.lock,0
|
||||||
if ifoverlap(cb,cx,cy) then Event.gameover.lose()end
|
if ifoverlap(cb,cx,cy) then Event.gameover.lose()end
|
||||||
P.holded=true
|
P.holded=true
|
||||||
SFX(ifpre and"prehold"or"hold")
|
SFX(ifpre and"prehold"or"hold")
|
||||||
@@ -924,7 +1007,7 @@ mouseDown={}
|
|||||||
keyDown={}
|
keyDown={}
|
||||||
function keyDown.play(key)
|
function keyDown.play(key)
|
||||||
local k=players[1].gameEnv.key
|
local k=players[1].gameEnv.key
|
||||||
for i=1,10 do
|
for i=1,11 do
|
||||||
if key==k[i]then
|
if key==k[i]then
|
||||||
pressKey(i,players[1])
|
pressKey(i,players[1])
|
||||||
break
|
break
|
||||||
@@ -992,8 +1075,8 @@ function love.draw()
|
|||||||
setFont(35)
|
setFont(35)
|
||||||
drawButton()
|
drawButton()
|
||||||
if mouseShow then
|
if mouseShow then
|
||||||
gc.setColor(1,0,0,.6)
|
gc.setColor(1,.5,0,.7)
|
||||||
gc.circle("fill",mx,my,4)
|
gc.circle("fill",mx,my,6)
|
||||||
end
|
end
|
||||||
if sceneSwaping then sceneSwaping.draw()end
|
if sceneSwaping then sceneSwaping.draw()end
|
||||||
|
|
||||||
@@ -1006,8 +1089,8 @@ function love.draw()
|
|||||||
gc.rectangle("fill",1000,0,(ww*600/wh-1000)*.5,600)
|
gc.rectangle("fill",1000,0,(ww*600/wh-1000)*.5,600)
|
||||||
end--Draw black side
|
end--Draw black side
|
||||||
|
|
||||||
--numFont(10)gc.setColor(1,1,1)
|
numFont(10)gc.setColor(1,1,1)
|
||||||
--gc.print(tm.getFPS(),0,590)
|
gc.print(tm.getFPS(),0,590)
|
||||||
--if gcinfo()>500 then collectgarbage()end
|
--if gcinfo()>500 then collectgarbage()end
|
||||||
end
|
end
|
||||||
function love.resize(x,y)
|
function love.resize(x,y)
|
||||||
@@ -1034,6 +1117,7 @@ function love.focus(f)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
function love.run()
|
function love.run()
|
||||||
|
local frameT=Timer()
|
||||||
tm.step()
|
tm.step()
|
||||||
love.resize(1000,600)
|
love.resize(1000,600)
|
||||||
game.load()--Launch
|
game.load()--Launch
|
||||||
@@ -1055,6 +1139,8 @@ function love.run()
|
|||||||
gc.present()
|
gc.present()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
while Timer()-frameT<1/60 do end
|
||||||
|
frameT=Timer()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
--System callbacks
|
--System callbacks
|
||||||
|
|||||||
16
paint.lua
16
paint.lua
@@ -75,7 +75,7 @@ function Pnt.play()
|
|||||||
setmetatable(_G,P.index)
|
setmetatable(_G,P.index)
|
||||||
gc.push("transform")
|
gc.push("transform")
|
||||||
gc.translate(x,y)gc.scale(size)--Scale
|
gc.translate(x,y)gc.scale(size)--Scale
|
||||||
gc.setColor(0,0,0,.7)gc.rectangle("fill",0,0,620,690)--Back
|
gc.setColor(0,0,0,.8)gc.rectangle("fill",0,0,620,690)--Black Background
|
||||||
gc.setLineWidth(3)
|
gc.setLineWidth(3)
|
||||||
gc.setColor(1,1,1)gc.rectangle("line",0,0,620,690)--Big frame
|
gc.setColor(1,1,1)gc.rectangle("line",0,0,620,690)--Big frame
|
||||||
gc.translate(160,70)
|
gc.translate(160,70)
|
||||||
@@ -102,6 +102,12 @@ function Pnt.play()
|
|||||||
end
|
end
|
||||||
end end
|
end end
|
||||||
end--Ghost
|
end--Ghost
|
||||||
|
gc.setColor(1,1,1,lockDelay/gameEnv.lock)
|
||||||
|
for i=1,r do for j=1,c do
|
||||||
|
if cb[i][j]>0 then
|
||||||
|
gc.rectangle("fill",30*(j+cx-1)-35,595-30*(i+cy-1),40,40)
|
||||||
|
end
|
||||||
|
end end--BlockShade(lockdelay indicator)
|
||||||
for i=1,r do for j=1,c do
|
for i=1,r do for j=1,c do
|
||||||
if cb[i][j]>0 then
|
if cb[i][j]>0 then
|
||||||
drawPixel(i+cy-1,j+cx-1,gameEnv.color[bn],1)
|
drawPixel(i+cy-1,j+cx-1,gameEnv.color[bn],1)
|
||||||
@@ -142,7 +148,7 @@ function Pnt.play()
|
|||||||
h=h+bar
|
h=h+bar
|
||||||
if h>600 then break end
|
if h>600 then break end
|
||||||
end--Buffer line
|
end--Buffer line
|
||||||
|
|
||||||
setFont(40)
|
setFont(40)
|
||||||
if gameEnv.hold then
|
if gameEnv.hold then
|
||||||
gc.setColor(1,1,1)
|
gc.setColor(1,1,1)
|
||||||
@@ -179,7 +185,7 @@ function Pnt.play()
|
|||||||
for i=1,#bonus do
|
for i=1,#bonus do
|
||||||
bonus[i]:draw()
|
bonus[i]:draw()
|
||||||
end--Effects
|
end--Effects
|
||||||
mesDisp[gamemode]()--Draw message
|
if mesDisp[gamemode]then mesDisp[gamemode]()end--Draw message
|
||||||
setFont(45)
|
setFont(45)
|
||||||
gc.translate(380,550)
|
gc.translate(380,550)
|
||||||
gc.setColor(1,1,1)
|
gc.setColor(1,1,1)
|
||||||
@@ -200,7 +206,7 @@ function Pnt.play()
|
|||||||
gc.setLineWidth(3)
|
gc.setLineWidth(3)
|
||||||
for i=1,#FX.beam do
|
for i=1,#FX.beam do
|
||||||
local b=FX.beam[i]
|
local b=FX.beam[i]
|
||||||
local t=b.t/45
|
local t=b.t/30
|
||||||
if t<.25 then
|
if t<.25 then
|
||||||
t=t*4
|
t=t*4
|
||||||
gc.setColor(1,1,1,4*t)
|
gc.setColor(1,1,1,4*t)
|
||||||
@@ -225,7 +231,7 @@ end
|
|||||||
function Pnt.setting2()
|
function Pnt.setting2()
|
||||||
setFont(30)
|
setFont(30)
|
||||||
gc.setColor(1,1,1)
|
gc.setColor(1,1,1)
|
||||||
for i=1,8 do
|
for i=1,9 do
|
||||||
gc.printf(actName_[i]..":",80,5+50*i,150,"right")
|
gc.printf(actName_[i]..":",80,5+50*i,150,"right")
|
||||||
end
|
end
|
||||||
if keysetting then
|
if keysetting then
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
1.缓冲条位置
|
|
||||||
2.
|
|
||||||
168
timer.lua
168
timer.lua
@@ -60,108 +60,110 @@ function Tmr.play(dt)
|
|||||||
for p=1,#players do
|
for p=1,#players do
|
||||||
P=players[p]
|
P=players[p]
|
||||||
setmetatable(_G,P.index)
|
setmetatable(_G,P.index)
|
||||||
if control then P.time=time+dt end
|
if alive then
|
||||||
|
if control then P.time=time+dt end
|
||||||
|
|
||||||
local v=0
|
local v=0
|
||||||
for i=2,10 do v=v+i*(i-1)*7.2/(frame-keyTime[i])end P.keySpeed=keySpeed*.99+v*.1
|
for i=2,10 do v=v+i*(i-1)*7.2/(frame-keyTime[i])end P.keySpeed=keySpeed*.99+v*.1
|
||||||
v=0 for i=2,10 do v=v+i*(i-1)*7.2/(frame-dropTime[i])end P.dropSpeed=dropSpeed*.99+v*.1
|
v=0 for i=2,10 do v=v+i*(i-1)*7.2/(frame-dropTime[i])end P.dropSpeed=dropSpeed*.99+v*.1
|
||||||
--Update speeds
|
--Update speeds
|
||||||
|
|
||||||
if P.ai then
|
if P.ai then
|
||||||
P.ai.controlDelay=P.ai.controlDelay-1
|
P.ai.controlDelay=P.ai.controlDelay-1
|
||||||
if P.ai.controlDelay==0 then
|
if P.ai.controlDelay==0 then
|
||||||
if #P.ai.controls>0 then
|
if #P.ai.controls>0 then
|
||||||
pressKey(P.ai.controls[1],P)
|
pressKey(P.ai.controls[1],P)
|
||||||
releaseKey(P.ai.controls[1],P)
|
releaseKey(P.ai.controls[1],P)
|
||||||
rem(P.ai.controls,1)
|
rem(P.ai.controls,1)
|
||||||
P.ai.controlDelay=P.ai.controlDelay0
|
P.ai.controlDelay=P.ai.controlDelay0+rnd(3)
|
||||||
else
|
else
|
||||||
AI_getControls(P.ai.controls)
|
AI_getControls(P.ai.controls)
|
||||||
P.ai.controlDelay=2*P.ai.controlDelay0
|
P.ai.controlDelay=2*P.ai.controlDelay0
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
for j=1,#field do for i=1,10 do
|
|
||||||
if visTime[j][i]>0 then P.visTime[j][i]=visTime[j][i]-1 end
|
|
||||||
end end
|
|
||||||
--Fresh visible time
|
|
||||||
if keyPressing[1]or keyPressing[2]then
|
|
||||||
P.moving=moving+sgn(moving)
|
|
||||||
local d=abs(moving)-gameEnv.das
|
|
||||||
if d>1 then
|
|
||||||
if gameEnv.arr>0 then
|
|
||||||
if d%gameEnv.arr==0 then
|
|
||||||
act[moving>0 and"moveRight"or"moveLeft"](true)
|
|
||||||
end
|
end
|
||||||
else
|
|
||||||
act[moving>0 and"toRight"or"toLeft"]()
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
|
||||||
P.moving=0
|
for j=1,#field do for i=1,10 do
|
||||||
end
|
if visTime[j][i]>0 then P.visTime[j][i]=visTime[j][i]-1 end
|
||||||
if keyPressing[7]then
|
end end
|
||||||
act.softDrop()
|
--Fresh visible time
|
||||||
P.downing=downing+1
|
if keyPressing[1]or keyPressing[2]then
|
||||||
else
|
P.moving=moving+sgn(moving)
|
||||||
P.downing=0
|
local d=abs(moving)-gameEnv.das
|
||||||
end
|
if d>1 then
|
||||||
if falling>0 then
|
if gameEnv.arr>0 then
|
||||||
P.falling=falling-1
|
if d%gameEnv.arr==0 then
|
||||||
if falling<=0 then
|
act[moving>0 and"moveRight"or"moveLeft"](true)
|
||||||
if #field>clearing[1]then SFX("fall")end
|
end
|
||||||
for i=1,#clearing do
|
else
|
||||||
rem(field,clearing[i])
|
act[moving>0 and"toRight"or"toLeft"]()
|
||||||
rem(visTime,clearing[i])
|
end
|
||||||
end
|
|
||||||
P.clearing={}
|
|
||||||
end
|
|
||||||
elseif waiting>0 then
|
|
||||||
P.waiting=waiting-1
|
|
||||||
if waiting<=0 then
|
|
||||||
resetblock()
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if cy~=y_img then
|
|
||||||
if dropDelay>1 then
|
|
||||||
P.dropDelay=dropDelay-1
|
|
||||||
else
|
|
||||||
drop()
|
|
||||||
P.dropDelay,P.lockDelay=gameEnv.drop,gameEnv.lock
|
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if lockDelay>0 then P.lockDelay=lockDelay-1
|
P.moving=0
|
||||||
else drop()
|
end
|
||||||
|
if keyPressing[7]then
|
||||||
|
act.softDrop()
|
||||||
|
P.downing=downing+1
|
||||||
|
else
|
||||||
|
P.downing=0
|
||||||
|
end
|
||||||
|
if falling>0 then
|
||||||
|
P.falling=falling-1
|
||||||
|
if falling<=0 then
|
||||||
|
if #field>clearing[1]then SFX("fall")end
|
||||||
|
for i=1,#clearing do
|
||||||
|
rem(field,clearing[i])
|
||||||
|
rem(visTime,clearing[i])
|
||||||
|
end
|
||||||
|
P.clearing={}
|
||||||
|
end
|
||||||
|
elseif waiting>0 then
|
||||||
|
P.waiting=waiting-1
|
||||||
|
if waiting<=0 then
|
||||||
|
resetblock()
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if cy~=y_img then
|
||||||
|
if dropDelay>1 then
|
||||||
|
P.dropDelay=dropDelay-1
|
||||||
|
else
|
||||||
|
drop()
|
||||||
|
P.dropDelay,P.lockDelay=gameEnv.drop,gameEnv.lock
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if lockDelay>0 then P.lockDelay=lockDelay-1
|
||||||
|
else drop()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end--If alive
|
||||||
for i=#bonus,1,-1 do
|
for i=#bonus,1,-1 do
|
||||||
bonus[i].t=bonus[i].t+1
|
bonus[i].t=bonus[i].t+1
|
||||||
if bonus[i].t>60 then rem(bonus,i)end
|
if bonus[i].t>60 then rem(bonus,i)end
|
||||||
end
|
end
|
||||||
for i=#task,1,-1 do
|
for i=#task,1,-1 do
|
||||||
if task[i]()then rem(task,i)end
|
if task[i]()then rem(task,i)end
|
||||||
end
|
end
|
||||||
for i=#atkBuffer,1,-1 do
|
for i=#atkBuffer,1,-1 do
|
||||||
local atk=atkBuffer[i]
|
local atk=atkBuffer[i]
|
||||||
atk.time=atk.time+1
|
atk.time=atk.time+1
|
||||||
if not atk.sent then
|
if not atk.sent then
|
||||||
if atk.countdown>0 then
|
if atk.countdown>0 then
|
||||||
atk.countdown=atk.countdown-1
|
atk.countdown=atk.countdown-1
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if atk.time>20 then
|
if atk.time>20 then
|
||||||
rem(atkBuffer,i)
|
rem(atkBuffer,i)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if fieldBeneath>0 then P.fieldBeneath=fieldBeneath-1 end
|
if fieldBeneath>0 then P.fieldBeneath=fieldBeneath-2 end
|
||||||
PTC.dust[p]:update(dt)
|
PTC.dust[p]:update(dt)
|
||||||
end
|
end
|
||||||
for i=#FX.beam,1,-1 do
|
for i=#FX.beam,1,-1 do
|
||||||
FX.beam[i].t=FX.beam[i].t+1
|
FX.beam[i].t=FX.beam[i].t+1
|
||||||
if FX.beam[i].t>45 then
|
if FX.beam[i].t>30 then
|
||||||
rem(FX.beam,i)
|
rem(FX.beam,i)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -4,7 +4,10 @@ act={
|
|||||||
if not ifoverlap(cb,cx-1,cy)then
|
if not ifoverlap(cb,cx-1,cy)then
|
||||||
P.cx=cx-1
|
P.cx=cx-1
|
||||||
freshgho()
|
freshgho()
|
||||||
P.lockDelay=gameEnv.lock
|
P.freshTime=P.freshTime+1
|
||||||
|
if P.freshTime<=gameEnv.freshLimit then
|
||||||
|
P.lockDelay=gameEnv.lock
|
||||||
|
end
|
||||||
if cy==y_img then SFX("move")end
|
if cy==y_img then SFX("move")end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
@@ -13,7 +16,10 @@ act={
|
|||||||
if not ifoverlap(cb,cx+1,cy)then
|
if not ifoverlap(cb,cx+1,cy)then
|
||||||
P.cx=cx+1
|
P.cx=cx+1
|
||||||
freshgho()
|
freshgho()
|
||||||
P.lockDelay=gameEnv.lock
|
P.freshTime=P.freshTime+1
|
||||||
|
if P.freshTime<=gameEnv.freshLimit then
|
||||||
|
P.lockDelay=gameEnv.lock
|
||||||
|
end
|
||||||
if cy==y_img then SFX("move")end
|
if cy==y_img then SFX("move")end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
@@ -36,7 +42,9 @@ act={
|
|||||||
rotFlip=function()spin(2)end,
|
rotFlip=function()spin(2)end,
|
||||||
hold=hold,
|
hold=hold,
|
||||||
--Player movements
|
--Player movements
|
||||||
|
restart=function()
|
||||||
|
startGame(gamemode)
|
||||||
|
end,
|
||||||
down1=function()drop()end,
|
down1=function()drop()end,
|
||||||
down4=function()for i=1,4 do if cy~=y_img then drop()else break end end end,
|
down4=function()for i=1,4 do if cy~=y_img then drop()else break end end end,
|
||||||
toDown=function()P.cy,P.lockDelay=y_img,gameEnv.lock end,
|
toDown=function()P.cy,P.lockDelay=y_img,gameEnv.lock end,
|
||||||
|
|||||||
Reference in New Issue
Block a user