本文实例讲述了jQuery+PHP实现的掷色子抽奖游戏详细步骤。分享给大家供大家参考。具体分析如下:

该游戏是以大富翁游戏为背景,综合运用jQuery和PHP知识,设计出以掷色子点数来达成抽奖的效果,当然抽奖概率是可控的,开发者可以将本实例稍作修改即可运用到网站中的抽奖活动场景中。效果图如下:

完整实例代码点击此处本站下载。

HTML部分:

首先我们需要准备两粒色子和奖品素材,这些作者已经打包上传了,请大家放心下载。我们将在html页面中写下如下的html结构代码,.wrap用来放置色子和提示信息,#prize则是用来放置奖品的。

CSS部分:

我们要用CSS技术来将页面布局合理规范化,我们将奖品围成一个矩形,共10个位置,将两粒色子定位在矩形的中央,抽奖时可以直接点击中间的色子。这些我们可以用CSS的定位技术来实现页面布局。

.demo{width:650px; height:420px; margin:60px auto 10px auto; position:relative; }

.wrap{width:200px; height:100px; position:absolute; margin-left:220px; margin-top:140px; z-index:1000;}

#msg{display:none;width:50px; height:20px; padding:4px; background:#ffc; border:1px solid #fc9;

text-align:center; color:#f30; font-size:18px; position:absolute; z-index:1001; right:-20px; top:-10px}

.dice{width:90px; height:90px; display:block; float:left; background:url(dice.png) no-repeat; cursor:pointer}

#dice_mask{width:200px; height:100px; background:#fff; opacity:0; position:absolute; top:0; left:0; z-index:999}

.dice_1{background-position:-5px -4px}

.dice_2{background-position:-5px -107px}

.dice_3{background-position:-5px -212px}

.dice_4{background-position:-5px -317px}

.dice_5{background-position:-5px -427px}

.dice_6{background-position:-5px -535px}

.dice_t{background-position:-5px -651px}

.dice_s{background-position:-5px -763px}

.dice_e{background-position:-5px -876px}

#prize{position:relative}

#prize li{position:absolute; width:150px; height:112px; border:1px solid #d3d3d3}

#d_0{left:0; top:0}

#d_1{left:160px; top:0}

#d_2{left:320px; top:0}

#d_3{left:480px; top:0}

#d_4{left:480px; top:128px}

#d_5{left:480px; top:256px}

#d_6{left:320px; top:256px}

#d_7{left:160px; top:256px}

#d_8{left:0; top:256px}

#d_9{left:0; top:128px}

.mask{opacity: 0.6; width:150px; height:112px; line-height:32px; background:#ffc;

z-index:1001; position:absolute; top:0; left:0; text-align:center; font-size:16px}

jQuery部分:

我们使用jQquery来完成前端动作,包括掷色子动画,仿大富翁奖品逐步运动动画,其中有防重复点击知识、ajax交互知识,动画提示知识。整个 操作流程可简单概括为:点击色子->向dice.php发送ajax请求->完成掷色子动画->提示点数->逐步运动动画到最终 奖品位置停止->完成抽奖。

