用户:小鱼yuzifu查看:4197 回复:107 评论:70 创建时间:2021-07-30T15:10:59
| Hi,everyone.小鱼又回来啦!!!快快欢迎!
开始教程前先放上两张对比图

论美观程度和与自身UI适应程度来说的话,哪个更好看点?第二个!
再来一个!

论从小到大来排序来说的话,哪个更直观方便点?第二个!
你甚至可以在结算页面显示你的排名和在你前后两人的成绩!

怎么样?是不是技术力超高!(屑玩意技术超低)其实我这种自制排行榜基本大部分人可以轻松看懂,尤其对于一些萌新。用上后自己的作品质量将会更上一层楼!
所以现在让我们开始自制排行榜的制作教程吧!(这期教程我们将使用云列表制作)
先让我们构思下,一个排行榜在显示排名时将要经历哪些流程?

大概就这些(可能有部分错误,可指出),那我的排行榜运行大概也就是这种模式。
准备:一个云列表(存放所有人数据),一个私有云变量(用于同步个人数据和个人排行榜数据),n个列表(用于处理从云列表上下来的数据,并在里面生成最终的排行榜排名),m个变量(用于辅助列表进行排序),一个角色(废话!)
在我的自制排行榜内这种流程大概分5步(初始化列表——>从云列表喵解数据存放到两个列表——>删除列表内重复数据——>对剩下的列表数据排序——>打印列表内最终数据),概括为删除、分解、防重复、排序、打印
1.删除
删除在这就是初始化的意思,因为云列表的数据会变,所以更新数据时会不初始化会导致严重的数据重复,甚至程序崩溃!
这里删除的都是我们等会要用到的列表,大家可以按着图上来看看要创建哪些列表

2. 分解
这个分解相信大家也知道该怎么分解,就是重复执行云列表的长度,运用两个变量,一个遍历云列表的每一项,另一个从后往前遍历每一项中的特殊符号的位置(特殊符号是分隔用户名和成绩的一个符号,想用什么都行,但要保持所有列表中特殊符号一致)并将名字和分数拆解到两个不同的列表方便后续调用。

3. 防重复
由于网络问题,数据在上传时可能会重复上传(原因:云列表数据未初始化完全,导致程序以为个人数据不存在,从而重复上传),从而导致在打印时会出现两个相同的用户名占了两个排名。
这肯定是不能存在的,所以这里将名字列表里相同的名字删除至一个,分数列表中相同位置的数据同时删除,再进行下一步处理

4. 排序
排序可以说是积木用的最多的(不算上打印),这里使用的方法是重复执行分数列表的长度,一遍遍获取当前分数列表中最大或最小的分值,轮完一遍后将最终数值放入另一个列表(这里叫重排序分数)末尾,对应名字也放入另一个列表(这里叫重排序名字),重复下来最终你会获得一个排好序的两个列表(这里事实上已经可以当一个排行榜使用了)(两个储存列表到后面是有用的)

ps:这里下面有小鱼曾经使用的排序方式,可以看看下面的跟上面的劣势是什么(推荐用上面那个)

5. 打印
wow,恭喜你已经制作好了一个排行榜!现在我们来看看可以调用的方式吧!

加上这个可以获取自己的排名和数据(name指自己的用户名)

用这个可以实现显示你的排名和在你前后两人的成绩

实际上调用数据的方法还有很多,这里只是列举了几种,因为现在排行榜的所有数据都在你的手上,所以你想怎么调用就怎么调用!
在云列表添加/修改数据
虽说前文讲了制作自制排行榜,但是云列表才是重中之重!所以想实现真正的数据操作还是要到云列表里操作。
运用这串积木则行(name为用户名,得分为最高分)
其中修改是替换那串,添加时添加那串(实在不会用可以只用添加。。。到。。。第一项的)
建议刚开始游戏就用如果判断是否添加“添加”那串,打破最高分时用替换那串(注:只有中间的判断可改,其它一个也不要动)
好了,自制排行榜也写好了。希望对一些人的作品创作有一些帮助!
这里放上链接,也可以去看看:https://shequ.codemao.cn/work/92810220
云列表做的话
优点是可以记录1000个人的数据排行
缺点就是速度肉眼可见的慢,同步的时候容易出问题(我做的时候是这样)
点赞9
评论
确实,所以还是用现成的吧(doge)
现成的误差大
一步执行啊!
但是又耗费云容量………………
云列表的慢是没法用一步执行解决的
所以我整出了单云变量排行榜https://shequ.codemao.cn/community/426494
现成的不耗资源锕
用云变量缓存,有用户进入,用户端从云变量添加到云列表
现在的云空间,比一键三连都贵了……
啥时候kitten可以用GET获取数据的话,自己搭建一个服务器不是更香???
如果你嫌云列表调用速度慢,你可以试试先把云列表复制到本地列表,再去执行。
玄离小吃货_已退我来说说小鱼提问的优劣:新的:1.新版的排行榜可以做到按照实际数值来排行,不会出现数值不清,乱排等现象。
旧的:1.旧的排行榜限定了数值,如果拿图片中的代码举例子,那么一旦超过了9999这个数,系统的判断就会出现失误【亲身经历好吧】,很容易就会造成大数在小数后面,甚至乱排,错排,并且如果是首富类的游戏,9999根本微乎其微,养成系哪个不是上亿的数值?
2.旧版的排行榜如果按部就班的把重复执行的次数改为比目前游戏【这里指大多数首富类游戏】中最高的数值还有多一点的数,啊,怎么说,运算时间可能比你吃饭时间还要长,而且会出现卡顿等情况【亲身经历好吧】!
总结:小鱼NB!
点赞1
评论
不用冒泡可以用插入,快速。算的更快。
DDguan我来分析一下:
1 云列表真的让我说慢到肉眼可见
2 有意义么?就是好看
点赞0
评论
适应UI程度高是一个特点 但你是可以调用其他人在排行榜的数据的,这样可以做到显示在你前后的人的成绩,且私云最多显示30项,这个1000项
不用云列表我也有解决方案的,用云变量(但存的人较少)
就相当于所有人的数据你是能够调用的,这样排行榜扩展性更高
这么卡我要它有何用
你难道是一开始就要显示排行榜的吗?
SMOLLER确实不错诶~对于我这个萌新来讲,其实牌行榜可以简化,把你的这么多代码简化一点点
点赞0
评论
简化?我试试
哦对了,你试试我那个“长隆海底照相机”,看看我牌行榜用的对不对,总是感觉有问题,就是不知道错在哪里了
调皮的乔治放重复和排序没有调用
点赞0
评论
这里是没有必要的
那为什么还要定义?
(话说你不是退了吗?)
我活了(确信
添加积木的话是不用的
大佬就是大佬,说出了本萌新(对您是)听不懂的话
里面有我做的排行榜,但好像更新不了🤦……
很急!不要离线啊大佬……