用户:
内涵本涵查看:49 回复:30 评论:49 创建时间:2022-12-12T18:17:18
--------------------------------------------------------- 分割线-------------------------------------------------------------
看了某位大大的自制排行榜教程
然后脑子一热也想做一个自制排行榜的教程)
注意:排行榜纯本内涵自己想出来的!没有借鉴任何作品或教程!!!!!!!!
咳咳,然后就开始教程⑧
-----------------------------------------------------------------------------------------------------------------------------
声明:
1.本教程不含打印,觉得自己不会打印的直接退出即可
2.本教程排行榜是列表形式,觉得太慢的直接退出即可
3.作者这方面也是个萌新,觉得写的垃的直接退出即可
4.作者也是第一次做这种冷门教程,讲解的可能(ken ding)有错误或者不全面(这就不用退出了哈)
***************************************************************************************************************
成果展示:
首先,你得创建一个屑屑的云列表
云列表与云变量相比有一个很好的地方
就是云列表的每项数据都给你了项数的积木
也就是这些:

当然,云变量虽然没有这些代码,但是也可以用下面的代码来进行项数判断:
(这就是为什么云变量也可以制作排行榜)
(当然对于云端方面列表肯定是比变量方便的)
(但是云列表的刷新速度就像 你/妈 出门化妆一样慢)(内涵の奇妙喻比)
然后就是讲解云列表排行榜的原理:
其实说到自制排行榜很多人的第一印象都是非常复杂、非常炫酷、只有大佬才会做
其实不然
首先,得先读取用户的数据(id、分数什么的)
然后就是很多人想到的第一印象很难的点:遍历
遍历,顾名思义,就是遍(遍·意味深)了一下云列表的所有项(别想偏了)
而在自制排行榜里,遍历的作用仅仅是全部判断一下自己的分数和别人的分数的比较
比如自己的分数是15,排行榜里有5项:
|1- 25|
|2- 21|
|3- 18|
|4- 12|
|5- 10|
那么全部判断一下,就能发现:
自己的分数大于第4、5项,小于第1、2、3项,
所以自己就应该是在排行榜中第4名
这样子判断自己和别人的数据,就是排行榜中的遍历判断
当然,在遍历所有数据之前,还需要做一个用处不大但是必须有的积木串:
(好吧其实我也不知道能不能去掉)(划掉)
你看,这一串代码中,列表项数的格式也是一个“列表”:
训练师用户名//分数(id//a)
这串就很简单⑧?如果列表(也就是排行榜)的长度为0,
换句话说就是空白
那么就不需要进行遍历判断,
直接将自己的分数设置成第一名(即使是0分)
然后在做遍历之前,还得做一个判断:
(其实这个判断就已经开始遍历判断了只不过遍的不是自己和别人数据的判断)

(当然,我自己按照第一印象做出来后怕出问题所以就不敢优化了)
(如果你不像我这么菜的话当然可以把这几串代码做的更好~)
这一串代码稍微的有些复杂
如果你仔细看的话能看见很多其他变量
比如“a、c、id”
这里的a是分数,c是遍历的次数变量,id则是训练师用户名
当然你可以不写这些变量(c得留着!!!),直接引用编程猫的积木就可以
这一串代码的原理是遍历一遍列表,判断自己的用户名与遍历项是否相同
如果不同,判断下一项直到变量大于列表长度
如果相同,那么再次判断:
如果自己的分数大于以前自己的分数
那么就删除之前的那项
然后直接到后面的遍历
当你完成了这些,恭喜你,就差一个遍历、一个打印、另外一些花里胡哨的功能与一个不知道叫啥的功能
来到遍历了
这里的遍历其实与前面的那个遍历相差不多
这里的变量b当然也是遍历次数的变量
这里的代码如果你看不懂就肯定觉得复杂
但是你理解这里的方式时就会发现:
“哇!好简单啊!”
原理:判断列表(排行榜)每一项的数据与自己的数据(分数)的大小判断
如果自己分数的大于b项的分数,那么将b加1,
直到自己的分数大于b项的分数
那么这时候就插入到这一项
欢迎来到这一步
看了前面的几串代码,你肯定会发现一个背包(八阿哥bag)(bu shi):
如果自己的分数是排行榜中最小的呢????
那也简单,如果判断出了这种情况,那么直接插入到列表(排行榜)最后一项就可以了:

恭喜你!成功的学会了如何制作排行榜!那么,再见啦各位awa ~!
怎么可能
这个排行榜虽然已经实现了排序
但是打印这部分内涵并没有写进教程里
(仔细想想如果不是做的花里胡哨的话其实挺简单实现的)
而且,我并没有将代码拼接在一起,
因为我知道,如果我把拼接好的代码放进来
肯定有很多人没听懂但还是把全部代码一股脑抄在自己作品里
还有
除了最基本的实现排序的代码
还有很多内涵没有顾及到的机制
比如,因为云列表延迟而导致的重复
我们就需要防重复判断的代码
当然,限于内涵的能力
个人想实现这些功能显然是有些困难了
社区当然有许多比我强的大佬
也有许多写的比我好的教程
·所以,希望你看完这个帖子后
能够思考并发出建议或讨论
再见