博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocos 水果机,老Tiger虎机流水灯,博彩大转盘效果
阅读量:7114 次
发布时间:2019-06-28

本文共 3229 字,大约阅读时间需要 10 分钟。

原(http://www.cnblogs.com/zisou/p/cocos2d-xZhuanpan.html)

博彩大转盘,转盘抽奖的小系统,这是一个很有意思的游戏模块,游戏中增加这样一些趣味的小模块,我会附上源码;

会增进玩家的粘性,每天都想来抽两把试试手气;

我做的这个是个矩形风格的转盘,不是那种圆形的转盘,但是原理是相差不多的;

首先准备一些素材,如:奖品,转盘格子背景,开始按钮等等....

 

接下来,我想把这个转盘系统单独做在一个class文件夹中,以后可插拔的方便接入任何游戏,建了一个文件夹ZhuanPanSystem;

说一下大概的制作思路,首先是需要格子,来组成一个矩形矩阵,长和宽根据自己需求自己去设置,中间有一个按钮,点了之后,格子

就会变背景,并且循环跑动在矩形格子上,最终根据加速度从快到慢,减速下来停在哪个格子上,便获取到该格子上的奖励;

ok思路一定,看下代码如何实现;

格子:

//创建一个矩阵格子阵    boxgezi = CCArray::create();    int bid = 0;    for (int i = 0; i < 4; i++)    {        for (int j = 0; j <=5; j++)        {            Zp_BoxData* thisbox = new Zp_BoxData();            thisbox->set_boxid(bid);            thisbox->set_boxReward(getReward(bid%6));            if(bid==4)            {                thisbox->set_xuanzhong(true);            }            else            {                thisbox->set_xuanzhong(false);            }            thisbox->set_tag(bid);            switch (i)            {            case 0:                thisbox->set_point(ccp(55+gezi_w*j,allbd_h-30));                boxgezi->addObject(thisbox);                break;            case 1:                if(j<=2)                {                    thisbox->set_point(ccp(55+gezi_w*5,allbd_h-30-gezi_h-gezi_h*j));                    boxgezi->addObject(thisbox);                }                break;            case 2:                thisbox->set_point(ccp(55+gezi_w*5-gezi_w*j,30));                boxgezi->addObject(thisbox);                break;            case 3:                if(j<=2)                {                    thisbox->set_point(ccp(55,30+gezi_h+gezi_h*j));                    boxgezi->addObject(thisbox);                }                break;            default:                break;            }            bid++;        }    }    vector
maua ; for (int i = 0; i < boxgezi->count(); i++) { Zp_BoxData* bdata = (Zp_BoxData*)boxgezi->objectAtIndex(i); Gzi* gz = new Gzi(allbd,bdata); maua.push_back(bdata->get_boxid()); }

以上就是利用Gzi类创建出来的一个矩形范围的矩阵转盘,有了矩形转盘,还需要游戏中的点击开始以后,循环转动的效果;

用了一个递归去循环去跑一个加速度的效果的方法:

void TurntableSystem::runTurntableGet(float time){    this->schedule(schedule_selector(TurntableSystem::runAct), time); }void TurntableSystem::runAct(float time){    vector
gezi_l = GlobalInfo::getInstance()->get_gizilist(); //做事儿 if(gezi_l.size()>0) { if(fnum>gezi_l.size()-1) { fnum = 0; } int bid = gezi_l.at(fnum); changeBox(bid,true); //再把上一个变回来 int lastnum = fnum-1; if(lastnum<0) { lastnum=gezi_l.size()-1; } int lastid = gezi_l.at(lastnum); changeBox(lastid,false); fnum++; } runnum++; this->unschedule(schedule_selector(TurntableSystem::runAct)); CCLOG("------%f----times=%d-",time,runnum); if(runnum<25) { float nexttime = time+runnum*0.01f; if(nexttime>=1.5f) { nexttime=1.5f; } this->schedule(schedule_selector(TurntableSystem::runAct),nexttime); }}

这边我是启动了一个定时器去实现这个递归加速的方法,里面的25目前是固定的跑25格必定停下!!!

以下就牵扯到随机数概率获取奖品的问题了,那么根据咱们策划给的方案,每个格子的概率对应的格子数,和步数

去set这个值就可以了,剩下的工作就很简单了,只需增加随机概率就可以了;

下面我帖一下跑起来的效果图:

 

 

开始后循环跑动;

源码及素材下载资源地址:

你可能感兴趣的文章
HTML: 仿写一个财经类静态的网页
查看>>
C#读写config配置文件
查看>>
JavaScript:文本域事件处理
查看>>
关于dctser进程
查看>>
一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM中的查询
查看>>
win7远程登录
查看>>
5.6. DHCP
查看>>
RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->Web版本模块管理界面新增模块排序功能...
查看>>
ajax与算法,sql的group处理
查看>>
《C#高级编程》笔记系列--点滴记录(持续更新中……)
查看>>
采用泳道图工具跟踪项目进度或者问题解决进度
查看>>
sql server 2008学习1–系统数据库
查看>>
找零钱的两种方法
查看>>
DM642图像处理程序的主要结构
查看>>
从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~三 分部类是否破坏了单一职责...
查看>>
redis的主从配置 扩容
查看>>
HDU1004 Let the Balloon Rise
查看>>
jquery 校验中国身份证号码
查看>>
PicPopupWindow的使用
查看>>
以最简单的登录为例,诠释JS面向对象的简单实例
查看>>