java实现转盘抽奖;

index.jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme() + "://"

+ request.getServerName() + ":" + request.getServerPort()

+ path + "/";

%>

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<meta name="viewport"

content="width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=no;">

<meta name="apple-mobile-web-app-capable" content="yes">

<meta name="apple-mobile-web-app-status-bar-style" content="black">

<meta name="format-detection" content="telephone=no">

<title>幸运大转盘抽奖</title>

<link href="files/activity-style.css" rel="stylesheet" type="text/css">

<script type="text/javascript" src="files/jquery.min.js"></script>

<script type="text/javascript" src="files/jQueryRotate.2.2.js"></script>

<script type="text/javascript" src="files/jquery.easing.min.js"></script>

<script type="text/javascript">

$(function() {

$("#inner").click(function() {

lottery();

});

});

function lottery() {

$.ajax({

type : ‘POST‘,

url : ‘AwardServlet‘,

dataType : ‘json‘,

cache : false,

error : function() {

alert(‘出错了!‘);

return false;

},

success : function(json) {

$("#inner").unbind(‘click‘).css("cursor", "default");

var angle = parseInt(json.angle); //角度

var msg = json.msg; //提示信息

$("#outer").rotate({ //inner内部指针转动,outer外部转盘转动

duration : 5000, //转动时间

angle : 0, //开始角度

animateTo : 3600 + angle, //转动角度

easing : $.easing.easeOutSine, //动画扩展

callback : function() {

var con = confirm(msg + ‘\n还要再来一次吗?‘);

if (con) {

lottery();

} else {

return false;

}

}

});

}

});

}

</script>

</head>

<body class="activity-lottery-winning">

<div class="main">

<script type="text/javascript">

var loadingObj = new loading(document.getElementById(‘loading‘), {

radius : 20,

circleLineWidth : 8

});

loadingObj.show();

</script>

<div id="outercont">

<div id="outer-cont" style="overflow:hidden;">

<div id="outer">

<img src="files/activity-lottery-1.png" width="310px">

</div>

</div>

<div id="inner-cont">

<div id="inner">

<img src="files/activity-lottery-2.png">

</div>

</div>

</div>

</div>

</body>

</html>

AwardServlet.java

package com.ostarsier.servlet;

import java.io.IOException;

import java.util.Random;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* 抽奖概率算法来自:http://www.helloweba.com/view-blog-216.html

*/

public class AwardServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

Object[][] prizeArr = new  Object[][]{

//id,min,max,prize【奖项】,v【中奖率】

//外面的转盘转动

//                {1,1,14,"一等奖",1},

//                {2,346,364,"一等奖",1},

//                {3,16,44,"不要灰心",10},

//                {4,46,74,"神马也没有",10},

//                {5,76,104,"祝您好运",10},

//                {6,106,134,"二等奖",2},

//                {7,136,164,"再接再厉",10},

//                {8,166,194,"神马也没有",10},

//                {9,196,224,"运气先攒着",10},

//                {10,226,254,"三等奖",5},

//                {11,256,284,"要加油哦",10},

//                {12,286,314,"神马也没有",10},

//                {13,316,344,"谢谢参与",10}

//里面的指针转动

{1,1,14,"一等奖",1},

{2,346,364,"一等奖",1},

{3,16,44,"不要灰心",10},

{4,46,74,"神马也没有",10},

{5,76,104,"祝您好运",10},

{6,106,134,"二等奖",2},

{7,136,164,"再接再厉",10},

{8,166,194,"神马也没有",10},

{9,196,224,"运气先攒着",10},

{10,226,254,"三等奖",5},

{11,256,284,"要加油哦",10},

{12,286,314,"神马也没有",10},

{13,316,344,"谢谢参与",10}

};

Object result[] = award(prizeArr);//抽奖后返回角度和奖品等级

response.setContentType("text/html;charset=UTF-8");

response.getWriter().write("{\"angle\":\""+result[0]+"\",\"msg\":\""+result[2]+"\"}");

System.out.println("转动角度:"+result[0]+"\t奖项ID:"+result[1]+"\t提示信息:"+result[2]);

}

//抽奖并返回角度和奖项

public Object[] award(Object[][] prizeArr){

//概率数组

Integer obj[] = new Integer[prizeArr.length];

for(int i=0;i<prizeArr.length;i++){

obj[i] = (Integer) prizeArr[i][4];

}

Integer prizeId = getRand(obj); //根据概率获取奖项id

//旋转角度

int angle = new Random().nextInt((Integer)prizeArr[prizeId][2]-(Integer)prizeArr[prizeId][1])+(Integer)prizeArr[prizeId][1];

String msg = (String) prizeArr[prizeId][3];//提示信息

return new Object[]{angle,prizeId,msg};

}

