diff --git a/parts/language/dict_zh.lua b/parts/language/dict_zh.lua index dbc5ee6a..72f2b154 100644 --- a/parts/language/dict_zh.lua +++ b/parts/language/dict_zh.lua @@ -2,7 +2,7 @@ local HDsearch="https://harddrop.com/wiki?search=" local HDwiki="\t更多内容见HD wiki" return{ {"新人须知", - "xinren new noob readme", + "新人须知 xinren new noob readme", "help", "致想深入玩下去的新人:\n\t两大根本原则:\n\t\t1.选手感好的版本(Techmino/Tetr.io/Jstris/TOP/Tetr.js),别用编程练习渣版本\n\t\t2.踏实打好基础(预判next稳定消四等),别总想着炫酷T旋,对未来发展没好处\n\t两大主要技巧:\n\t\t1.熟悉初始位置以及到各个位置的初始操作\n\t\t2.提前计算好下一块能放哪\n(推荐阅读专栏)一位块圈dalao给新人的话\n\n[点击右下角按钮打开链接]", "https://bilibili.com/read/cv2352939", @@ -14,7 +14,7 @@ return{ "https://harddrop.com/wiki/Tetris_Wiki", }, {"灰机wiki", - "huiji wiki", + "灰机wiki huiji wiki", "help", "俄罗斯方块中文维基,由一群来自俄罗斯方块研究群及下属群的方块同好建立的关于俄罗斯方块的中文百科全书。\n当前大部分页面翻译和参考来自Harddrop wiki和Tetris Wiki", "https://tetris.huijiwiki.com", @@ -164,7 +164,7 @@ return{ "jj棋牌平台下一个休闲游戏,安卓百度“JJ比赛”官网下载平台后可以找到(找不到的话是你没在官网下载或者你是ios系统)。竖屏,输入延迟很小超流畅,可自定义das/arr/20G软降,简单自定义键位,无hold,没有b2b,无攻击缓冲不可抵消,每次攻击上限为4,连击较强,其他同现代方块", }, {"火拼俄罗斯", - "huopin qq", + "火拼俄罗斯 huopin qq", "game", "腾讯游戏大厅的方块,场地12列,打字的das和arr,1next,无hold,攻击途径只有 消4打3 消3打2,垃圾行为国际象棋棋盘式,几乎不可能挖掘", }, @@ -305,7 +305,7 @@ return{ "由于O方块旋转后形状不变,只能左右移动,所以经常被卡住,于是方块圈就有了ospin的梗:\n有人做过T99/TF中的O变形的特效视频且广为流传;\nT-ex设计的旋转系统可以用spin使O传送进坑;\nTech设计的变形系统中可以旋转O来变形/传送进入一些特定形状的洞。", }, {"踢墙", - "wallkick tiqiang", + "踢墙 wallkick tiqiang", "term", "(部分游戏中)方块旋转后系统可能会给方块施加的偏移,详见SRS词条", }, @@ -359,7 +359,7 @@ return{ --术语(其他) {"现代方块", - "modern xiandaikuai", + "现代方块 modern xiandaikuai", "term", "现代方块是一个模糊的概念,这里列出一部分\"标准\"规则,满足大部分的都可以认为是现代方块:\n1.可见场地大小是10*20,不过上方空间也是存在的,上限可以自己定,一些游戏用的是40\n2.七种方块从顶部正中间出现(奇数宽方块偏左,高度可以是方块底部或顶部贴着场地顶),同一种方块的朝向(一般是平的面朝下)和颜色都一致\n3.一个合适的随机出块机制(常见的详见bag7词条和his词条)\n4.一个合适的的旋转系统(至少有双旋,详见双旋词条)(比如SRS,详见SRS词条)\n5.一个合适的锁定延迟系统,详见锁定延迟词条\n6.一个合适的死亡判定,详见死亡判定词条\n7.有Next系统(一般是3~6个),详见Next词条,并且方向和出现时候的方向一致\n8.有Hold系统,详见Hold词条\n9.如果有出块延迟和消行延迟,那么需要有提前xx系统,详见IRS和IHS词条,IMS是本游戏特有\n10.有DAS系统负责精密并且快速的左右移动,详见DAS词条", }, @@ -409,7 +409,7 @@ return{ "捐赠\n指刻意临时盖住洞去做tspin等操作来实现不断b2b的一类技巧。", }, {"攻守", - "gong shou", + "攻守 gong shou", "term", "通过消除给对手发送垃圾行=攻击\n别人打过来攻击之后用攻击抵消=防御(相杀)\n抵消/吃下所有攻击后打出攻击=反击\n\n注:大多游戏的攻防是1:1的,4行攻击抵消对手的4行攻击", }, @@ -469,7 +469,7 @@ return{ "指左边6列右边3列的堆叠方式。在玩家有足够的计算能力后可以减少堆叠所用的按键数(反之可能甚至会增加),是主流的用于减少操作数的高端40L堆叠方式,原理跟出块位置是中间偏左有关。", }, {"连击", - "ren combo", + "连击 ren combo", "term", "从第二次消除起叫1ren/combo", }, @@ -479,17 +479,17 @@ return{ "现代方块的最高下落速度,表观就是方块瞬间到底,不存在中间的下落过程,会让方块无法跨越壕沟/从山谷爬出。", }, {"死亡判定", - "die death siwang", + "死亡判定 die death siwang", "term", "现代方块普遍使用的死亡判定:\n1.新出现的方块和场地方块有重叠(窒息)(c4w比s4w强的原因,因为被打进18行都不会窒息)\n2.方块锁定时完全在场地的外面\n3.所有东西的总高度超出40。\n\n注:本游戏使用的死亡判定不包含上述的第二条,并且第三条的40改成42", }, {"下落速度", - "drop speed", + "下落速度 drop speed", "term", "一般用?G表示方块的下落速度,意思是每一帧方块往下移动多少格子,一秒下落一格就是1/60G(默认60fps),故G是一个很大的单位,20G即为上限(因为场地就20格)。", }, {"锁定延迟", - "lock delay suoyan", + "锁定延迟 lock delay suoyan", "term", "方块<碰到地面→锁定>之间的时间。经典块仅方块下落一格时刷新倒计时,而现代方块中往往任何操作都将重置该倒计时,所以连续移动和操作可以让方块不马上锁定,拖一会时间(重置次数有限,一般是15)。", }, @@ -499,7 +499,7 @@ return{ "极简操作\n用最少的按键数将方块移到想去的位置的技术,节约时间和减少misdrop。练习可用jstris的极简错误重开或者techmino中打开极简错误提示,多玩就可以。\n\n注意,本游戏使用的极简判定系统不是说完全和理论最少操作数一样,而是不需要软降就能达到的位置才会按照标准出块方向和你的按键次数执行极简检测,故在此不像js存在软降后误杀。但是多了一些新的条件,比如【手上和hold一样/已经按了超过3次按键后】再hold后按键次数不重置(让下一块极简失误)。\n极简率计算:\n没有超过标准极简法操作数的为Perfect计100%,超出一步为Great计50%,超出两步为Bad计25%,两步以上为Miss计0%,其中Bad和Miss会断连\n\n注:20G下极简系统和0G一样工作,所以得到的数值不准确,参考价值偏低", }, {"科研", - "keyan", + "科研 keyan", "term", "常用语,指在低重力的单人模式里减速研究怎么做各种Tspin,本游戏中拓展了含义,用于称呼几乎需要全程spin的游戏模式。", }, @@ -554,22 +554,22 @@ return{ "左,右,下,左下,右下,左2,右2\n(任何方块的任何旋转都使用这个表)", }, {"堆叠", - "duidie stack", + "堆叠 duidie stack", "term", "将方块无缝隙地堆起来,需要玩家有预读next的能力,可以通过不使用hold并且用十个消四完成40行模式进行练习。\n这项能力从入坑到封神都是非常重要的。", }, {"双旋", - "shuangxuan", + "双旋 shuangxuan", "term", "指能够使用顺时针+逆时针两个旋转键的技术,原来要转三下的情况可以反向转一下就够,减少烦琐操作。\n同时双旋也是学习finesse的必要前提\n\n另见 三旋", }, {"三旋", - "sanxuan", + "三旋 sanxuan", "term", "指能够使用顺+逆时针+180度旋转三个旋转键的技术,任何方块放哪只需要旋转一次即可(spin不算)\n但由于只有部分游戏有180度旋转所以改操作并不通用,而且对速度提升的效果不如从单旋转双旋显著,不追求极限速度的玩家可不学", }, {"干旱", - "drought ganhan", + "干旱 drought ganhan", "term", "指长时间不来i方块(长条),但在现代方块使用的bag7出块规则下干旱几乎不可能,平均7块就会有一个i,理论极限两个i最远中间隔12块", }, @@ -579,7 +579,7 @@ return{ "一个游戏模式:\nMemoryless, Previewless, Holdless\n纯随机+无next+无hold,一个非常考验玩家反应速度的模式", }, {"输入延迟", - "input delay", + "输入延迟 input delay", "term", "用任何设备玩任何游戏时,所有的操作(按键盘,点鼠标等)都会晚一点点(很短,几毫秒到几十毫秒)到才达游戏,如果过长就会很影响游戏手感,作用效果类似于你拿qq远程控制打fps游戏\ntop、te等游戏比较明显\n这个延迟一般由硬件性能,硬件状态影响,通常来说不可设置,开启性能模式(或者关闭节能模式)可能会好一点", }, @@ -596,12 +596,12 @@ return{ --定式 {"开局定式", - "setup opening kaijudingshi", + "开局定式 setup opening kaijudingshi", "setup", "开局定式,定式一般指开局定式这个概念。\n指开局后可以使用的套路摆法。局中情况合适的时候也可以摆出同样的形状,但是和摆法开局一般都不一样。\n\n能称为定式的摆法要尽量满足以下至少2~3条:\n能适应大多数块序\n输出高,尽量不浪费T块\n很多方块无需软降,极简操作数少\n有明确后续,分支尽量少。\n\n注:绝大多数定式基于bag7,序列规律性强才有发明定式的可能。", }, {"DT炮", - "dt", + "dt炮", "setup", "Double-Triple Cannon"..HDwiki, HDsearch.."dt", @@ -613,7 +613,7 @@ return{ HDsearch.."dt", }, {"BT炮", - "bt", + "bt炮", "setup", "β炮(Beta炮)"..HDwiki, HDsearch.."bt_cannon", @@ -631,7 +631,7 @@ return{ HDsearch.."TKI_3_Perfect_Clear", }, {"QT炮", - "qt", + "qt炮", "setup", "QT炮,细节未知", }, @@ -642,7 +642,7 @@ return{ HDsearch.."mt", }, {"狼月炮", - "wolfmoon", + "狼月炮 wolfmoon", "setup", "狼月炮"..HDwiki, HDsearch.."wolfmoon_cannon", @@ -671,24 +671,24 @@ return{ HDsearch.."godspin", }, {"信天翁", - "xintianweng", + "信天翁 xintianweng", "setup", "一种高观赏性几乎不浪费T的快节奏强力T2-T3-T2-PC开局", }, {"鹈鹕", - "tihu", + "鹈鹕 tihu", "setup", "一种类似信天翁的定式,在块序不能信天翁的时候可以用", }, {"七巧板", - "qiqiaoban", + "七巧板 qiqiaoban", "setup", "一种极大概率能摆出来并且很大概率能做到PC的定式,本游戏中的pc练习中空出不规则区域的那个就是七巧板", }, --形状 {"中局定式", - "setup dingshi", + "中局定式 setup dingshi", "pattern", "指一些特定的能打出较高伤害的常见典型形状,是中局输出的途径之一,部分也可以在开局做不过不是很有必要,主要见于中局\n另见开局定式,只说定式两个字一般指开局定式而非中局。", }, @@ -717,58 +717,58 @@ return{ HDsearch.."st_stacking", }, {"汉堡包", - "hamburger hanbaobao", + "汉堡包 hamburger hanbaobao", "pattern", "一种边缘捐T不影响消四的堆叠法"..HDwiki, HDsearch.."hamburger", }, {"皇家十字", - "imperial cross huangjiashizi", + "皇家十字 imperial cross huangjiashizi", "pattern", "在一个十字形洞口盖屋檐后可以做两个T2的形状"..HDwiki, HDsearch.."imperial_cross", }, {"雨宫炮", - "yugong", + "雨宫炮 yugong", "pattern", "一种捐T2后可消四的形状,常见于DT的一个分支", }, {"千鸟格子", - "qianniaoge", + "千鸟格子 qianniaoge", "pattern", "一种在小洞上捐一个T2后还能做一个T2的形状", }, {"六巧板", - "liuqiaoban", + "六巧板 liuqiaoban", "pattern", "一种常用于增加中局PC概率的形状,本游戏中的pc练习中空出4*4方形区域就是六巧板", }, {"绯红之王", - "feihongzhiwang", + "绯红之王 feihongzhiwang", "pattern", "在STSD上叠若干个T3的形状", }, --其他 {"研究群", - "yanjiu study", + "研究群 yanjiu study", "other", "俄罗斯方块·[研究]群号112897780,“中国俄罗斯方块总群”", }, {"茶服", - "chafu study", + "茶服 chafu study", "other", "TO-S的添加方法、说明等关于茶服的一切", "http://121.4.147.128/tos", }, {"Github仓库", - "github sourcecode yuandaima", + "源代码 github sourcecode yuandaima", "other", "Techmino的github仓库地址,欢迎star", "https://github.com/26F-Studio/Techmino", }, {"小游戏", - "minigame xiaoyouxi", + "小游戏 minigame xiaoyouxi", "other", "输入以下词语,小游戏免费玩!\n\n15-Puzzle: 15p\nSchulte Grid: grid\nPong: pong\nAtoZ: atoz\nUltimate Tic-tac-toe: uttt\nCubefield: cube\n2048: 2048\nJust get ten: ten\nTapping speed test: tap\nDon't touch white: dtw", }, @@ -792,12 +792,12 @@ return{ --人物 {"吉备宏纯", - "hebomai hbm", + "吉备宏纯 hebomai hbm jibei", "name", "一流玩家(在最强大脑上以3:0击败模电)", }, {"雨宫太阳", - "amemiya taiyou yugong", + "雨宫太阳 amemiya taiyou yugong", "name", "一流玩家,曾获得PPT的swap模式冠军", }, @@ -873,7 +873,7 @@ return{ }, {"小Z", - "z xiaoz", + "小Z z xiaoz", "name", "这个百科的名字!曾经是群里的答疑机器人,此词典数据库也就是沿用了机器人问答库~", }, @@ -927,31 +927,31 @@ return{ "https://space.bilibili.com/226132", }, {"蕴空之灵", - "ykzl yunkongzhiling niao bird t196", + "蕴空之灵 ykzl yunkongzhiling niao bird t196", "name", "【研究群】「T196」\n40行33秒,top数据约50L90A\nvup,效率之光,不能吃辣\n常用定式:信天翁 tki3 开局pc", "https://space.bilibili.com/9964553", }, {"安樱奈莯", - "naki anyingnaimu youling gui t210", + "安樱奈莯 naki anyingnaimu youling gui t210", "name", "【研究群】「T210」\nvup,喜欢打块的幽灵,techmino配音之一", "https://space.bilibili.com/33212649", }, {"奏之章", - "zzz zouzhizhang t274", + "奏之章 zzz zouzhizhang t274", "name", "【研究群】「T274」\nzzzbot的作者,CN块圈人工智能技术发展重要人物之一", "https://space.bilibili.com/311039", }, {"吴淞昊", - "electric modian zhunbei t283", + "吴淞昊 electric modian zhunbei t283", "name", "【研究群】「T283」\n国内一流隐形方块玩家,上过最强大脑", "https://space.bilibili.com/17583394", }, {"他天一", - "tty tatianyi hydrofierus t512", + "他天一 tty tatianyi hydrofierus t512", "name", "【研究群】「T512」\n其他名称:Hydrofierus\n40行22.72秒,io段位X,top数据约60L100A\nC2/SRS对战水平国内一流\n常用定式:tki 开局pc", "https://space.bilibili.com/3895759", @@ -993,19 +993,19 @@ return{ "https://space.bilibili.com/471341780", }, {"思竣", - "sijun t942", + "思竣 sijun t942", "name", "【研究群】「T942」\n40行47.2秒,29TSD,全清挑战-疯狂25PC\n算力极强的思维型选手,不比速度的许多项目都是世界水平", "https://space.bilibili.com/403250559", }, {"琳雨空", - "linyukong t1505", + "琳雨空 linyukong t1505", "name", "【研究群】「T1505」\n40行38.3秒,五连块S,黑屏隐形S(世界首位)\n喜欢打日麻和吃咖喱", "https://space.bilibili.com/263909369", }, {"子心", - "koishi zixin t1934", + "子心 koishi zixin t1934", "name", "【研究群】「T1934」\nvup,T99国内一流战术型玩家", "https://space.bilibili.com/147529", @@ -1017,12 +1017,12 @@ return{ "https://space.bilibili.com/13014410", }, {"蓝绿", - "lanlv gompyn t3182", + "蓝绿 lanlv gompyn t3182", "name", "【研究群】「T3182」\n高技术力,喜欢催更", }, {"喵田弥夜", - "miya miaotianmiye mao t7023", + "喵田弥夜 miya miaotianmiye mao t7023", "name", "【研究群】「T7023」\nvup,喜欢打块的猫猫(Z酱单推),techmino配音之一", "https://space.bilibili.com/846180", diff --git a/parts/language/lang_en.lua b/parts/language/lang_en.lua index 43e604ee..c01c1b2c 100644 --- a/parts/language/lang_en.lua +++ b/parts/language/lang_en.lua @@ -509,7 +509,6 @@ return{ }, dict={ title="TetroDictionary", - keyboard="Keyboard", link="Open URL", up="↑", down="↓", diff --git a/parts/language/lang_fr.lua b/parts/language/lang_fr.lua index 9dd01c4b..abc743b7 100644 --- a/parts/language/lang_fr.lua +++ b/parts/language/lang_fr.lua @@ -469,7 +469,6 @@ return{ }, dict={ title="TetroDictionary", - keyboard="Clavier", link="Ouvrir URL", up="↑", down="↓", diff --git a/parts/language/lang_pt.lua b/parts/language/lang_pt.lua index c333945c..2c5772ab 100644 --- a/parts/language/lang_pt.lua +++ b/parts/language/lang_pt.lua @@ -509,7 +509,6 @@ return{ }, dict={ title="TetroDictionary", - keyboard="Teclado", link="Abrir URL", up="↑", down="↓", diff --git a/parts/language/lang_sp.lua b/parts/language/lang_sp.lua index 6521372a..64050274 100644 --- a/parts/language/lang_sp.lua +++ b/parts/language/lang_sp.lua @@ -472,7 +472,6 @@ return{ }, dict={ title="TetroDictionary", - keyboard="Teclado", link="Abrir URL", up="↑", down="↓", diff --git a/parts/language/lang_symbol.lua b/parts/language/lang_symbol.lua index 4f0e203b..b642c1d2 100644 --- a/parts/language/lang_symbol.lua +++ b/parts/language/lang_symbol.lua @@ -353,7 +353,6 @@ return{ }, dict={ title="TetroDictionary", - keyboard="[##]", link="~~e>>", up="↑", down="↓", diff --git a/parts/language/lang_zh.lua b/parts/language/lang_zh.lua index 41259fe2..89bb82c8 100644 --- a/parts/language/lang_zh.lua +++ b/parts/language/lang_zh.lua @@ -518,7 +518,6 @@ return{ }, dict={ title="小Z方块词典", - keyboard="键盘", link="打开链接", up="↑", down="↓", diff --git a/parts/scenes/dict.lua b/parts/scenes/dict.lua index 28a59a84..eaa7110d 100644 --- a/parts/scenes/dict.lua +++ b/parts/scenes/dict.lua @@ -3,15 +3,15 @@ local gc=love.graphics local int,abs=math.floor,math.abs local min,sin=math.min,math.sin local ins,rem=table.insert,table.remove -local find,sub=string.find,string.sub +local find=string.find local scene={} local dict--Dict list -local input--Input string local result--Result Lable local url +local lastTickInput local waiting--Searching animation timer local selected--Selected option local scrollPos--Scroll down length @@ -22,7 +22,7 @@ function scene.sceneInit() BG.set("rainbow") dict=require("parts/language/dict_"..({"zh","zh","zh","en","en","en","en","en"})[SETTING.lang]) - input="" + WIDGET.active.input:clear() result={} url=dict[1][5] @@ -35,7 +35,8 @@ end local function clearResult() for _=1,#result do rem(result)end - selected,scrollPos,waiting,lastSearch=1,0,0,false + selected,scrollPos=1,0 + waiting,lastSearch=0,false end local eggInput={ ["15p"]=goScene"mg_15p", @@ -77,6 +78,7 @@ local eggInput={ spring="sprfes", }for k,v in next,eggInput do if type(v)=="string"then eggInput[k]=eggInput[v]end end local function search() + local input=WIDGET.active.input.value if eggInput[input]then eggInput[input]() else @@ -91,7 +93,7 @@ local function search() ins(result,dict[i]) end end - if result[1]then + if #result>0 then SFX.play("reach") end url=(result[1]and result or dict)[selected][5] @@ -100,12 +102,7 @@ local function search() end function scene.keyDown(key) - if #key==1 then - if #input<15 then - input=input..key - waiting=.8 - end - elseif key=="up"then + if key=="up"then if selected and selected>1 then selected=selected-1 if selected0 then + if #WIDGET.active.input.value>0 then clearResult() - input="" + WIDGET.active.input:clear() SFX.play("hold") end elseif key=="backspace"then - input=sub(input,1,-2) - if #input==0 then - clearResult() - else - waiting=.8 - end + WIDGET.keyPressed("backspace") elseif key=="escape"then - if #input>0 then - clearResult() - input="" + if #WIDGET.active.input.value>0 then + scene.keyDown("delete") else SCN.back() end @@ -146,6 +137,15 @@ function scene.keyDown(key) end function scene.update(dt) + local input=WIDGET.active.input.value + if input~=lastTickInput then + if #input==0 then + clearResult() + else + waiting=.8 + end + lastTickInput=input + end if waiting>0 then waiting=waiting-dt if waiting<=0 then @@ -167,13 +167,6 @@ local typeColor={ name=COLOR.lPurple, } function scene.draw() - - gc.setLineWidth(4) - gc.setColor(1,1,1) - gc.rectangle("line",20,110,726,60) - setFont(40) - gc.print(input,35,110) - local list=result[1]and result or dict gc.setColor(1,1,1) local t=list[selected][4] @@ -206,6 +199,7 @@ function scene.draw() gc.print(item[1],30,y) end + gc.setLineWidth(4) gc.setColor(1,1,1) gc.rectangle("line",300,180,958,526) gc.rectangle("line",20,180,280,526) @@ -220,7 +214,7 @@ end scene.widgetList={ WIDGET.newText{name="title", x=20, y=5,font=70,align="L"}, - WIDGET.newKey{name="keyboard", x=960, y=60,w=200,h=80,font=35,code=function()love.keyboard.setTextInput(true,0,0,1,1)end,hide=not MOBILE}, + WIDGET.newInputBox{name="input",x=20, y=110,w=726,h=60,font=40}, WIDGET.newKey{name="link", x=1140, y=650,w=200,h=80,font=35,code=pressKey"link",hide=function()return not url end}, WIDGET.newKey{name="up", x=1190, y=440,w=100,h=100,font=35,code=pressKey"up",hide=not MOBILE}, WIDGET.newKey{name="down", x=1190, y=550,w=100,h=100,font=35,code=pressKey"down",hide=not MOBILE},