原(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<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

cocos 水果机,老Tiger虎机流水灯,博彩大转盘效果的更多相关文章

  1. 原生javascript实现老.虎机抽奖点名demo源码思路解析

    想着使用原生Javascript做一个随机点名的小应用, 也可以做抽奖使用. html简单化,人名单可以通过js生成并处理. 可以非常随意的添加修改人名字. 应用想带点特效,比如老.虎机转动的特效. ...

  2. 强化学习读书笔记 - 02 - 多臂老O虎O机问题

    # 强化学习读书笔记 - 02 - 多臂老O虎O机问题 学习笔记: [Reinforcement Learning: An Introduction, Richard S. Sutton and An ...

  3. 抽奖动画 - lao虎机抽奖

    本文介绍一个lao虎机抽奖动画的实现,lao虎机抽奖在各类商家营销活动中非常常见,这里主要介绍动画的实现过程,其他细节不做详细分析. ps:lao虎机是敏感词,博客园不允许出现,所有老用拼音. 1. ...

  4. Atitit 发帖机系列(7) 词法分析的方法attilax大总结)

    Atitit 发帖机系列(7) 词法分析的方法attilax大总结) 1.1. 词法分析貌似俩大方法,一个直接根据状态图转换,一个根据dfa1 1.2. switchcase或者ifelse 最原始方 ...

  5. KVM 介绍(8):使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 [Nova Libvirt QEMU/KVM Live Migration]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  6. js 大转盘,老虎 机

     http://www.helloweba.com/view-blog-215.htmlhttp://www.ui3g.com/demos/show/1408/http://www.js-css.cn ...

  7. KVM(八)使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机

    1. QEMU/KVM 迁移的概念 迁移(migration)包括系统整体的迁移和某个工作负载的迁移.系统整理迁移,是将系统上所有软件包括操作系统完全复制到另一个物理机硬件机器上.虚拟化环境中的迁移, ...

  8. Tiny4412之C语言实现流水灯,Tiny4412裸机程序[3]

    在前边我们使用汇编完成了一个流水灯实验: Tiny4412汇编流水灯代码,Tiny4412裸机LED操作 ---- - -- -- -- - -- -- 修改: # ${MKBL2} ${SOURCE ...

  9. Xilinx Vivado的使用详细介绍(4):Zedboard+vivado之流水灯(加SDK)

    Vivado+zedboard之初学流水灯 Author:zhangxianhe 环境:vivado 2016.3(已验证适用于2015.4) 开发板:Zedboard version xc7z020 ...

随机推荐

  1. Vue基础语法

    一.挂载点,模版和实例 二.Vue实例中的数据,事件和方法 1.v-html指令和v-text指令 v-html :不转义 v-text :转义过后的内容 <div id="root& ...

  2. numpy的array合并-【老鱼学numpy】

    概述 本节主要讲述如何把两个数组按照行或列进行合并. 按行进行上下合并 例如: import numpy as np a = np.array([1, 1, 1]) b = np.array([2, ...

  3. jquery动态添加的元素不能直接应用事件方法的时候

    对于由 jQuery 动态生成的元素,如用 jQuery 给元素添加 class,或者直接添加一对 p 标签,不能直接绑定常用的事件,如 click.因为这些元素属于动态生成,除非采用 onclick ...

  4. GIT初始学习记录

    目录 GIT学习记录 配置github与gitlib两个账号 基本操作 git init:初始化仓库 git status:查看仓库状态 git add :向缓存区中添加文件 git commit 保 ...

  5. IDEA_教你十分钟下载并破解IntelliJ IDEA(2017)(转)

    之前都是用myeclipse,但是最近发现看的很多教学视频都是使用 IntelliJ IDEA,于是决定换个软件开始新的学习征程! 下面讲讲我是如何在十分钟之内安装并破解该软件. 1.首先,我找到了  ...

  6. js估算一篇文章的阅读时长

    每天早上上班在地铁里我都有看技术类文章以及实时新闻的习惯,偶尔会看到有些文章的开始部分会提醒我们这篇文章大概的阅读时长,我就在想这是怎么实现的,具体到前端开发中,又是如何实现的.今天在浏览Segmen ...

  7. [LeetCode] Largest Sum of Averages 最大的平均数之和

    We partition a row of numbers A into at most K adjacent (non-empty) groups, then our score is the su ...

  8. [LeetCode] Random Pick with Blacklist 带黑名单的随机选取

    Given a blacklist B containing unique integers from [0, N), write a function to return a uniform ran ...

  9. 关于eclipse的Progress一直跳转的解决方案

    下载eclipse编程,发现了一个问题:执行main方法第二次console打印不出数据,后发现Progress一直跳转,而且非常多进度条在运行,关闭后第一次执行没问题,第二次问题重复出现. 有幸看到 ...

  10. mysql字符集校对

    常用的两种 utf8_general_ci 按照普通的字母顺序,而且不区分大小写(比如:a B c D)utf8_bin 按照二进制排序(比如:A排在a前面,B D a c) ci是 case ins ...