微信活动——砸金蛋

今天微信这边开始做游戏了,感觉挺好玩儿的,我被分到了一个砸金蛋的游戏。先看下实现后的效果:

这个游戏因为不仅涉及到前台的JS等等,还要从后台获取数据,比如,设置的概率什么的,奖品数量。

ok,上源码:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<link href="Styles/egg.css" rel="stylesheet" type="text/css" />
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>

</head>

<body>

<div id="main">

	<div class="egg">
		<ul class="eggList">
			<p class="hammer" id="hammer">锤子</p>
			<p class="resultTip" id="resultTip"><b id="result"></b></p>
			<li><span>1</span><sup></sup></li>
			<li><span>2</span><sup></sup></li>
			<li><span>3</span><sup></sup></li>
		</ul>
	</div>

</div>

<script type="text/javascript">

    var flag = false;

    function eggClick(obj) {
        var _this = obj;
        $.get("setSettings2.ashx", function (res) {

            if (_this.hasClass("curr")) {
                alert("蛋都碎了,别砸了!刷新再来.");
                return false;
            }

            $(".hammer").css({ "top": _this.position().top - 55, "left": _this.position().left + 185 });
            $(".hammer").animate({
                "top": _this.position().top - 25,
                "left": _this.position().left + 125
            }, 30, function () {
                _this.addClass("curr"); //蛋碎效果
                _this.find("sup").show(); //金花四溅
                $(".hammer").hide();
                $('.resultTip').css({ display: 'block', top: '100px', left: _this.position().left + 45, opacity: 0 }).animate({ top: '50px', opacity: 1 }, 300, function () {

                    //                    if (res.msg == 1) {
                    //                        $("#result").html("恭喜,您中得" + res.prize + "!");
                    //                    } else {
                    //                        $("#result").html("很遗憾,您没能中奖!");
                    //                    }
                    $("#result").html(res);
                });
            }
		);
        });
    }

    $(".eggList li").click(function () {
        if (flag == false) {
            $(this).children("span").hide();
            eggClick($(this));
            flag = true;
        } else {
            $("#result").html("您已经砸过一次了!!!!!");
        }
    });

    $(".eggList li").hover(function () {
        var posL = $(this).position().left + $(this).width();
        $("#hammer").show().css('left', posL);
    });

</script>

</body>
</html>

引入的CSS:

.egg{width:660px; height:400px; margin:50px auto 20px auto;}
.egg ul li{z-index:999;}
.eggList{padding-top:110px;position:relative;width:660px;}
.eggList li{float:left;background:url(../images/egg_1.png) no-repeat bottom;width:158px;
height:187px;cursor:pointer;position:relative;margin-left:35px;}
.eggList li span{position:absolute; width:30px; height:60px; left:68px; top:64px; color:#ff0;
 font-size:42px; font-weight:bold}
