分享发现 [新玩具] 输入式完美密码锁,上线!

anletian · 2017年03月29日 · 最后由 HEE 回复于 2019年05月21日 · 2173 次阅读
本帖已被设为精华帖!

那一天,人类终于回想起了曾一度被密码锁所支配的恐怖和被囚禁于鸟笼中的那份屈辱

曾经这只是一个构想与概念……

有人曾说……这是无法实现的……因为超越了目前工具极限……但是工具的极限是什么?

如今这个科技在我对代码的了解越来深入了解后,正式上线!

PS:这是早上写了个草稿,中午前写完的程序

不要9880元,只要998!只要998!超级密码锁带回家!

如果一个密码锁能显示输入的数字,能删除你输入的数字,能重置你的数字,那么在一个游戏中,你们会怎么想???

好了不废话,我丢模型了。密码:0790(你没看错,这一代密码可以重复!)

http://www.iwzyx.com/chapters/543

需要教程吗?算了设计那么累~我才不想讲呢╭(╯^╰)╮

虽然我尽量精简着字数,但是还是不争气的给我到达了2200字……

我在想……以后是不是5个密码柜就能做个app了,名字叫做《我是锁王》,密码不同还能取名《我是锁王2》《画江湖之锁王》《锁王荣耀》《全民锁王》《天天锁王》《锁物语》《锁王的野望》《我的锁王能不能这么可爱》《传说中的锁王传说》《总而言之传说中的锁王传说》《东京锁王》《进击的锁王》等……

不过,写这个app先感谢呆萌娘@admin,做了最后的测试,找到了我写代码中一个致命错误,怎么致命呢?致命到玩家可以一键通关了(玩家:咋回事?我skip怎么这么远?),后续我将全面检查我的程序。然后还有@无限流派(我咋总艾特不出来蓝色?),先提供的加减乘除四则运算的可行性,于是我在思考这些数据是否能够相互之间等代化,测试了一下,发现成功了,于是按照这个思路做了这个锁。

然后是代码区:

[重置输入]

<:MD.a=-1

<:MD.b=-1

<:MD.c=-1

<:MD.d=-1

<:MD.input=0

<:MD.codecount=0

[0输入显示]
[|]
密码:_ _ _ _
[键盘输入区]
[|]
(b)1(/b) (b)2(/b) (b)3(/b) 
(b)4(/b) (b)5(/b) (b)6(/b)
(b)7(/b) (b)8(/b) (b)9(/b)
(b)10(/b) 
(b)11(/b) (b)12(/b) (b)13(/b)
选:1
选:2
选:3
选:4
选:5
选:6
选:7
选:8
选:9
选:0
选:删除输入
<: if (!MD.codecount) curBtn = null;
选:重置输入
选:确认输入

[1]

<:MD.input=1

=:MD.codecount += 1

跳:输出显示判断区
[2]

<:MD.input=2

=:MD.codecount += 1

跳:输出显示判断区
[3]

<:MD.input=3

=:MD.codecount += 1

跳:输出显示判断区
[4]

<:MD.input=4

=:MD.codecount += 1

跳:输出显示判断区
[5]

<:MD.input=5

=:MD.codecount += 1

跳:输出显示判断区
[6]

<:MD.input=6

=:MD.codecount += 1

跳:输出显示判断区
[7]

<:MD.input=7

=:MD.codecount += 1

跳:输出显示判断区
[8]

<:MD.input=8

=:MD.codecount += 1

跳:输出显示判断区
[9]

<:MD.input=9

=:MD.codecount += 1

跳:输出显示判断区
[0]

<:MD.input=0

=:MD.codecount += 1

跳:输出显示判断区

[删除输入]

=:MD.codecount -= 1

跳:删除后显示判断
[删除后显示判断]

=: if(MD.codecount == 0) game_jumpto("重置输入") 

=: if(MD.codecount == 1) game_jumpto("第一位密码显示") 

=: if(MD.codecount == 2) game_jumpto("第二位密码显示") 

=: if(MD.codecount == 3) game_jumpto("第三位密码显示") 



[输出显示判断区]

=: if(MD.codecount == 1) game_jumpto("第一位密码赋值") 

=: if(MD.codecount == 2) game_jumpto("第二位密码赋值") 

=: if(MD.codecount == 3) game_jumpto("第三位密码赋值") 

=: if(MD.codecount == 4) game_jumpto("第四位密码赋值") 

