| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- var ObjectPool = require("ObjectPool");
- cc.Class({
- extends: cc.Component,
- properties: {
- 我方: cc.Node,
- 敌方: cc.Node,
- 对象池: {
- default: null,
- type: ObjectPool
- },
- 敌方血条: cc.Node,
- 我方血条: cc.Node,
- 倒计时: cc.Label,
- 敌方分数: cc.Label,
- 我方分数: cc.Label,
- 结束界面: cc.Node,
- 连击动画: cc.Node,
- 拳套: cc.Node,
- 计时标志: false,
- },
- onLoad() {
- Games = this;
- this.glovesDragon = this.拳套.getComponent(dragonBones.ArmatureDisplay);
- console.log(this.时分(60));
- this.初始化();
- },
- 初始化() {
- this.随机生成(this.我方);
- this.随机生成(this.敌方);
- this.敌方分数.string = "10";
- this.我方分数.string = "10";
- this.敌方血条.getComponent(cc.ProgressBar).progress = 1;
- this.我方血条.getComponent(cc.ProgressBar).progress = 1;
- this.倒计 = 60;
- this.计时标志 = true;
- },
- start() {
- },
- 掉血(父级, 血量) {
- if (父级.name == this.我方.name) {
- var 分数 = parseInt(this.敌方分数.string);
- 分数 -= 血量;
- this.敌方分数.string = 分数.toString();
- this.敌方血条.getComponent(cc.ProgressBar).progress -= 0.1;
- if (分数 <= 0) {
- this.敌方分数.string = "0";
- this.敌方血条.getComponent(cc.ProgressBar).progress = 0;
- console.log("游戏结束,胜利");
- this.游戏成功();
- }
- } else {
- var 分数 = parseInt(this.我方分数.string);
- 分数 -= 血量;
- this.我方分数.string = 分数.toString();
- this.我方血条.getComponent(cc.ProgressBar).progress -= 0.1 * 血量;
- if (分数 <= 0) {
- this.我方分数.string = 分数.toString();
- this.我方血条.getComponent(cc.ProgressBar).progress = 0;
- console.log("游戏结束,失败");
- this.游戏失败();
- }
- }
- },
- 游戏成功() {
- this.游戏结束();
- },
- 游戏失败() {
- this.游戏结束();
- },
- 倒计时结束() {
- this.游戏结束();
- this.unscheduleAllCallbacks();
- if (parseInt(this.我方分数.string) > parseInt(this.敌方分数.string)) {
- console.log("胜利");
- } else if (parseInt(this.我方分数.string) == parseInt(this.敌方分数.string)) {
- console.log("平局");
- } else {
- console.log("失败");
- }
- },
- 游戏结束() {
- cc.director.pause();
- this.结束界面.active = true;
- this.glovesDragon.armature().animation.stop();
- for (var i = 0; i < this.连击动画.children.length; i++) {
- this.连击动画.children[i].active = false;
- }
- this.拳套.active = false;
- },
- 重新开始() {
- cc.director.resume();
- Games.拳套.active = true;
- this.glovesDragon.playAnimation("<None>", 1);
- for (var i = 0; i < this.我方.children.length; i++) {
- var childs = this.我方.children[i].children[0];
- if (childs.children.length == 1) {
- ObjectPools.地鼠回收(childs.children[0]);
- }
- }
- for (var i = 0; i < this.敌方.children.length; i++) {
- var childs = this.敌方.children[i].children[0];
- if (childs.children.length == 1) {
- ObjectPools.地鼠回收(childs.children[0]);
- }
- }
- this.初始化();
- this.结束界面.active = false;
- },
- 随机生成(父级) {
- var flag = false;
- for (var i = 0; i < 父级.children.length; i++) {
- var childs = 父级.children[i].children[0];
- if (childs.children.length == 0) {
- flag = true;
- }
- }
- if (flag == false)
- return;
- var randomIndex = parseInt(Math.random() * 3, 10);
- var parents = 父级.children[randomIndex].getChildByName("Mask");
- var randomShapeIndex = parseInt(Math.random() * 5, 10);
- // 炸弹
- if (randomShapeIndex == 4) {
- var item = this.对象池.生成炸弹();
- if (parents.children.length == 0) {
- item.parent = parents;
- } else {
- this.随机生成(父级);
- return;
- }
- item.getComponent("zhadan").init(父级, randomShapeIndex);
- } else {
- var item = this.对象池.生成地鼠();
- if (parents.children.length == 0) {
- item.parent = parents;
- } else {
- this.随机生成(父级);
- return;
- }
- item.getComponent("dishu").init(父级, randomShapeIndex);
- }
- },
- checkTouch: function (target, location) {
- let node = target;
- let pointInNode = node.convertToNodeSpaceAR(location);
- let i, j, c = false;
- if (!target.getComponent(cc.PolygonCollider))
- return;
- let nvert = target.getComponent(cc.PolygonCollider).points.length;
- let testx = pointInNode.x;
- let testy = pointInNode.y;
- let vert = target.getComponent(cc.PolygonCollider).points;
- for (i = 0, j = nvert - 1; i < nvert; j = i++) {
- if (((vert[i].y > testy) != (vert[j].y > testy)) &&
- (testx < (vert[j].x - vert[i].x) * (testy - vert[i].y) / (vert[j].y - vert[i].y) + vert[i].x))
- c = !c;
- }
- return c;
- },
- // 输出03:05:59 时分秒
- 时分(result) {
- var h = Math.floor(result / 3600) < 10 ? '0' + Math.floor(result / 3600) : Math.floor(result / 3600);
- var m = Math.floor((result / 60 % 60)) < 10 ? '0' + Math.floor((result / 60 % 60)) : Math.floor((result / 60 % 60));
- var s = Math.floor((result % 60)) < 10 ? '0' + Math.floor((result % 60)) : Math.floor((result % 60));
- //return result = h + ":" + m + ":" + s;
- return result = m + ":" + s;
- },
- 连击播放(p, obj, str) {
- for (var i = 0; i < obj.children.length; i++) {
- var exp = obj.children[i];
- var labelstr = exp.getChildByName("New Label").getComponent(cc.Label);
- labelstr.string = str;
- if (exp.active == false) {
- exp.position = p;
- exp.active = true;
- break;
- }
- }
- },
- update(dt) {
- if (this.计时标志) {
- if (this.倒计 === 0) {
- this.倒计时结束();
- this.计时标志 = false;
- }
- this.倒计 -= dt;
- var 时间 = this.时分(this.倒计);
- this.倒计时.string = 时间.toString();
- }
- },
- });
|