.eggList li.curr{background:url(../images/egg_2.png) no-repeat bottom;cursor:default;z-index:300;}
.eggList li.curr sup{position:absolute;background:url(../images/img-4.png) no-repeat;width:232px;
height:181px;top:-36px;left:-34px;z-index:800;}
.hammer{background:url(../images/img-6.png) no-repeat;width:74px;height:87px;position:absolute;
text-indent:-9999px;z-index:150;left:168px;top:100px;}
.resultTip{position:absolute; background:#ffc ;width:148px;padding:6px;z-index:500;top:200px;
left:10px; color:#f60; text-align:center;overflow:hidden;display:none;z-index:500;}
.resultTip b{font-size:14px;line-height:24px;}

images文件:

后台处理:

  public class setSettings2 : IHttpHandler
    {
        private double Chance = 0.9;//中奖概率

        public List<PriceInfo> GetDataFromDB()
        {
            #region 模拟读到的数据库的奖项级别

            List<PriceInfo> prices = new List<PriceInfo>() { 

                        new PriceInfo(){
                            GotPriceChance=float.Parse("1"),
                            PriceLevel=1,
                            PriceLevelName="一等奖",
                            PriceNum=100},
                        new PriceInfo(){ GotPriceChance=float.Parse("1"),
                            PriceLevel=2,
                            PriceLevelName="二等奖",
                            PriceNum=100},
                         new PriceInfo(){ GotPriceChance=float.Parse("1"),
                            PriceLevel=3,
                            PriceLevelName="三等奖",
                            PriceNum=100}

                    };

            #endregion

            return prices;

        }

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";

            string strResult = "不好意思,您没有获奖,么么哒~~~~";  //返回给用户的抽奖结果

            int intTotal = 0;  //获取总抽奖次数
            GetDataFromDB().ForEach(item =>
            {
                intTotal += item.PriceNum;
            });

            int intResult = this.GetRandom((int)(intTotal/Chance));  //生成一个用户的随机整数

            this.GetPrice(GetDataFromDB()).ForEach(item =>  //对奖项集合进行变量并于用户的随机整数对比
            {

                if (intResult == item.PriceLevel)
                {
                    strResult = item.PriceLevelName;  //奖项等级名称赋值

                    //抽到的奖项的数量减一——此处要修改数据库

                    context.Response.Write(strResult);
                    context.Response.End();
                }

            });

            context.Response.Write(strResult);

        }

        /// <summary>
        /// 判断中了几等奖
        /// </summary>
        /// <param name="priceInfo"></param>
        /// <returns></returns>
        public List<PriceInfo> GetPrice(List<PriceInfo> priceInfos)
        {
            List<PriceInfo> pricelist = new List<PriceInfo>();
            priceInfos.ForEach(p =>
            {
                int j = 0;
                for (int i = 0; i < p.PriceNum; i++)
                {
                    pricelist.Add(new PriceInfo()
                    {
                        GotPriceChance = p.GotPriceChance,
                        PriceLevel = ++j,//level里面放置编号
                        PriceLevelName = p.PriceLevelName,
                        PriceNum = p.PriceNum
                    });
                }

            });

            return pricelist;

        } 

        /// <summary>
        /// 生成指定数量内的随机数字
        /// </summary>
        /// <param name="maxNum"></param>
        /// <returns></returns>
        public int GetRandom(int maxNum)
        {
            Random ran = new Random();
            ran.Next(1, 100);

            int intResult = ran.Next(1, maxNum + 1);
            return intResult;

        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }

    }

    /// <summary>
    /// 奖品信息
    /// </summary>
    public class PriceInfo
    {

        public float GotPriceChance { get; set; }//中奖概率:例如:50%
        public int PriceLevel { get; set; }//中奖级别:例如:1
        public string PriceLevelName { get; set; }//中奖级别名称:例如,一等奖
        public int PriceNum { get; set; }//奖品数量 :例如:100

    }

唉,又找回了当年疯狂粘人代码的赶脚。。。

时间: 2024-11-11 16:26:14

微信活动——砸金蛋的相关文章

小程序砸金蛋、外卖模板上线啦,快到酷客多商户后台更新!

最近,微信小程序官方发文不断,又开放十几项接口,逐步给企业主带来跟多福利.于此同时,酷客多研发团队也保持着一贯的研发和版本迭代速度,此次版本主要新增幸运砸金蛋.外卖模板.意见反馈三个模块 1.新增幸运砸金蛋,大奖中不停 通过此功能可增加平台趣味性,增强用户粘性,刺激用户二次消费,是与用户互动的一大利器. 2新增外卖模板,外卖送起来 此模板是餐饮企业的福利,可在注册或者酷客多商户管理后台直接选择此模板,瞬间让您的小程序首页变的高大上,从此再也不用担心第三方外卖平台高额的佣金和账期了,因为酷客多只提

砸金蛋:jQuery+PHP实现的砸金蛋中奖程序

原文 砸金蛋:jQuery+PHP实现的砸金蛋中奖程序 砸金蛋被广泛应用于庆典活动.商家促销.电视娱乐等场合,它的趣味.悬念能迅速活跃现场气氛.同样,我们也可以将砸金蛋应用到WEB网站上,用于开展线上活动.本文将使用jQuery与PHP讲解如何实现一个WEB砸金蛋程序. 查看演示 下载源码 准备 我们需要准备道具(素材),即相关图片,包括金蛋图片.蛋砸碎后的图片.砸碎后的碎花图片.以及锤子图片. HTML 我们页面上要展现的是一个砸金蛋的台子,台上放了编号为1,2,3的三个金蛋,以及一把锤子.我

paip.刮刮卡砸金蛋抽奖概率算法跟核心流程.