$(function(){

$('#dice').click(function(){

$('#prize li .mask').remove();

$('.wrap').append('

var dice1 = $('#dice1');

var dice2 = $('#dice2');

$.getJSON('dice.php',function(json){

var num1 = json[0];

var num2 = json[1];

diceroll(dice1,num1);//掷色子1动画

diceroll(dice2,num2);//掷色子2动画

var num = parseInt(num1)+parseInt(num2);

$('#msg').css('top','-10px').fadeIn(500).text(num+'点').animate({top:'-50px'},'1000').fadeOut(500);

roll(0, num);//逐步运动动画

});

});

});

函数diceroll()是一个色子运动动画,在本站前面的文章中已讲解过,就是通过jQuery的animate()实现的位移、延时、变化背景样式来实现的动画效果。

function diceroll(dice,num){

dice.attr('class','dice');//清除上次动画后的点数

dice.css('cursor','default');

dice.animate({left: '+2px'}, 100,function(){

dice.addClass('dice_t');

}).delay(200).animate({top:'-2px'},100,function(){

dice.removeClass('dice_t').addClass('dice_s');

}).delay(200).animate({opacity: 'show'},600,function(){

dice.removeClass('dice_s').addClass('dice_e');

}).delay(100).animate({left:'-2px',top:'2px'},100,function(){

dice.removeClass('dice_e').addClass('dice_'+num);

dice.css('cursor','pointer');

});

}

函数roll()至关重要,通过setInterval()设置一个间隔动画,每隔0.5秒时间执行一次。参数i代表初始位置,参数step代表需要执行 的步数,在本例中就是色子的点数,即需要走的步数。我们根据i给当前奖品加上.mask,当i的值与step相等时,停止动画,并且移除色子的遮罩(防止 重复点击)。

function roll(i,step){

var time = setInterval(function(){

if(i>9){

var t = i - 10;

$('#d_'+t).append('

$('#d_'+(t-1)+' .mask').remove();

}

$('#d_'+i).append('

$('#d_'+(i-1)+' .mask').remove();

if(i==step){

clearInterval(time); //如果到达指定位置则停止

$('#dice_mask').remove();//移除遮罩

}

i++;//继续前进

},500);

}

PHP部分:

dice.php需要做的事情有:根据配置好的奖品概率,得到总点数,根据总点数进行两粒色子的点数分配,最后返回给前端页面两粒色子的点数。

//设置中奖概率

$prize_arr = array(

'2' => array('id'=>2,'v'=>10),

'3' => array('id'=>3,'v'=>20),

'4' => array('id'=>4,'v'=>5),

'5' => array('id'=>5,'v'=>5),

'6' => array('id'=>6,'v'=>20),

'7' => array('id'=>7,'v'=>2),

'8' => array('id'=>8,'v'=>3),

'9' => array('id'=>9,'v'=>20),

'10' => array('id'=>10,'v'=>0),

'11' => array('id'=>11,'v'=>10),

'12' => array('id'=>12,'v'=>5),

);

foreach ($prize_arr as $key => $val) {

$arr[$val['id']] = $val['v'];

}

$sum = getRand($arr); //根据概率获取奖项id,得到总点数

//分配色子点数

$arrs = array(

'2' => array(array(1,1)),

'3' => array(array(1,2)),

'4' => array(array(1,3),array(2,2)),

'5' => array(array(1,4),array(2,3)),

'6' => array(array(1,5),array(2,4),array(3,3)),

'7' => array(array(1,6),array(2,7),array(3,4)),

'8' => array(array(2,6),array(3,5),array(4,4)),

'9' => array(array(3,6),array(4,5)),

'10' => array(array(4,6),array(5,5)),

'11' => array(array(5,6)),

'12' => array(array(6,6))

);

$arr_rs = $arrs[$sum];

$i = array_rand($arr_rs);//随机取数组

$arr_a = $arr_rs[$i];

shuffle($arr_a);//打乱顺序

echo json_encode($arr_a);

函数getRand()用来计算概率

//计算概率

function getRand($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;

}

希望本文所述对大家的php程序设计有所帮助。

php 控制骰子概率,jQuery+PHP实现的掷色子抽奖游戏实例相关推荐

  1. php 掷,jQuery+PHP实现的掷色子抽奖游戏实例

    jQuery+PHP实现的掷色子抽奖游戏实例 发布于 2016-01-23 05:44:43 | 334 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypert ...

  2. 投色子抽奖游戏 html,使用jQuery实现的掷色子游戏动画效果

    实现原理:当色子掷出后,通过jQuery的animate()函数改变色子位移,中间加入延时效果,并变换色子背景,最终动画运行到随机产生的点数时停止,并显示掷出的点数.其实就是动画过程加入多个不同图片的 ...

  3. php 控制骰子概率,PHP制作的掷色子点数抽奖游戏实例(代码)

    PHP制作的掷色子点数抽奖游戏实例,通过掷色子点数来达到抽奖的效果,为抽奖活动增添一些趣味性. 我们将在html页面中写下如下的html结构代码,.wrap用来放置色子和提示信息,#prize则是用来 ...

  4. php 控制骰子概率,掷色子猜大小游戏(可控制概率)

    HTML 本例中用到两粒色子,也就是说可以同时掷出两粒色子,所得的点数应该是两粒色子的点数之和.另外我们在页面上放置两个单选框,用户可以选择大小. 大 小 请直接点击上面的色子! CSS CSS的写法 ...

  5. 投色子抽奖游戏 html,jQuery实现简单的抽奖游戏

    今天要写的是,利用jQuery写一个抽奖的案例,页面包含四个组件,两个按钮分别是开始和停止的按钮.两个box,分别盛放人员和奖品.当点击开始按钮时,人员不停地进行切换.抽奖的box中显示等待抽奖结果. ...

  6. jQuery掷色子动画

    大家一定都玩过掷色子的游戏,今天我给大家分享的是如何使用jQuery来实现掷色子的动画效果,通过jQuery的animate()自定义动画函数并结合CSS背景图片切换实现的动画效果,后面hellowe ...

  7. 在FIREBUG控制台中输入 jQuery() 返回 []

    在FIREBUG控制台中输入 jQuery() 返回 [] jQuery.fn = jQuery.prototype = {constructor: jQuery,init: function( se ...

  8. 原生js实现轮盘抽奖,控制中奖概率(完整示例)

    文章目录 1.实现旋转 2.控制得奖概率 3. 控制旋转动画落点 4.测试概率 完整代码 本想找一个现成的,结果发现网上只有能实现转了,但是效果并不是让人很满意,于是我就借鉴一个样式,重新改了js实现 ...

  9. 掷骰子 概率 动态规划

    掷骰子 题目描述 玩家A和B正在玩骰子游戏. A骰子有6个面,第i个面的点数是sideA[i]. B骰子有6个面,第i个面的点数是sideB[i]. 玩家A总共掷X次A骰子,每次掷骰子得到的面都是1/ ...

  10. jQuery幸运大转盘_jQuery+PHP抽奖程序

    http://www.thinkphp.cn/code/1153.html 网上转盘抽奖程序大多是flash完成的,而本文使用jQuery和PHP来实现转盘抽奖程序. 若是想看更多js特效.网站源码. ...

最新文章

  1. C语言新手写扫雷攻略3
  2. 让Transformer的推理速度提高4.5倍,这个小trick还能给你省十几万
  3. 地平线将融资10亿美元,或创AI芯片融资纪录
  4. Rancher 推出 k3OS,业界首个 Kubernetes 操作系统
  5. C#实现rabbitmq 延迟队列功能
  6. 2018年计算机学校迎新标语,2018大学新生开学迎新标语大全 创意迎新横幅标语
  7. python错误解决方案之关于报urllib2.HTTPError: HTTP Error 401: Unauthorized错误问题
  8. 华为三层交换机路由配置案例_{华为HCNP-RS}三层交换机的配置实例
  9. SPOJ 4110 Fast Maximum Flow (最大流模板)
  10. 算法导论系列:分治算法
  11. 向Access中插入数据报“INSERT INTO 语句的语法错误” 解决
  12. 453. 最小操作次数使数组元素相等
  13. Keras】基于SegNet和U-Net的遥感图像语义分割
  14. c++freopen函数_使用示例的C语言中的freopen()函数
  15. PAT乙级(1029 旧键盘)
  16. vim正则表示式替换
  17. 外部数据源的使用汇总
  18. go mysql 中间件_GitHub - wushilong/go-sharding: Mysql 分库分表中间件
  19. 万字讲述如何通过Doris构建数据中台
  20. #惊奇建模主仆见证了 Hobo 的离别

热门文章

  1. Android 自定义和可下载字体
  2. kvm usb键盘 linux,KVM USB打印机共享器81UA连接使用教程
  3. duilib加载资源
  4. Linux系统安装详解
  5. java rxtx串口读写_Win7环境下Java串口数据读写(RXTX)
  6. J2ME基本术语词典(05/06/09)
  7. css 之水平居中对齐
  8. krohne流量计接线图_科隆电磁流量计转换器操作说明
  9. wincc如何实现web发布,及具体方法
  10. 灰度思维,黑白决策(上)