微信活动——砸金蛋

简介:                   今天微信这边开始做游戏了,感觉挺好玩儿的,我被分到了一个砸金蛋的游戏。先看下实现后的效果:            这个游戏因为不仅涉及到前台的JS等等,还要从后台获取数据,比如,设置的概率什么的,奖品数量。


        

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



       



   这个游戏因为不仅涉及到前台的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

    }




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




           

   

目录
相关文章
|
JavaScript 前端开发 PHP
微信公众平台开发(53)砸金蛋
微信公众平台开发 微信公众平台开发模式 企业微信公众平台 砸金蛋 作者:方倍工作室 地址:http://www.cnblogs.com/txw1958/p/crack-golden-eggs.html 砸金蛋被广泛应用于庆典活动、商家促销、电视娱乐等场合,它的趣味、悬念能迅速活跃现场气氛。
1309 0
|
1月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
549 7
|
1月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
662 1
|
1月前
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
117 7
ly~
|
2月前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
81 6
|
1月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
209 1
|
1月前
|
小程序 前端开发 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【10月更文挑战第3天】随着移动互联网的发展,微信小程序凭借便捷的用户体验和强大的社交传播能力,成为企业拓展业务的新渠道。本文探讨了小程序全栈开发中的身份认证与授权机制,包括手机号码验证、微信登录、第三方登录及角色权限控制等方法,并强调了安全性、用户体验和合规性的重要性,帮助开发者更好地理解和应用这一关键技术。
71 5
|
1月前
|
小程序 前端开发 JavaScript
微信小程序全栈开发中的PWA技术应用
【10月更文挑战第3天】微信小程序作为新兴应用形态,凭借便捷体验与社交传播能力,成为企业拓展业务的新渠道。本文探讨了微信小程序全栈开发中的PWA技术应用,包括离线访问、后台运行、桌面图标及原生体验等方面,助力开发者提升小程序性能与用户体验。PWA技术在不同平台的兼容性、性能优化及用户体验是实践中需注意的关键点。
65 5
|
1月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
645 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
1月前
|
存储 小程序 安全
微信的开发管理都需要配置什么?
【10月更文挑战第17天】微信的开发管理都需要配置什么?
32 0
下一篇
无影云桌面