用户:
I桔汁糖浆I查看:0 回复:8 评论:0 创建时间:2018-02-11T18:15:01
大家好我是人见人厌的上海emmmm
上午搞了一个排行榜,只用到了三个云变量,并且在@欠王迷 的帮助下这个木块已经大致完善了
那么我来讲解一下这个模块
没错,积木就是这么长emmmm
我由于我的懒惰,我已经不想再简化了,毕竟代码的简洁程度与逻辑呈开口朝上的二次函数emmmm
各位可以右击图片,点击:在新标签页中打开图片,然后按住ctrl的同时滚动鼠标滚轮来放大这张图片
第一张图是所需的变量和链表,我把数据处理的地方都放在本地了
看下第二张图的第二个模块:名次预载模块。这个模块能把云变量的数据转到本地链表上面
先清空列表,然后运用拆分积木,把每一个名次的人名与分数都拆分到链表当中,按一定顺序排列,为分数的排序做铺垫。当某个名次没有人时,把链表中相对应的两个项都变成0
第三个模块就是排序模块了。我的思路先是判断你的分数有没有大于第三名,如果大于了,就开始判断你的具体名次:
当你的分数超过链表的第二项——也就是超过第一名的分数的时候,先第一名是不是你创造的记录,如果是,只改变第一名的分数,其他的变量保持不变。如果不是,就探测有没有人位居第二名,因为如果不探测的话,会与接下来的代码发生冲突,从而导致“霸榜”:一个ID占领榜上多个名额。当探测到没有人位居第二名的时候,就先把第三名的数据设置为第二名,然后把第二名的数据设置为之前的第一名。为什么不先设置我们的分数在第一名,然后设置第二名的分数为以前的第一名?因为当我们的分数占领了第一名时,原来第一名的数据就被我们“推下了悬崖”,消失了。这时如果我们再设置第二名为第一名,则设置的是我们自己的分数,然后同理可得第三名,就得到了一排溜的你的名字emmmm
如果你的分数没有超过第一名,就要先判断你有没有在榜上第一名。这是为了防止“霸榜”。接下来处理第二名的步骤同上面处理第一名,不过这次探测的链表项为第四项
至于第三名,因为没有第四名,所以直接探测前两个名次有没有你的ID,如果没有就设置第三名为你的ID与分数 最后,用某种方法来更新链表的项数,为下次的排序做准备。 这里是一个简单的小模块来测试这个排行榜是否能够成功使用:
这里是教案:https://ide.codemao.cn/p/xG0fJOs8kiEQcVruYwFX7c0j喵x