=: if(MD.codecount > 4) game_jumpto("第四位密码显示") 

[第一位密码赋值]

<:MD.a=MD.input

跳:第一位密码显示
[第一位密码显示]
[|]
密码:<u>(j)MD.a(/j)</u> _ _ _

跳:输入数字归零位
[第二位密码赋值]

=:MD.b=MD.input

[第二位密码显示]
[|]
密码:<u>(j)MD.a(/j)</u> <u>(j)MD.b(/j)</u> _ _

跳:输入数字归零位
[第三位密码赋值]

=:MD.c=MD.input

[第三位密码显示]
[|]
密码:<u>(j)MD.a(/j)</u> <u>(j)MD.b(/j)</u> <u>(j)MD.c(/j)</u> _

跳:输入数字归零位

[第四位密码赋值]

=:MD.d=MD.input

[第四位密码显示]
[|]
密码:<u>(j)MD.a(/j)</u> <u>(j)MD.b(/j)</u> <u>(j)MD.c(/j)</u> <u>(j)MD.d(/j)</u>

<:MD.codecount=4

跳:输入数字归零位

[输入数字归零位]

=:MD.input=0

跳:键盘输入区

[确认输入]

=: if(MD.a == 0 && MD.b == 7 && MD.c == 9 && MD.d == 0) game_jumpto("密码成功解锁显示区") 

跳:密码破解失败显示区

[密码成功解锁显示区]
[|]
解锁成功!

成功:这不是锁的终点,下一科技阶段:动态密码柜!只有看着口令牌才能解锁!否则想都别想!
[密码破解失败显示区]
[|]
输入错误!请重新输入

跳:重置输入

不想开教程急着用的童鞋们,我告诉你们一个立刻改锁密码的方法:

看到这些代码后,

=: if(MD.a == 0) game_jumpto("第二位解锁验证")
=: if(MD.b == 7) game_jumpto("第三位解锁验证")
=: if(MD.c == 9) game_jumpto("第四位解锁验证")
=: if(MD.d == 0) game_jumpto("密码成功解锁显示区") 

把a b c d 后面的0790,按照你想要的顺序,改成你想要的数字就行了

成功的提示词,嗯,也许是我下一步的狂想。不过我有段时间不会去玩锁了,锁对我来说,就是个小玩具

现在酷跑模型已经研究出来了,就是说RPG走路地图等于出来了!颤抖吧渣渣们!

然后我说个事故

开头你们看到为什么我对a b c d赋值都是负数,原因来自一个之前的理解错误:

=: if(MD.a == 0) 
=: if(MD.b == 7) 
=: if(MD.c == 9) 
=: if(MD.d == 0 ) game_jumpto("成功") ; else game_jumpto("失败")

之前我的代码是这么写的,结果呆萌娘按了一个数字点输入,锁开了……

最怕空气突然的安静

几次测试后,终于发现了这个猫腻,曾经以为这段代码书写是可用性的,这样就能产生多段赋值判断一个条件,结果失败了……

于是我先是吧abcd改成-1,直到后来我才知道:

系统只会按照最后一个条件判断成功,(如果有谁发现多赋值同时满足要求能够判定一个条件成立的书写方法请告诉我)而d一开始设置的是为0!

随便点一个什么数字,锁就开了!开了! 只要d=0就开了!简直是日了个哈士奇

当时被我放阿尔法科技馆又被我搬了出来,进行检修

讲解篇:

下面我来说说这个锁如何运作的,说完你们就能改成5位密码锁,6位密码锁,8位密码锁,你要几位就几位密码锁~

首先我们来看看赋值们,因为他们是通篇的线索,整个程序运行都是以数字来运转的:

<:MD.a=-1 (这个是第一位输入的密码) <:MD.b=-1 (这个是第二位输入的密码) <:MD.c=-1 (这个是第N三位输入的密码) <:MD.d=-1 (这个是第N+1四位输入的密码)

注:如果你要改成其他位数的密码锁,在这里加上新赋值,<:MD.e=-1 <:MD.f=-1 g 什么的你把赋值命名为<:MD.first blood、double kill、triple kill、quatary kill、penta kill、God Like、legendary=-1我也不管你

<:MD.input=0 这个是用于键盘上输入后的一个数字

<:MD.codecount=0

判断你输入的是第几位,然后把input的值等价为你输入的第几位密码

