新增小游戏:get10
This commit is contained in:
@@ -759,7 +759,7 @@ return{
|
|||||||
{"Minigame",
|
{"Minigame",
|
||||||
"minigame",
|
"minigame",
|
||||||
"other",
|
"other",
|
||||||
"Type the following codes in the search bar of this dictionary for some fun minigames!\n\n15-Puzzle: 15p\nSchulte Grid: sltg\nPong: pong\nAtoZ: atoz\nUltimate Tic-tac-toe: uttt\ncubefield: cbf\n2048: 2048",
|
"Type the following codes in the search bar of this dictionary for some fun minigames!\n\n15-Puzzle: 15p\nSchulte Grid: sltg\nPong: pong\nAtoZ: atoz\nUltimate Tic-tac-toe: uttt\ncubefield: cbf\n2048: 2048\nGet the ten: gtt",
|
||||||
},
|
},
|
||||||
|
|
||||||
--English
|
--English
|
||||||
|
|||||||
@@ -765,7 +765,7 @@ return{
|
|||||||
{"小游戏",
|
{"小游戏",
|
||||||
"minigame xiaoyouxi",
|
"minigame xiaoyouxi",
|
||||||
"other",
|
"other",
|
||||||
"输入以下词语,小游戏免费玩!\n\n15-Puzzle: 15p\nSchulte Grid: sltg\nPong: pong\nAtoZ: atoz\nUltimate Tic-tac-toe: uttt\ncubefield: cbf\n2048: 2048",
|
"输入以下词语,小游戏免费玩!\n\n15-Puzzle: 15p\nSchulte Grid: sltg\nPong: pong\nAtoZ: atoz\nUltimate Tic-tac-toe: uttt\ncubefield: cbf\n2048: 2048\nGet the ten: gtt",
|
||||||
},
|
},
|
||||||
|
|
||||||
--英文
|
--英文
|
||||||
|
|||||||
@@ -639,6 +639,10 @@ return{
|
|||||||
replay1="P",
|
replay1="P",
|
||||||
replay2="P",
|
replay2="P",
|
||||||
},
|
},
|
||||||
|
mg_get10={
|
||||||
|
reset="Reset",
|
||||||
|
blind="Blind",
|
||||||
|
},
|
||||||
savedata={
|
savedata={
|
||||||
exportUnlock="Export progress",
|
exportUnlock="Export progress",
|
||||||
exportData="Export statistics",
|
exportData="Export statistics",
|
||||||
|
|||||||
@@ -544,6 +544,16 @@ return{
|
|||||||
keyboard="Clavier",
|
keyboard="Clavier",
|
||||||
reset="Redémarrer",
|
reset="Redémarrer",
|
||||||
},
|
},
|
||||||
|
mg_2048={
|
||||||
|
reset="Réinitialiser",
|
||||||
|
blind="Aveugler",
|
||||||
|
-- tapControl="Tap control",
|
||||||
|
-- skip="Skip Round",
|
||||||
|
},
|
||||||
|
mg_get10={
|
||||||
|
reset="Réinitialiser",
|
||||||
|
blind="Aveugler",
|
||||||
|
},
|
||||||
help={
|
help={
|
||||||
manual="Manuel",
|
manual="Manuel",
|
||||||
dict="Little Z",
|
dict="Little Z",
|
||||||
|
|||||||
@@ -629,6 +629,16 @@ return{
|
|||||||
keyboard="Teclado",
|
keyboard="Teclado",
|
||||||
reset="Reiniciar",
|
reset="Reiniciar",
|
||||||
},
|
},
|
||||||
|
mg_2048={
|
||||||
|
reset="Resetar",
|
||||||
|
blind="Cego",
|
||||||
|
-- tapControl="Tap control",
|
||||||
|
-- skip="Skip Round",
|
||||||
|
},
|
||||||
|
mg_get10={
|
||||||
|
reset="Resetar",
|
||||||
|
blind="Cego",
|
||||||
|
},
|
||||||
savedata={
|
savedata={
|
||||||
exportUnlock="Exportar progresso",
|
exportUnlock="Exportar progresso",
|
||||||
exportData="Exportar estatística",
|
exportData="Exportar estatística",
|
||||||
|
|||||||
@@ -546,6 +546,16 @@ return{
|
|||||||
-- keyboard="Keyboard",
|
-- keyboard="Keyboard",
|
||||||
reset="Reiniciar",
|
reset="Reiniciar",
|
||||||
},
|
},
|
||||||
|
mg_2048={
|
||||||
|
reset="Reiniciar",
|
||||||
|
blind="A ciegas",
|
||||||
|
-- tapControl="Tap control",
|
||||||
|
-- skip="Skip Round",
|
||||||
|
},
|
||||||
|
mg_get10={
|
||||||
|
reset="Reiniciar",
|
||||||
|
blind="A ciegas",
|
||||||
|
},
|
||||||
savedata={
|
savedata={
|
||||||
-- exportUnlock="Export Unlock",
|
-- exportUnlock="Export Unlock",
|
||||||
-- exportData="Export Data",
|
-- exportData="Export Data",
|
||||||
|
|||||||
@@ -477,6 +477,16 @@ return{
|
|||||||
keyboard="[##]",
|
keyboard="[##]",
|
||||||
reset="R",
|
reset="R",
|
||||||
},
|
},
|
||||||
|
mg_2048={
|
||||||
|
reset="R",
|
||||||
|
blind="???",
|
||||||
|
tapControl="_↓",
|
||||||
|
skip=">>",
|
||||||
|
},
|
||||||
|
mg_get10={
|
||||||
|
reset="R",
|
||||||
|
blind="???",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
getTip=function()
|
getTip=function()
|
||||||
local L="!@#$%^&*()-=_+[]{}\\|;:\'\",<.>/?"
|
local L="!@#$%^&*()-=_+[]{}\\|;:\'\",<.>/?"
|
||||||
|
|||||||
@@ -641,6 +641,10 @@ return{
|
|||||||
replay1="P",
|
replay1="P",
|
||||||
replay2="P",
|
replay2="P",
|
||||||
},
|
},
|
||||||
|
mg_get10={
|
||||||
|
reset="重置",
|
||||||
|
blind="盲打",
|
||||||
|
},
|
||||||
savedata={
|
savedata={
|
||||||
exportUnlock="导出地图进度",
|
exportUnlock="导出地图进度",
|
||||||
exportData="导出统计数据",
|
exportData="导出统计数据",
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ local eggInput={
|
|||||||
uttt=goScene"mg_UTTT",
|
uttt=goScene"mg_UTTT",
|
||||||
cbf=goScene"mg_cubefield",
|
cbf=goScene"mg_cubefield",
|
||||||
["2048"]=goScene"mg_2048",
|
["2048"]=goScene"mg_2048",
|
||||||
|
gtt=goScene"mg_get10",
|
||||||
|
get10="gtt",
|
||||||
flag=function()
|
flag=function()
|
||||||
BG.setDefault("none")
|
BG.setDefault("none")
|
||||||
BGM.setDefault(false)
|
BGM.setDefault(false)
|
||||||
|
|||||||
252
parts/scenes/mg_get10.lua
Normal file
252
parts/scenes/mg_get10.lua
Normal file
@@ -0,0 +1,252 @@
|
|||||||
|
local gc=love.graphics
|
||||||
|
local setColor,rectangle=gc.setColor,gc.rectangle
|
||||||
|
|
||||||
|
local int,rnd=math.floor,math.random
|
||||||
|
local min=math.min
|
||||||
|
local format=string.format
|
||||||
|
local ins,rem=table.insert,table.remove
|
||||||
|
local mStr=mStr
|
||||||
|
|
||||||
|
local scene={}
|
||||||
|
|
||||||
|
local tileColor={
|
||||||
|
{.39, 1.0, .39},
|
||||||
|
{.39, .39, 1.0},
|
||||||
|
{1.0, .70, .31},
|
||||||
|
{.94, .31, .31},
|
||||||
|
{.00, .71, .12},
|
||||||
|
{.90, .20, .90},
|
||||||
|
{.94, .47, .39},
|
||||||
|
{.90, .00, .00},
|
||||||
|
{.86, .86, .31},
|
||||||
|
{.78, .31, .00},
|
||||||
|
{.78, .55, .04},
|
||||||
|
{.12, .12, .51},
|
||||||
|
{.78, .78, .78},
|
||||||
|
{.40, .40, .40},
|
||||||
|
{.20, .20, .20},
|
||||||
|
{.00, .00, .00},
|
||||||
|
}
|
||||||
|
local newTile={0,2,2,2,3,3,3,3,4,4,4,5,5}
|
||||||
|
|
||||||
|
local board,cx,cy
|
||||||
|
local startTime,time
|
||||||
|
local maxTile,state
|
||||||
|
local fallingTimer
|
||||||
|
local score
|
||||||
|
|
||||||
|
local blind
|
||||||
|
|
||||||
|
local function reset()
|
||||||
|
state=0
|
||||||
|
score=0
|
||||||
|
time=0
|
||||||
|
maxTile=2
|
||||||
|
for i=1,5 do for j=1,5 do
|
||||||
|
board[i][j]=rnd(2)
|
||||||
|
end end
|
||||||
|
board[rnd(5)][rnd(5)]=2
|
||||||
|
fallingTimer=false
|
||||||
|
end
|
||||||
|
function scene.sceneInit()
|
||||||
|
BG.set("rainbow2")
|
||||||
|
BGM.play("truth")
|
||||||
|
board={{},{},{},{},{}}
|
||||||
|
cx,cy=3,3
|
||||||
|
startTime=0
|
||||||
|
time=0
|
||||||
|
score=0
|
||||||
|
state=2
|
||||||
|
|
||||||
|
blind=false
|
||||||
|
for i=1,5 do for j=1,5 do
|
||||||
|
board[i][j]=(i+j)%2+1
|
||||||
|
end end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function merge()
|
||||||
|
if fallingTimer or state==2 or not cx then return end
|
||||||
|
if state==0 then
|
||||||
|
state=1
|
||||||
|
startTime=TIME()
|
||||||
|
end
|
||||||
|
local chosen=board[cy][cx]
|
||||||
|
local connected={{cy,cx}}
|
||||||
|
local count=1
|
||||||
|
repeat
|
||||||
|
local y,x=unpack(rem(connected))
|
||||||
|
if board[y][x]~=0 then
|
||||||
|
board[y][x]=0
|
||||||
|
SYSFX.newShade(2,320+x*128-128,40+y*128-128,128,128)
|
||||||
|
if x>1 and board[y][x-1]==chosen then ins(connected,{y,x-1})count=count+1 end
|
||||||
|
if x<5 and board[y][x+1]==chosen then ins(connected,{y,x+1})count=count+1 end
|
||||||
|
if y>1 and board[y-1][x]==chosen then ins(connected,{y-1,x})count=count+1 end
|
||||||
|
if y<5 and board[y+1][x]==chosen then ins(connected,{y+1,x})count=count+1 end
|
||||||
|
end
|
||||||
|
until not connected[1]
|
||||||
|
if count>1 then
|
||||||
|
board[cy][cx]=chosen+1
|
||||||
|
local getScore=3^(chosen-1)*min(int(1+count/3),4)
|
||||||
|
score=score+getScore
|
||||||
|
TEXT.show(getScore,cx*128+256,cy*128-40,40,"score")
|
||||||
|
SYSFX.newRectRipple(2,320+cx*128-128,40+cy*128-128,128,128)
|
||||||
|
SFX.play("lock")
|
||||||
|
if chosen==maxTile then
|
||||||
|
maxTile=chosen+1
|
||||||
|
SFX.play("reach")
|
||||||
|
end
|
||||||
|
if chosen>=5 then
|
||||||
|
SFX.play(
|
||||||
|
chosen>=9 and"ren_mega"or
|
||||||
|
chosen>=8 and"spin_3"or
|
||||||
|
chosen>=7 and"spin_2"or
|
||||||
|
chosen>=6 and"spin_1"or
|
||||||
|
"spin_0"
|
||||||
|
)
|
||||||
|
end
|
||||||
|
fallingTimer=15
|
||||||
|
else
|
||||||
|
board[cy][cx]=chosen
|
||||||
|
end
|
||||||
|
end
|
||||||
|
function scene.keyDown(key)
|
||||||
|
if key=="up"or key=="down"or key=="left"or key=="right"then
|
||||||
|
if state==2 then return end
|
||||||
|
if not cx then
|
||||||
|
cx,cy=3,3
|
||||||
|
else
|
||||||
|
if key=="up"then
|
||||||
|
if cy>1 then cy=cy-1 end
|
||||||
|
elseif key=="down"then
|
||||||
|
if cy<5 then cy=cy+1 end
|
||||||
|
elseif key=="left"then
|
||||||
|
if cx>1 then cx=cx-1 end
|
||||||
|
elseif key=="right"then
|
||||||
|
if cx<5 then cx=cx+1 end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
elseif key=="z"or key=="space"then
|
||||||
|
merge()
|
||||||
|
elseif key=="r"then
|
||||||
|
reset()
|
||||||
|
elseif key=="q"then
|
||||||
|
if state==0 then
|
||||||
|
blind=not blind
|
||||||
|
end
|
||||||
|
elseif key=="escape"then
|
||||||
|
SCN.back()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
function scene.mouseMove(x,y)
|
||||||
|
cx=int((x-192)/128)
|
||||||
|
cy=int((y+88)/128)
|
||||||
|
if cx<1 or cx>5 or cy<1 or cy>5 then cx,cy=false end
|
||||||
|
end
|
||||||
|
function scene.mouseDown(x,y)
|
||||||
|
scene.mouseMove(x,y)
|
||||||
|
merge()
|
||||||
|
end
|
||||||
|
|
||||||
|
function scene.touchDown(_,x,y)
|
||||||
|
scene.mouseMove(x,y)
|
||||||
|
end
|
||||||
|
function scene.touchMove(_,x,y)
|
||||||
|
scene.mouseMove(x,y)
|
||||||
|
end
|
||||||
|
function scene.touchClick(_,x,y)
|
||||||
|
scene.mouseDown(x,y)
|
||||||
|
end
|
||||||
|
|
||||||
|
function scene.update()
|
||||||
|
if state==1 then
|
||||||
|
time=TIME()-startTime
|
||||||
|
if fallingTimer then
|
||||||
|
fallingTimer=fallingTimer-1
|
||||||
|
if fallingTimer==0 then
|
||||||
|
for i=5,2,-1 do
|
||||||
|
for j=1,5 do
|
||||||
|
if board[i][j]==0 then
|
||||||
|
board[i][j]=board[i-1][j]
|
||||||
|
board[i-1][j]=0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local noNewTile=true
|
||||||
|
for i=1,5 do
|
||||||
|
if board[1][i]==0 then
|
||||||
|
board[1][i]=rnd(newTile[maxTile])
|
||||||
|
noNewTile=false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if noNewTile then
|
||||||
|
fallingTimer=false
|
||||||
|
for i=1,4 do
|
||||||
|
for j=1,4 do
|
||||||
|
if board[i][j]==board[i+1][j]or board[i][j]==board[i][j+1]then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
state=2
|
||||||
|
SFX.play("fail")
|
||||||
|
else
|
||||||
|
fallingTimer=6
|
||||||
|
SFX.play("move")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function scene.draw()
|
||||||
|
setFont(40)
|
||||||
|
setColor(1,1,1)
|
||||||
|
gc.print(format("%.3f",time),1026,50)
|
||||||
|
gc.print(score,1026,100)
|
||||||
|
|
||||||
|
if state==2 then
|
||||||
|
--Draw no-setting area
|
||||||
|
setColor(1,0,0,.3)
|
||||||
|
gc.rectangle("fill",15,295,285,70)
|
||||||
|
end
|
||||||
|
gc.setLineWidth(10)
|
||||||
|
setColor(1,1,1)
|
||||||
|
gc.rectangle("line",315,35,650,650)
|
||||||
|
|
||||||
|
gc.setLineWidth(4)
|
||||||
|
setFont(70)
|
||||||
|
for i=1,5 do
|
||||||
|
for j=1,5 do
|
||||||
|
local N=board[i][j]
|
||||||
|
if N>0 then
|
||||||
|
if blind and state==1 and N>newTile[maxTile]then
|
||||||
|
setColor(COLOR.dGrey)
|
||||||
|
rectangle("fill",320+j*128-128,40+i*128-128,128,128)
|
||||||
|
setColor(1,1,1,.3)
|
||||||
|
mStr("?",j*128+256,i*128-75)
|
||||||
|
else
|
||||||
|
setColor(tileColor[N])
|
||||||
|
rectangle("fill",320+j*128-128,40+i*128-128,128,128)
|
||||||
|
setColor(1,1,1,.9)
|
||||||
|
mStr(N,j*128+256,i*128-75)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if state<2 and cx then
|
||||||
|
setColor(1,1,1,.6)
|
||||||
|
gc.setLineWidth(10)
|
||||||
|
gc.rectangle("line",325+cx*128-128,45+cy*128-128,118,118)
|
||||||
|
end
|
||||||
|
setFont(50)
|
||||||
|
setColor(1,1,1)
|
||||||
|
mStr("Just Get 10",160,580)
|
||||||
|
end
|
||||||
|
|
||||||
|
scene.widgetList={
|
||||||
|
WIDGET.newButton{name="reset", x=160,y=100,w=180,h=100,color="lGreen",font=40,code=pressKey"r"},
|
||||||
|
WIDGET.newSwitch{name="blind", x=240,y=330,w=60,font=40,disp=function()return blind end,code=pressKey"q",hide=function()return state==1 end},
|
||||||
|
WIDGET.newButton{name="back", x=1140,y=640,w=170,h=80,font=40,code=backScene},
|
||||||
|
}
|
||||||
|
|
||||||
|
return scene
|
||||||
Reference in New Issue
Block a user