//根据概率获取奖项

public Integer getRand(Integer obj[]){

Integer result = null;

try {

int  sum = 0;//概率数组的总概率精度

for(int i=0;i<obj.length;i++){

sum+=obj[i];

}

for(int i=0;i<obj.length;i++){//概率数组循环

int randomNum = new Random().nextInt(sum);//随机生成1到sum的整数

if(randomNum<obj[i]){//中奖

result = i;

break;

}else{

sum -=obj[i];

}

}

} catch (Exception e) {

e.printStackTrace();

}

return result;

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

}

具体代码:http://download.csdn.net/detail/mll999888/8578381

时间: 2024-11-29 08:16:46

java实现转盘抽奖;的相关文章

java版转盘抽奖程序

最近抽空弄了个转盘抽奖程序,属于半原创,是基于网络上分享的资源二次开发的. 由于未知最初出处,也不知本人搜寻的资源是属于第几手,因此暂无法给出转载链接. ---------- 如果其他人要转载本文,请加上本文链接,毕竟这算本人二次开发的小作品. --------- 下载地址: http://yunpan.cn/cjG2P5kBfvQ6H  提取码 ff7d --------- 本程序 效果如图所示:

实现转盘抽奖的SurfaceViewDemo

引用:http://www.cnblogs.com/xuling/archive/2011/06/06/android.html SurfaceView是视图(View)的继承类,这个视图里内嵌了一个专门用于绘制的Surface.你可以控制这个Surface的格式和尺寸.Surfaceview控制这个Surface的绘制位置. surface是纵深排序(Z-ordered)的,这表明它总在自己所在窗口的后面.surfaceview提供了一个可见区域,只有在这个可见区域内 的surface部分内容

纯CSS3大转盘抽奖(响应式、可配置)

源于前段时候微信小程序最初火爆公测时段,把以前用 Canvas 实现的大转盘抽奖移植成微信小程序,无奈当时小程序对 Canvas 支持不够完善,只好降低用 CSS3 实现.虽然比不上 Canvas 绘图的绚丽,但也总算完成了一个抽奖的 Demo,详见:https://github.com/givebest/wechat-turntalbe-canvas. 事后想起,CSS3 实现也并不是无有益处,比如简单.快捷.调试方便.渲染想来也是要比 Canvas 要高效的,更重要的一点是支持媒体查询,大转

canvas转盘抽奖的实现(一)

网络上已经有了很多转盘抽奖的代码,但大多是用jQuery插件实现的,其中的原理比较难弄明白,于是自己摸索了一个.最终效果如下: 实现步骤: 1.根据奖品数量绘制转盘 var r1 = 200, //外圆半径 r2 = 160, //奖品文字距离圆心的位置 r3 = 60, //中心按钮半径 centerX = c.width / 2, //中点 centerY = c.height / 2, PI = Math.PI, prizeList = ['一等奖','二等奖','三等奖','四等奖','

jquery——九宫格大转盘抽奖

一.用到的图片 二.代码如下,重点是js部分 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jQuery九宫格大转盘抽奖</title> <style> #lottery{width:570px;height:510p

借助CCAction实现转盘抽奖

借助cocos2dx自带的CCMoveBY和CCEaseInOut实现目前流行的转盘抽奖效果. 创建一个辅助结点node_projection_,将转盘中被选中的精灵的序号pos与node_projection_的X坐标建立映射关系.当node_projection_执行CCMoveBY时,通过在每帧执行的回调函数roll_update(float dt)去刷新转盘中精灵的状态.而node_projuction_在X轴上的移动的距离决定了转盘最终高亮的位置. 1 void LayerRoll::

jquery转盘抽奖的研究

先看效果: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>转盘抽奖二</title> <style> *{margin:0;padding: 0;} #lottery{width:570px;height:510px;margin:0px auto;border:4px solid #ba1

canvas转盘抽奖

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>html5 canvas圆形转盘抽奖特</title> 6 </head> 7 <body> 8 <div style="w

实现android&quot;转盘抽奖&quot;小项目后感想

我这次做的小项目是android的转盘抽奖,因为这个小项目中有进程的调度,加锁等细节,而我们组的竞赛系统中也有这样的问题.通过这次的实践我发现了自己的好多问题也学到了很多. 个人问题: 1.自己的动手实践能力还差很多,而且解决问题的耐心还是不行. 2.虽然现在看视频做了出来,可是我觉得还是没有理解很透侧,关掉视频让自己再做一次我不一定能做的出来 学到知识点: 1.SurfaceHolder的使用,surfaceCreate,surfaceChange,surfaceDestroy的使用 2.了解