#---抽奖算法需要满足的需求如下: 1 #---抽奖核心流程 1 #---问题???更好的算法 2 #---实际使用的扩展抽奖算法(带奖品送完判断和每用户最大中奖判断) 2 #-------网上的抽奖算法Php 3 #----java版本的.. 4 参考 5 #---抽奖算法需要满足的需求如下: 1.可以控制中奖的概率 2.具有随机性 3.最好可以控制奖品的数量 4.根据用户ID或者ip.手机号.QQ号等条件限制抽奖次数 初期就这些需求,然后根据网上的资料,采用了一种阶段式抽取的方法,大家下面

XXX微信活动二次开发

项目需求: 对微信管家做二次开发. 场景:某公司旗下有很多连锁店,公司总部可以添加活动内容等细则,可以看数据兑换情况,并且要清楚哪个门店兑换了数据,兑换了多少条. 项目语言:PHP 框架:yyuc 数据库:mysql 服务器:Linux 耗时:一个星期. 项目实现思想:独立出一个系统,给连锁店用,各个连锁店根据总部给的账号登陆这个系统,查看活动,不过每个连锁店只能查看本店已兑换数据,(防止电源胡乱兑换数据,只有通过客户反馈的中奖码和手机号码等信息查询出相关中奖信息,才能进行兑换) 然后给总部开发

微信o2o的本地体验——王府井书店6层拍卖会上微信活动体验

第一次去王府井目的很单纯,就是体验繁华地方的微信营销商业模式. 没有计划,就是去发现看看有木有多地发现和体验. 王府井地铁站下了地铁1号线从B出口出来,就能看到很大的金色的大字"王府井",一路上看到了很多的知名企业的名字,新东方,中国移动,上品折扣,北京市百货大楼,m当劳,还有些记不起来但是能在王府井设点但是也不会差到哪里去.感觉麦当劳和王府井书店(新华书店的分店)是相对比较熟悉的地方,或许能找到一些微信的影子. 就就近去了王府井新华书店,进门就是书出门过安检门当然不可能随便就把书拿走

六个情人节微信活动方案,让你远离单身!

还在为情人节微信活动策划而烦恼吗?粉丝互动与自己不够积极而苦恼吗?还在为没有成本,从而进行不了推广而烦躁吗?凡科以下案例或许能给你一些启发: 游戏一:爱要大声说出来长按录音键进行告白录音,录音完成后即可参与抽奖.于用户,可以吐露很多难以说出口的心声:于品牌,可以激发UGC的产出,让用户制作的优质内容反作用于整个营 销 链,为营xiao"推波助澜",带来更丰富的内涵与附加值. 白色情人节微信活动营销案例:爱要大声说出来 游戏二:情人双双寻大礼情侣手牵手寻钻石,通过左右移动情侣来获得钻石,

七步教你策划好一个微信活动

虽然现在有很多微信营销工具或技巧可以帮助企业做好微信活动,但是微信活动策划从来不是一件简单的事,它需要经历的步骤还是不变的,只是效率或许有所提高而已.那么,企业进行微信活动的七大策划步骤分别是哪些呢?下面让我们来认识一下. 1.策划的主题:确定活动的主题其实也就是做好活动的定位,企业需要根据目标用户的口味,结合公众号文章定位,选出合适有效的主题方向.适当的时候还可以给活动中的产品蒙上一层纱,给用户一种期待感和神秘感. 2.活动准备工作:通常微信活动的准备工作主要包括素材.回复.环节和接口,如果是

jQuery+PHP实现的砸金蛋中奖程序

准备 我们需要准备道具(素材),即相关图片,包括金蛋图片.蛋砸碎后的图片.砸碎后的碎花图片.以及锤子图片. HTML 我们页面上要展现的是一个砸金蛋的台子,台上放了编号为1,2,3的三个金蛋,以及一把锤子.我们构建以下html代码:  <div class="egg">     <ul class="eggList">         <p class="hammer" id="hammer"&g

(利用tempdata判断action是直接被访问还是重定向访问)防止微信活动中用户绕过关注公众号的环节

说明:这个不是在进行微信公众号开发,也就是说在不能获取用户openid的前提下做的下面操作 1.动机:最近有个微信活动(关注了服务号的可以免费领取礼品),要做这么一个功能,活动的入口在微信服务号的菜单上,只有从这里链接过来的用户才有权限看到领取礼品的表单,否则就是引导关注微信服务号的链接,但是为了防止用户直接将活动也分享出去了,然后其他用户避开了关注微信这样一个环节,所有已关注的用户打开活动链接之后的地址和服务号上的入口链接地址不能一样 2. 意图:我想在服务号的入口上加上一个参数,标明是从微信