微信活动——砸金蛋

        

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

       

   这个游戏因为不仅涉及到前台的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-10-26 09:45:14

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

微信公众平台开发(53)砸金蛋

  微信公众平台开发 微信公众平台开发模式 企业微信公众平台 砸金蛋 作者:方倍工作室 地址:http://www.cnblogs.com/txw1958/p/crack-golden-eggs.html 砸金蛋被广泛应用于庆典活动.商家促销.电视娱乐等场合,它的趣味.悬念能迅速活跃现场气氛.同样,我们也可以将砸金蛋应用到WEB网站上,用于开展线上活动.本文将使用jQuery与PHP讲解如何实现一个WEB砸金蛋程序.     准备 我们需要准备道具(素材),即相关图片,包括金蛋图片.蛋砸碎后的图

中国电信砸金蛋活动受用户追捧

中国电信"交费砸金蛋,大奖送不停"的网厅回馈活动,自8月5日开始以来受到广大电信用户的追捧.截止8月26日,参与用户已经超过40万.目前,参与人数仍然在以每日增加2.4万以上的速度递增,老用户推荐好友的数量也接近万人,活动反响热烈程度非常火爆. 8月20日第一期抽奖即出现55名大奖获得者,奖品包括33台3G手机和22台笔记本,另有60余万元的话费惠及众多电信用户.中奖用户遍及全国三十个省市自治区,其中以江浙.两广等城市最为集中,仅广东一省,就出现4位一等奖得主. 据北京一位电信忠实用户

购LG G3砸金蛋 获韩国精美皮套及多重大礼

中介交易 SEO诊断 淘宝客 云主机 技术大厅 8月8日,在海外市场获得了众多好评的LG G3正式登陆中国.这部目前高端智能机市场的最大黑马在上市前就已受到众多消费者的强烈关注.此次进军中国,LG电子再次选择了国内最火热的电商平台京东.二者强强联合,加上国行版G3更加强大的配置以及3999的亲民价格,LG G3势不可挡,销量一路飘红. 8月11日,LG G3在京东微信购物.京东手机客户端率先首发.8月12日,京东官网抢购开启.为回馈消费者对LG品牌的支持和信赖,LG电子推出了系列优惠活动.抢购期

微信5.0, 如何挖掘微信活动的营销价值

摘要: 作者: @晏涛三寿 千呼万唤之中,神一样备受期待的微信5.0面世了.有人高兴有人惶恐,无论它如何变化,用户总是十分淡定,因为对他们而言无非就是除手机之外的一个"免费社交工 作者:@晏涛三寿 千呼万唤之中,神一样备受期待的微信5.0面世了.有人高兴有人惶恐,无论它如何变化,用户总是十分淡定,因为对他们而言无非就是除手机之外的一个"免费社交工具",但是对企业用户来说,他们早就不淡定了.借助微信开展营销的期望和热情让他们变得躁动,5.0的变化直接关乎他们下一步该如何做微信营

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

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

手机游戏市场发展迅猛获资本青睐 投资就像砸金蛋

当乐网CEO肖永泉最近心情很好.作为国内首家手机游戏平台公司掌门人,他的网站刚刚拥有了2款月收入超过1000万的手机游戏,而在去年,月收入达到300万的产品还是凤毛麟角.肖永泉告诉南都记者,"今年上半年手机游戏(尤其是手机网游)的收入增长非常快,处于爆发的态势." "爆发态势"背后,是投资机构在"火上浇油":上半年就有当乐网完成获2000万美元B轮融资.君联资本注资移动游戏公司乐动卓越500万美元.清科创投数百万美元A轮融资投向手机游戏开发卡尔维

砸“金蛋”中笔记本反被骗走8000元

晨报记者倪冬 通讯员吴艺乔艳报道 随着"非常6+1"节目的持续火爆,主持人李咏砸金蛋开奖的画面早已深入人心.一些不法分子也跟着动起了歪脑筋,冒充"非常6+1"节目组发送砸中大奖的短信进行诈骗. "恭喜!'非常6+1'节目组李咏砸中笔记本一部!"当海先生收到这条中奖短信时,也曾半信半疑.为了求证真伪,他登录了短信中的领奖网站,发觉网站上带有CCTV字样,还有400开头的全国服务热线,看起来挺正规的.于是海先生拨打了这个 客服热线.客服告诉他,可以选

基于JQuery+PHP编写砸金蛋中奖程序_php实例

首先给大家展示效果图: 查看演示 下载源码 准备工作 我们需要准备道具(素材),即相关图片,包括金蛋图片.蛋砸碎后的图片.砸碎后的碎花图片.以及锤子图片. HTML 我们页面上要展现的是一个砸金蛋的台子,台上放了编号为1,2,3的三个金蛋,以及一把锤子.我们构建以下html代码: <div class="egg"> <ul class="eggList"> <p class="hammer" id="ham

嘀嘀打车与微信第三轮活动砸10亿 乘客补贴提至10元

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 [TechWeb报道]2月17日消息,也许是受到了快的打车的补贴政策刺激 ,嘀嘀打车第二轮5元补贴活动实行了仅一周便宣告结束,取而代之的是嘀嘀打车与微信宣称的第三轮"10亿重磅补贴"活动. 嘀嘀打车宣布,"使用嘀嘀打车并选择微信支付,乘客立减10元,每天3次,新乘客首单立减15元;北京.上海.深圳.杭州的司机用微