蜘蛛纸牌java注释_GitHub-tangguangyaoSpiderSolitaire。。
。
SpiderSolitaire
蜘蛛纸牌源码学习+注释
源码分析思路:
⾸先,⽤了2个构造函数Spider和Poker
Spider构造函数拥有以下⽅法:
init:函数初始化
start:游戏开始
continuous:检测扑克牌是否连贯
dealing:发牌
record:记录分数和移动步数
folding:收牌
adjustDistance:调整每列牌的间距
undo:退⼀步
replay:重新开始
win:游戏胜利
这⼏个功能函数
Poker构造函数拥以下⽅法:
init:函数初始化
render:初始化占位符,牌堆,牌的样式和摆放位置
moveTo:移动牌
offt:获取牌位置
soliOfft:获取队列中最后⼀张牌位置,并设置下⼀张的牌的位置
disable,enable:牌上⾯能否移动的开关
expo:翻拍
listener:给牌冷酷的反义词 上⾯加监听函数
dragStart,draging,dragEnd:拖拽牌的⼀系列判断功能
初始化游戏:
⾸先Spider初始化时创建52张牌,牌有3个属性pos(放置位置),style(花⾊,背⾯,或者占位符),num(牌的点数);
利⽤(),洗牌。打乱初始化有规则的cloColl萝卜丁 ection数组;
创建占位符和创建牌堆的样式,这⾥调⽤Poker函数设置10个占位符和5个牌堆的样式,并且给牌堆绑定点击函数;
点击start开始发牌;
发牌规则从第6⾏第5列停⽌发牌,从5⾏第5列明牌显⽰,其他则为暗牌;
cloCollection为未发牌队列,每次发牌从牌堆中的取第⼀个元素;
每发⼀张牌麻辣排骨 利⽤Poker按照规则这是牌的样式和发到的位置,同时这个过程利⽤⼀个动画效果;
在Poker发牌时,对于5⾏第5列后明牌显⽰的牌,打开开关(移除fixed),此时牌堆上⾯可添加事件赤血长殷 ,这⾥添加了moudown事件,按下
⿏标时可以执⾏函数dragStart拖拽;
发牌完毕延迟60毫秒,让牌堆数组的最后⼀组解除锁定,打开开关(移除fixed),此时牌堆上⾯可添加事win10控制面板在哪 件;
此时就可以开始点击牌堆继续发牌,移动明牌(重新开始,后退⼀步等稍后考虑):
继续发牌:
通过Spider的dealing发牌函数,并且结合Poker的soliOfft给新牌设置位置;
同时发完牌后减少⼀个牌堆,然后解锁下⼀组牌堆,此牌堆上点击可触发发牌事件;
最后将这个事件添加到历史记录中;
则⼀次发体育教师工作计划 牌事件完成。
另外⼀个操作是移动明牌:
Poker的dragStart函数⾸先利⽤Spider的continuous判断点击的牌是否连续,如果连续则可以拖动;
拖动时新建⼀个容器dragBox,将点击牌以及所在队列的后续牌元素放到dragBox中,将点击牌及所在队列的后续牌从openCollection移
除,暂存到⼀个鸟语花香 临时数组dragCollection中;
绑定两个事件:moumove和mouup(这⾥我没有弄明⽩是什么意思);
并且记住点击牌所在队列的上⼀张牌ker,移动后这张牌就是这组对列中的最后⼀张;
记录点击时点击事件的⿏标位置;
绑定的moumove事件利⽤Poker的draging函数来拖动牌;
绑定的mouup事件利⽤Poker的dragEnd来判断,能否放置牌成功,当牌移动到⼀定范围松开⿏标时,会判断这个牌是否连贯(连贯就可
以⽅式),成功移动牌后,开始⼀次记分,记录这次操作历史,判断是否需要翻牌,移除创建存放拖动牌元素的容器,判断移动成功的这⼀
列是否完整可以收牌等⼀系列规则判断。
另外2个操作:
重新开始其实就是重新初始化函数;
后退⼀步undo⽐较⿇烦,也是需要各种判断:
读取historyQueue历史数据数组⾥⾯的内容,如果是翻牌dealing,直接将所有已发牌队列的最后⼀张牌移除,并恢复待发牌,这⾥就需要
重新添加⼀个牌堆,并且将之前的牌堆关上点击事件开关;
如果不是翻牌,检测翻牌历史,如果有,则将重新让翻转⾄背⾯,测收牌历史,如果有,则将收起的牌移回原队列,移牌历史处理。
总结:
这个源码写的⾮常清晰,看上去很好理解,源码读起来也不是那么吃⼒,值得⼀看。
本文发布于:2023-03-20 09:10:12,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1679274612151482.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:spider是什么意思.doc
本文 PDF 下载地址:spider是什么意思.pdf
留言与评论(共有 0 条评论) |