/Wechat-program

大一时微信小程序的课程项目,实现一个用处不大的汉诺塔

Wechat-program

大一时微信小程序课的项目 主要功能: 利用canvas画布组件实现传统游戏汉诺塔的游戏功能,游戏规则是有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方。使用者可通过画布下方的6个按钮实现圆盘的移动,在2-3关时圆盘的颜色还会发生变化,当A柱上的所有圆盘均被移动至B或C柱时系统自动判定为成功,并显示一个key;当通过所有关卡,集齐所有key后可以到成就界面兑换成就。 遇到的困难: (1)实现圆盘移动,通关的方法 (2)如何与成就页面相关联 (3)随机颜色的实现 解决方法: (1)用建立画布并在画布上对应位置画线和擦除的方式实现圆盘的移动。具体方式为:建立三个数组和三个变量记录每一根柱子的圆盘大小和数量;下方的六个按钮对应了六个移动函数,每一个函数通过判断起始柱和目标柱上的圆盘大小和数量判断是否执行移动操作;若执行移动操作,则在目标柱高度+1的地方画出圆盘,在起始柱圆盘的位置用白色按圆盘大小划线实现擦除,然后完成对高度和大小数组的修改;最后判定B或C柱是否有一个达到了最大高度,若到达,则在高处画出key的数值。 (2)利用在关卡通关时显示key,收集全后在成就界面输入key的方式,避免了繁琐的页面间数据链接。 (3)相比书上较为繁琐的调用自定义函数实现随机颜色的方法,我用了一句代码替代,虽然可能报错,但不影响效果的实现:'#'+Math.floor(Math.random()*16777215).toString(16)