猫史档案馆


ScratchStudio出品:如何做出一个能够储存大量数据的短小精悍的保存码?

用户:一个STUB用户_6923702一个STUB用户_6923702查看:3 回复:6 评论:3 创建时间:2021-02-03T13:50:47


————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

众所周知

Scratch中只有两个可用云变量(防传播负面信息)

就只能通过保存码来加载存档

就算codemao可以创建很多云变量和云列表

但是存入的数据过长也不好弄

那么

我们就可以使用

[保存码]

Save Code

哇,那这玩意到底是个什么玩意呢?

我们看一个例子:

作品名:Undertale-Rejuvenation

作者:SOOTFOOT

(链接在官网上找不到了……)

center_image

 

center_image

Game Over后,你可以选择SAVE,便会显示保存码

center_image

第二次来的时候,输入保存码,就会加载你的内容

当然这样的例子还有很多

比如octupuss的ScratchingDawn(https://scratch.mit.edu/projects/339568183/)

我们都知道

UT的保存码

需要储存很多数据

我们把上面那个Ut-rjvntn试着分解一下需要保存的数据

(不代表作品本身方式)

-解锁章节数

-目前回合数

-Chara血量

-物品栏1是否空

-物品栏2是否空

-物品栏3是否空

-物品栏4是否空

-物品栏5是否空

-物品栏6是否空

-物品栏7是否空

-物品栏8是否空

-玩家目前方向(仁慈、喵)

如果要用0&1存储的话

那么就需要特别多位数!

那么我们该如何缩短长度呢?

这个时候肯定就有帅气英俊喵倜傥脑瓜灵光emotion_doge的观众说了

肯定是——

[进制转换]

number base conversion

啊!

我们可以把保存码看作一个二进制数!

这样把它转换成十进制,就可以缩短长度呢!!!!

那么我们来试试通过9位二进制数生成十进制的保存码吧。

示例:100111001

首先搞一个转换积木

center_image

接下来该怎么办呢?

当然是

 

233emotion_doge

真正的方法是:

[权相加法]

wolandefanyile

没错

!

我来给各位介绍下

比如将二进制的101转换为十进制

就是

1x2^2+0x2^1+1x2^0

其中颜色与上面的101相同的数字是从上面移下来的,而标棕色的则是几进制

(a^b=a的b次方)

那剩下的黑色数字是啥?

1x2后面的2,是它的排号

有点像反过来的Python列表

先从0开始每次+1加二进制数长度次

[0,0+1,0+1+1]

=[0,1,2]

再将它反过来

[2,1,0]

依次安放在每一组后边

1x2^2+0x2^1+1x2^0

这就是我们的方法

经过一些思考与演算

center_image

我们得出了这个积木

center_image

将变量[结果]增加后面一大条就是a×2^b

经过测试这玩意儿可行!

那么这教程帖就到此结束

 

 

 

 

 

 

 

了吗?

我还没有说怎么加载保存码呢!

该如何把2进制转回十进制?

且听下回分解!

 


回复

上一页1 页 / 共 1下一页
一个STUB用户_6923702一个STUB用户_6923702

顶顶

点赞0


评论


一个STUB用户_6923702一个STUB用户_6923702

顶顶

点赞0


评论


KazekaKazeka

咳咳,

点赞0


评论


InkyRainInkyRain

为什么要用十进制呢,用十六进制储存的数据多,转化得还快嘞

点赞1


评论


JSR代码喵JSR代码喵

ff

点赞0


评论


20酱吖awa20酱吖awa

??????????人傻了

点赞0


评论