打地鼠游戏核心算法

1.添加图片背景
  var bg = new cc.Sprite("res/res/bg2.jpg");
  this.addChild(bg);
  bg.setAnchorPoint(0,0);
  bg.setPosition(cc.winSize.width*0.2,0);
2.添加敌方小怪地板
  for(var i = 0; i<GAME_CONFIG.SHRED_NUM_W; i++) {
     for(var j = 0; j<GAME_CONFIG.SHRED_NUM_H; j++){
         var sp = new CellSprite();
         this.addChild(sp);
         sp.setAnchorPoint(0.5,0.5);
         sp.setPosition(i*sp.width*0.7+300,320-j*sp.height*0.7);
         cc.eventManager.dispatchCustomEvent(GAME_EVENT.MAKE_ENEMY_PLAYER,sp.getPosition());
         //cc.log("抛出了事件")
         cc.log(sp.x,sp.y)
     }
  }
3.添加敌方管理层,接受地板生成时传来的坐标生成敌方小怪
  _init: function () {
        this._listener = cc.eventManager.addCustomListener(GAME_EVENT.MAKE_ENEMY_PLAYER,this._makeEnemy.bind(this))
        //cc.log(123,"添加了侦听器")
    },
  _makeEnemy:function(event){
        var po =event.getUserData();
        //cc.log(123);
        //cc.log(po.x,po.y);
        var enemy = new EnemySprite();
        this.addChild(enemy);
        enemy.setPosition(po);
    },
4.在敌方小怪类里面封装属性和点击碰撞检测
   cc.spriteFrameCache.addSpriteFrames("res/res/kuaiqiangshoudafeiji.plist");
   this.type = parseInt(Math.random() * 4);
   this.initWithSpriteFrame(cc.spriteFrameCache.getSpriteFrame(GAME_ENEMY.LGX[this.type] + ".png"));
   this.scale = 2/3;
   var that = this;
   this.schedule(function () {
       Math.random()>0.4?that.visible = true:that.visible = false;
       that.type = parseInt(Math.random() * 4);
       that.initWithSpriteFrame(cc.spriteFrameCache.getSpriteFrame(GAME_ENEMY.LGX[that.type] + ".png"));
   },GAME_CONFIG.ENEMY_SPEED);    
   var listener = cc.EventListener.create({
       event:cc.EventListener.TOUCH_ONE_BY_ONE,
       swallowTouches:true,      //吞没事件
       onTouchBegan: function (touch, event) {
            var target = event.getCurrentTarget();             //当前点击的对象
            var pos = touch.getLocation();                     //获取当前全局点击点坐标
            var s = target.getContentSize();                   //获取点击对象的尺寸
            var rect = cc.rect(0, 0, s.width, s.height);       //对象的框型区域
            var localPoint = target.convertToNodeSpace(pos);   //转换为本地坐标
            if (cc.rectContainsPoint(rect, localPoint)) {      //检测碰撞
                  if(that.visible){
                      that.visible = false;
                      target.initWithSpriteFrame(cc.spriteFrameCache.getSpriteFrame(GAME_ENEMY.LGX[that.type] + ".png"));
                      if(that.type == 0){
                          cc.eventManager.dispatchCustomEvent("SCORE",100)
                      }else{
                          cc.eventManager.dispatchCustomEvent("SCORE",-50)
                      }
                  }
                    return true
         } else {
                    return false
                }
        }
    });
        this._listener = cc.eventManager.addListener(listener,this)
5.接受怪被消灭时抛出的时间获得分数
     this._listener = cc.eventManager.addCustomListener("SCORE",this._setScore.bind(this))
    },
    _setScore:function(event){
        var data = event.getUserData();
        if(this._madeScore == 0&&data<this._madeScore) return;
        this._madeScore += data;
        this._labelScore.setString(this._madeScore);
    },
6.消灭怪物时添加特效
        this.setSpriteFrame(cc.spriteFrameCache.getSpriteFrame("100.png"));
        this.setPosition(po);
        var move = cc.moveBy(0.1,cc.p(0,50));
        var fade = cc.fadeOut(0.1);
        this.runAction(cc.sequence(cc.spawn(move,fade),cc.callFunc(function(){
            this.removeFromParent(true)
        })));
注意这样写会直接移除掉这个sprite类,所以需要在这个类里面新建一个空sprite的节点来添加动画
        this.setPosition(po);
        var sp = new cc.Sprite();
        sp.setSpriteFrame(cc.spriteFrameCache.getSpriteFrame("100.png"));
        this.addChild(sp);
        var move = cc.moveBy(0.1,cc.p(0,50));
        var fade = cc.fadeOut(0.1);
        sp.runAction(cc.sequence(cc.spawn(move,fade),cc.callFunc(function(){
            sp.removeFromParent(true)
        })));

   一、实验目的   本实验需主要掌握在设备管理的主要概念和作用; 设备基础资料、设备档案、设备维修规程等内容的含义及其在金蝶系统中的设置方法。    二、实验时间(以区间表示)、地点   实验时间:2012年5月10日   实验地点:实验楼106    三、人员分工    四、实验内容与步骤    实验(一)系统初始设置操作步骤    1、新建和设置企业账套    (1)新建账套    新建账套后以后所有生产制造管理实验数据都将保存在这一个目录下。    (2)根据需要对账套属性进行设置.    (3)用户组和用户设置     在相应的功能处分别建立用户planers、planers1、planers2隶属于计划组。Workers1、Workers2、Workers3隶属于生产组、salers1、salers2隶属于销售组、purchasers1、purchasers1隶属于采购组。然后为设置的用户设置相应的管理权限。    (4)系统初始化      用planers 用户登录,在系统设置-核算参数设置中进行所需要的数据设置。    (5)部门设置   用户在账套管理过程中,已经设置了相应的管理权限,但在公司管理机构中,用户又隶属于不同的部门进行不同的管理工作。然后对每一个部门进行部门属性、成本核算类型等的设置。然后对职员信息进行相应的设置。    (6)仓库设置   在主界面系统设置—仓库下新增仓库。然后对仓库数据:代码、名称、仓库类型、是否MPS/MRP可用量进行等进行设置。    (7)工作中心数据的录入     在【工作中心】—【新增】界面中对工作中心数据:代码、名称、所属部门、是否关键工作中心、效率、利用率、单位成本、班制、能力计算类型等进行相关录入。    (8)客户设置    (9)供应商的设置    (10)计量单位的设置    (11)会计科目的设置    (12)建立物料资料
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值