每次输入完后,input会被赋予一个你输入的值,并且codecount+1,然后在[输出显示判断区]内判断是第几个 如下面的这段

[输出显示判断区]

=: if(MD.codecount == 1) game_jumpto("第一位密码赋值") 

=: if(MD.codecount == 2) game_jumpto("第二位密码赋值") 

=: if(MD.codecount == 3) game_jumpto("第三位密码赋值") 

=: if(MD.codecount == 4) game_jumpto("第四位密码赋值") 

=: if(MD.codecount > 4) game_jumpto("第四位密码显示") 

因为这个锁只有4位,所以当输入codecount大于4时,程序判定跳入[第四位密码显示],并且在这个区域内有段代码<:MD.codecount=4让输入个数锁定在4,以免发生什么其他错误,如果改6位,则在区域内判断条件增加到codecount=6,即:

=: if(MD.codecount == 5) game_jumpto("第五位密码赋值")

=: if(MD.codecount == 6) game_jumpto("第六位密码赋值")

=: if(MD.codecount > 6) game_jumpto("第六位密码显示")

下面的显示也要对应的修改增加,记得把[第四位密码显示]内<:MD.codecount=4改为<:MD.codecount=6并且移动到[第六位密码显示]

显示部分:

[第一位密码赋值]

<:MD.a=MD.input

跳:第一位密码显示
[第一位密码显示]
[|]
密码:<u>(j)MD.a(/j)</u> _ _ _

跳:输入数字归零位
[第二位密码赋值]

=:MD.b=MD.input

[第二位密码显示]
[|]
密码:<u>(j)MD.a(/j)</u> <u>(j)MD.b(/j)</u> _ _

跳:输入数字归零位
[第三位密码赋值]

=:MD.c=MD.input

[第三位密码显示]
[|]
密码:<u>(j)MD.a(/j)</u> <u>(j)MD.b(/j)</u> <u>(j)MD.c(/j)</u> _

跳:输入数字归零位

[第四位密码赋值]

=:MD.d=MD.input

[第四位密码显示]
[|]
密码:<u>(j)MD.a(/j)</u> <u>(j)MD.b(/j)</u> <u>(j)MD.c(/j)</u> <u>(j)MD.d(/j)</u>

<:MD.codecount=4

这里是显示区域,每次都会增加个密码显示即:<u>(j)MD.密码位数名称(/j)</u>,外框表示下划线,(j)MD.密码位数名称(/j)如果看过前面数值显示的话,不难理解吧?就是显示名称为XX的数值

按照上面的思路对显示区域相应的增加位数,6位的话密码:_ _ _ _ _ _

因为怕赋值错误,所以我采用现将判断后的input数字带入[密码赋值]这个区域,然后赋值区会顺势向下,产生对于的显示……

真无聊的课,我自己都快睡着了

最后将一点:

[输入数字归零位]

=:MD.input=0

跳:键盘输入区

这个区域的存在是防止下一项密码输入后和上一个密码重复,虽然有点鸡肋,但是我觉得保险起见还是加了。

不行了,我自己讲的太困了,我要下课睡一会儿

好了,目前这个是个模型,可以开放性的加入很多,还有什么不会的,或者发现bug可以留言问我,至于制作6位密码锁嘛……

别找我,我要睡觉

反正也只是改改,以后再说吧

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 留个老锁的地址:http://bbs.iwzyx.com/topics/75

共收到 8 条回复

讲解篇完了再给我加精

未来计划是,当阿尔法科技馆的科技展出数量到达10,我开个阿尔法科技馆的理事大厅帖,目的: 1.整理阿尔法科技馆的科技帖和链接 2.开设一个类似万事屋、委托制作屋的地方。接点比较有想法的委托,不过收点代价(一张绘画,一段BGM,一段文案设计之类的) 3.凑数凑数,暂时没想出来还是凑数

#2楼 @anletian 跪倒在大大脚底下,请问可以合作吗?

#3楼 @田平 西奥林系列需要什么黑科技吗?也许我可以实现我的键盘愿为您效劳

不管那么多总之先夸夸夸!!前几天还在和几个基友讨论密码该怎么搞今天就有干货了喜极而泣!(总之就是被大大救了一命啊某种意义上xx)关注关注x

#4楼 @anletian 密码锁(雪人脸)感谢大大

#6楼 @田平 有啥要求私戳我吧

8楼 已删除

为什么我显示不出来密码显示

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册