微信大转盘游戏
来源:互联网 发布:淘宝新店如何提升信誉 编辑:程序博客网 时间:2024/06/05 09:50
为了迎中秋庆国庆,这个星期一直在帮公司弄微信的推广活动,弄一个大转盘抽奖游戏,抽奖条件是必须分享我们公司的产品页面到朋友圈后才可以抽奖,先贴上图
----------------------------------------------------------我是分割线------------------------------------------------------------------------------------------
先说下我整个游戏的流程,一开始你点击我这个大转盘游戏的链接,因为你是没分享产品打开大转盘的,所以游戏不能让你抽奖,得提示一下此次活动的规则,并引导你前往产品列表进行分享。如下图
前往产品列表后,也会弹出活动提示,如果用户觉得烦就可以点击不再提示
然后分享当前页面到朋友圈,此时分享的标题后面会带上此次活动的标题
分享后,会在页面上弹出抽奖的窗口,点击确认后跳转到抽奖页面
现在就可以正常抽奖了。
-----------------------------------------------------------我是分割线--------------------------------------------------------------------------
一开始参考其它的公众号,基本都是分享到朋友圈后,截图下来发给公众号,这样的方式显得档次太低了,还得专门弄个人在后台查看消息,在我公司也不可能实现的。所以我就想到了微信JS-SDK里面的获取“分享到朋友圈”按钮点击状态及自定义分享内容接口
如下所示
wx.onMenuShareAppMessage({ title: '', // 分享标题 desc: '', // 分享描述 link: '', // 分享链接 imgUrl: '', // 分享图标 type: '', // 分享类型,music、video或link,不填默认为link dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空 success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { // 用户取消分享后执行的回调函数 }});
那我就可以在success写相应验证的代码后跳转到大转盘游戏了。
那些产品页面都是自己写的,所以只要全部产品页面配置上微信JS-SDK后注册这分享朋友圈事件就OK了。
那些这个分享事件解决了,就得制作这个大转盘游戏了,我一开始想了两种方法
1、用第三方平台的大转盘游戏,这个很容易找到,不过首先想到的缺点是别人可以直接把这个游戏页面转发给别人,别人也无需分享就可以直接抽奖了
2、自己制作一个大转盘游戏,由于之前没弄过,也不知难度系数怎么样,不过最大的优点是代码可以自由发挥,想怎么验证就怎么验证。
最后思来想去,由于时间也比较紧,跟领导说了,给我一天的时间,如果制作不出大转盘游戏,就用第三方的平台。
--------------------------------------------------------------这是分割线----------------------------------------------------------------------------------------------------
前期工作:
首先当然就是百度 输入 大转盘 源码 进行搜索,研究了几个,发现并没有自己想象的那么难,难点就两个,一个是页面的转盘代码,一个是后台的概率算法,这些网上都有现成的,我需要的无非就是理解它,理解它,理解它!然后根据自己的需要进行修改。
找了几个大转盘游戏的html源码,比较满意的就是这个了 http://www.17sucai.com/preview/222076/2015-05-28/turnplate/index.html
其它的大转盘都是弄一张固定的图片当做转盘,这个是用canvas动态画奖品出来的,这样就可以根据我数据库奖品信息画,显得档次比较高。
先说一下这个大转盘在微信的浏览器上有严重的bug
如下面这两位朋友所示
http://bbs.csdn.net/topics/391044614?page=1
http://bbs.csdn.net/topics/391068827
就是在微信浏览器上,转盘转动时,有时转盘会遮到那个指针图片,我在电脑上任何一个浏览器都不会出现这个现象,就只有在微信里才会出现。如果不用canvas的话,用图片就不会,这个bug我从中午试到晚上,一直调不出来原因,我都快放弃了。。最后洗了个澡回来,想一想,能不能把canvas转变成一张图片。马上百度,真是万幸,canvas有个toDataURL方法,这个方法太关键了,我把这个canvas 设置 display:none,然后放一个<img id="img_disc" />,然后等canvas画完后 $("#img_disc").prop("src",canvas.toDataURL()),然后一测试,完美~~~~~~成功了!不过很明显在微信上转动的速度比直接用canvas转动慢很多了,没那么流畅的,不过算了,先暂时这样吧。
再百度下php的概率算法
最经典就是这个了
private function get_rand($proArr) { $result = ''; //概率数组的总概率精度 $proSum = array_sum($proArr); //概率数组循环 foreach ($proArr as $key => $proCur) { $randNum = mt_rand(1, $proSum); if ($randNum <= $proCur) { $result = $key; break; } else { $proSum -= $proCur; } } unset ($proArr); return $result; }
$proArr=array(0=>2,1=>3,2=>4);
键值是奖品的ID,值是奖品的概率,如果上面的这个数组的话,那么0就是九分之二,1是九分之三。
这两个都有了,那其它的就是一些业务逻辑的代码了。
-----------------------------------------------------------------------我是分割线-------------------------------------------------------------------------------------------------
说下我的业务逻辑吧
在我的产品页面中注册这个微信分享事件,当分享成功后,将当前分享的产品ID异步ajax post到服务器,服务器接收后,在数据库里新增一条分享日志记录,记录上面并记录了分享用户的微信openid(用于以下的验证),新增后得到分享日志ID,然后将这个分享日志ID返回到页面,我就弹出一个获得抽奖的窗口,点击确认的话,就会跳转到大转盘游戏页面,并以get的方式带上刚才那个分享日志id
当进入这个大转盘页面时,我会判断是否带有产品分享的日志id,如果没有,就会弹出提示窗口,让你去产品列表,如果有,我后台会对这个产品分享日志ID进行验证,如果进入大转盘的用户openid跟这个分享日志ID对应的openid不一样的话,就提示分享错误,然后判断分享日志的分享时间跟现在的时间差,如果大于一天,就提示分享过期,请重新分享。
写得比较乱,因为这个大转盘游戏是给公司做的,而且我技术水平一般,所以代码我不方便列出来,我怕万一到时被网友发现了漏洞的话,我就完了。。。
先这样吧。
要是大家想试玩,可以在微信里面搜索金刚玻璃,关注后,输入抽奖,就会回复大转盘的图文消息了。
- 微信大转盘游戏
- 转盘抽奖游戏
- 大转盘游戏
- 游戏转盘html5
- 大转盘游戏
- 大转盘游戏
- 微信大转盘|刮刮乐
- .net实现微信大转盘
- 一个简单的抽奖转盘游戏
- 使用Unity3D制作一个转盘游戏
- canvas应用之各种游戏转盘
- Android之仿腾讯游戏转盘抽奖
- 转盘
- 转盘
- 转盘
- Canvas实现微信大转盘抽奖代码
- 【翻译phaser2.0教程】【1】社区游戏开发例子-幸运转盘
- html5 canvas 绘制大转盘类似的游戏,并填充文
- C# WindowsForm 员工管理系统三【注册】
- 百度offe面经及找工作一个月体会
- LeetCode----Longest Valid Parentheses
- PAT(甲级)1028
- Android下TextView实现跑马灯效果
- 微信大转盘游戏
- PAT(甲级)1029
- Android事件传递机制、手势检测
- Vagrant中搭建Docker虚拟环境(下)-Mac
- HDU 4169 Wealthy Family(树形背包)
- Activity--know where you are
- Android之手势的识别与处理(双击onDoubleTap、滑动onFling、拖动onScroll)
- 白话经典算法系列之十二 数组中只出现1次的两个数字(百度面试题)
- HTML(网页设计)必用的设计模式---------CSS网页编程