From fbd435a018e8a772c4d52c06d8685333d5e608c5 Mon Sep 17 00:00:00 2001 From: MrZ626 <1046101471@qq.com> Date: Wed, 10 Feb 2021 19:20:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B0=8F=E6=B8=B8=E6=88=8F?= =?UTF-8?q?=EF=BC=9Aget10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- parts/language/dict_en.lua | 2 +- parts/language/dict_zh.lua | 2 +- parts/language/lang_en.lua | 4 + parts/language/lang_fr.lua | 10 ++ parts/language/lang_pt.lua | 10 ++ parts/language/lang_sp.lua | 10 ++ parts/language/lang_symbol.lua | 10 ++ parts/language/lang_zh.lua | 4 + parts/scenes/dict.lua | 2 + parts/scenes/mg_get10.lua | 252 +++++++++++++++++++++++++++++++++ 10 files changed, 304 insertions(+), 2 deletions(-) create mode 100644 parts/scenes/mg_get10.lua diff --git a/parts/language/dict_en.lua b/parts/language/dict_en.lua index 5761ac38..4c8edb38 100644 --- a/parts/language/dict_en.lua +++ b/parts/language/dict_en.lua @@ -759,7 +759,7 @@ return{ {"Minigame", "minigame", "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 diff --git a/parts/language/dict_zh.lua b/parts/language/dict_zh.lua index 5339e852..b82e2f33 100644 --- a/parts/language/dict_zh.lua +++ b/parts/language/dict_zh.lua @@ -765,7 +765,7 @@ return{ {"小游戏", "minigame xiaoyouxi", "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", }, --英文 diff --git a/parts/language/lang_en.lua b/parts/language/lang_en.lua index 63d86080..60f9fb80 100644 --- a/parts/language/lang_en.lua +++ b/parts/language/lang_en.lua @@ -639,6 +639,10 @@ return{ replay1="P", replay2="P", }, + mg_get10={ + reset="Reset", + blind="Blind", + }, savedata={ exportUnlock="Export progress", exportData="Export statistics", diff --git a/parts/language/lang_fr.lua b/parts/language/lang_fr.lua index 07c6f87a..130525c5 100644 --- a/parts/language/lang_fr.lua +++ b/parts/language/lang_fr.lua @@ -544,6 +544,16 @@ return{ keyboard="Clavier", reset="Redémarrer", }, + mg_2048={ + reset="Réinitialiser", + blind="Aveugler", + -- tapControl="Tap control", + -- skip="Skip Round", + }, + mg_get10={ + reset="Réinitialiser", + blind="Aveugler", + }, help={ manual="Manuel", dict="Little Z", diff --git a/parts/language/lang_pt.lua b/parts/language/lang_pt.lua index 7807939b..ae697a38 100644 --- a/parts/language/lang_pt.lua +++ b/parts/language/lang_pt.lua @@ -629,6 +629,16 @@ return{ keyboard="Teclado", reset="Reiniciar", }, + mg_2048={ + reset="Resetar", + blind="Cego", + -- tapControl="Tap control", + -- skip="Skip Round", + }, + mg_get10={ + reset="Resetar", + blind="Cego", + }, savedata={ exportUnlock="Exportar progresso", exportData="Exportar estatística", diff --git a/parts/language/lang_sp.lua b/parts/language/lang_sp.lua index 5c8d11c9..080da8fe 100644 --- a/parts/language/lang_sp.lua +++ b/parts/language/lang_sp.lua @@ -546,6 +546,16 @@ return{ -- keyboard="Keyboard", reset="Reiniciar", }, + mg_2048={ + reset="Reiniciar", + blind="A ciegas", + -- tapControl="Tap control", + -- skip="Skip Round", + }, + mg_get10={ + reset="Reiniciar", + blind="A ciegas", + }, savedata={ -- exportUnlock="Export Unlock", -- exportData="Export Data", diff --git a/parts/language/lang_symbol.lua b/parts/language/lang_symbol.lua index 1a9cbc14..3b587049 100644 --- a/parts/language/lang_symbol.lua +++ b/parts/language/lang_symbol.lua @@ -477,6 +477,16 @@ return{ keyboard="[##]", reset="R", }, + mg_2048={ + reset="R", + blind="???", + tapControl="_↓", + skip=">>", + }, + mg_get10={ + reset="R", + blind="???", + }, }, getTip=function() local L="!@#$%^&*()-=_+[]{}\\|;:\'\",<.>/?" diff --git a/parts/language/lang_zh.lua b/parts/language/lang_zh.lua index c304c32f..51acb693 100644 --- a/parts/language/lang_zh.lua +++ b/parts/language/lang_zh.lua @@ -641,6 +641,10 @@ return{ replay1="P", replay2="P", }, + mg_get10={ + reset="重置", + blind="盲打", + }, savedata={ exportUnlock="导出地图进度", exportData="导出统计数据", diff --git a/parts/scenes/dict.lua b/parts/scenes/dict.lua index e1392d13..816f2ce7 100644 --- a/parts/scenes/dict.lua +++ b/parts/scenes/dict.lua @@ -45,6 +45,8 @@ local eggInput={ uttt=goScene"mg_UTTT", cbf=goScene"mg_cubefield", ["2048"]=goScene"mg_2048", + gtt=goScene"mg_get10", + get10="gtt", flag=function() BG.setDefault("none") BGM.setDefault(false) diff --git a/parts/scenes/mg_get10.lua b/parts/scenes/mg_get10.lua new file mode 100644 index 00000000..8f1be430 --- /dev/null +++ b/parts/scenes/mg_get10.lua @@ -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 \ No newline at end of file