zoukankan      html  css  js  c++  java
  • 【cocos2d-x 手游研发----博彩大转盘】

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

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

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

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

    接下来,我想把这个转盘系统单独做在一个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<int> 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<int> 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这个值就可以了,剩下的工作就很简单了,只需增加随机概率就可以了;

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

     

    开始后循环跑动;

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

    百度云盘:http://pan.baidu.com/share/link?shareid=3443771417&uk=4097703620&third=15

  • 相关阅读:
    896. Monotonic Array单调数组
    865. Smallest Subtree with all the Deepest Nodes 有最深节点的最小子树
    489. Robot Room Cleaner扫地机器人
    JavaFX
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
  • 原文地址:https://www.cnblogs.com/zisou/p/cocos2d-xZhuanpan.html
Copyright © 2011-2022 走看看