天志,一个没有故事的男童鞋,在深圳南漂,过着苦逼的日子,想着美好的人生,平淡无奇却又想充满惊喜。。。

φ(≧ω≦*)♪

数独之新建游戏

2018.06.09

    总体来说,新建游戏可简单分为三步:选择游戏难度,获取题目,展现题目并让用户做题;此外,我们在用户完成题目之后做了一个绘制分享卡片的功能,下面我依次说明如何实现。

1.1 选择题目类型和难度

    首先在 wxml 中使用一个不自动循环的 swiper 做不同题型的展示,这里不使用 scroll-view 是因为 swiper 能够很好的自动滑动到一个 swiper-item,如果使用 scroll-view 会导致用户停留在两种题型中间,导致画面同时显示两种题型,之后在每个 swiper-item 中循环渲染五种级别的题型即可。在每个题型的 view 上,绑定一个 id,用于监听用户点击的是哪一个难度。

    此外由于我们在对战游戏中也是复用的这个页面,所以,我们在 onload 函数里对单人和多人进行了判断,如果是多人,为了大家题目一致,需要在离开这个页面的时候把游戏题目的 id 传到做数独的页面,在此处我们也进行了特殊处理。

1.2 进行游戏

    在进行游戏的时候,单人模式下初获取题目外几乎不涉及数据传输,只是单纯的对当前局势进行判断,判断用户是否填满,若填满是否正确,此外,根据用户的设置不同,也需要对高亮提示和错误提示进行处理。

1.3 获取题目

    客户端根据选择题目和难度的信息随机产生相应的题目 id,并向服务器请求获得题目,获得题目后,初始化数独类,将题目信息(题目和答案)填入。最后在 canvas 绘制,计时器开始计时。

1.4 填满及正确与否的判断

    用一个变量记录未填写的数量,时刻维护,在剩余数量为0的时候将当前局势与答案进行比较,如果正确则停止计时器,绘制并显示分享卡片

1.5 高亮提示

    用户如果开启了高亮提醒,在用户每次点击选择框的时候,就将数独内所有 cell 内容为用户点击数字的颜色进行修改

1.6 错误提示

    如果用户打开了错误提示,在用户每次更改数独的时候,则对数独进行 行、列、宫 三个判断,如果有 cell 出错,则将该 cell 的颜色修改。

1.7 分享卡片

    分享卡片用 canvas 绘制,按照层次,一层一层进行绘制,首先是白色的底色,之后是用户的头像,数独的类型,完成的时间,之后对头像进行圆裁剪,最后画上配饰图案。此外借用微信提供的保存图片接口,为用户提供保存分享卡片的功能,方便用户将图片分享至朋友圈。

    其中有一个坑很多人不注意会踩,绘制 canvas 的时候一定要首先给整个 canvas 绘制底色,如果未绘制底色,canvas 会默认透明色,而透明色在开发端的模拟器中显示为白色,在 ios 中也显示为白色,但是安卓会显示为黑色。在大赛的 qq 群里,已经有很多人入坑了,希望大家注意一下。

发表评论