欢迎来到程序小院
废柴勇士
玩法:点击屏幕下方左右按键击杀怪物,怪物会在左右方向同时来袭,快速点击按钮进行击杀怪物,看您能够坚持多少秒,
据说还没有能够坚持37秒,快去击杀怪物挑战吧^^。
开始游戏https://www.ormcc.com/play/gameStart/194
html
<canvas id="gameCanvas" width="480" height="800"></canvas>
css
h2.title{
display: block;
margin: 50px auto;
text-align: center;
}
js
var heroLayer = null;
var monsterLayer = null;
var explosionLayer = null;
var isFirstPlay = true; //是否第一次玩这个游戏
var prepareMonsterArr = [];//即将出现的怪物数组
var monsterArray = [];//已经出现的怪物
var monsterShadowArray = [];//所有已出现的怪物的影子
var delArray = [];//被砍死的怪物,准备删除
var touchLocationX = null;//触摸的X坐标位置
var positionY = null;//怪物和hero的Y坐标
var bgSprite = null; //背景图片
var shadowBatchNode = null;
var heroSprite = null; //主角
var heroShadow = null;//主角的影子
var targetX = 0;//怪物要到达的X坐标
var durationLabel = null;//时间标签
var duration = 0;//游戏坚持的时间
var hpMax = 3;
var hpLabel = null;//血量标签
var hpProgress = null;
var hp = 0;//血量
var hpNode = null;
var scoreLabel = null;//分数标签
var score = 0;//分数
var isGameOver = false;//游戏是否结束
var coolDowan = 0;//冷却时间
var skillProgress = null;//技能冷却进度条
var isSkillPeriod = false; //是否在释放技能期间
var attackDir = 0;//hero攻击的方向,0表示不再攻击,1表示向左攻击,2表示向右攻击
var response = null;
var responsefailedLabel;//请求网络失败时显示的内容
var isSharelayer = false;//是否是分享界面
var BgLayer = cc.Layer.extend({
ctor:function(){
this._super();
bgSprite = cc.Sprite.create(res.bg1_jpg);
bgSprite.setPosition(cc.p(240,400));
bgSprite.setScale(1.6);
this.addChild(bgSprite);
}
});
/**
* 第一次游戏时的引导过程
*/
guidePrecess:function(){
var noticeNode = cc.Node.create();
var noticeSprite = cc.Sprite.create(res.notice_board_png);
noticeSprite.setPosition(cc.p(240,840));//提示窗初始化在屏幕上方
noticeNode.addChild(noticeSprite);
noticeSprite.runAction(cc.Sequence.create(cc.MoveTo.create(0.3,cc.p(240,400)),
cc.MoveTo.create(0.05,cc.p(240,420)),
cc.MoveTo.create(0.05,cc.p(240,400))));//提示窗口移动到屏幕中间
//添加一个巫妖精灵
var lichSprite = cc.Sprite.create(res.monster6_1_png);
lichSprite.setPosition(cc.p(-lichSprite.getContentSize().width/2,450));//初始位置在屏幕中间左侧外
noticeNode.addChild(lichSprite);
this.addChild(noticeNode,3);
var lichMoveTo = cc.moveTo(0.2,cc.p(lichSprite.getContentSize().width/2,450));
var lichAnim = cc.Animation.create();
for(var i = 1; i <= 4; i++){
var frame = "/default/game/fcys/res/monster6_" + i + ".png";
lichAnim.addSpriteFrameWithFile(frame);
}
lichAnim.setDelayPerUnit(0.15);
lichSprite.runAction(cc.RepeatForever.create(cc.Animate.create(lichAnim)));//播放帧动画
lichSprite.runAction(cc.Sequence.create(cc.DelayTime.create(0.4),
lichMoveTo,cc.CallFunc.create(noticeCallback)));//移动到屏幕左侧内,回调noticeCallback函数
}
//定时更新函数,更新游戏坚持时间、冷却时间、准备出现的怪物
updateDuration:function(dt){
duration += dt;
coolDowan += dt;
if(coolDowan <= 30){
//var to = cc.ProgressTo.create(0.01, (30 - coolDowan) / 30 * 100);
//skillProgress.runAction(to);
}else{
coolDowan = 30;
}
var tempArr = [];
for(var i = 0; i < prepareMonsterArr.length; i++){
if(prepareMonsterArr[i].time <= duration){
tempArr.push(prepareMonsterArr[i]);//即将出现的怪物的属性添加到tempArr数组中
}else{
break;
}
}
for(var i = 0; i < tempArr.length; i++){
this.createMonster(tempArr[i]);//创建即将出现的怪物
}
deleteChildFromArray(prepareMonsterArr,tempArr);//从prepareMonsterArr中删除已创建的怪物
if(duration >= 88){
gameOver();
}
}
/**
* 创建怪物
* @param monsterData 怪物的属性
*/
createMonster:function(prepareMonsterData){
var monsterSprite = cc.Sprite.create("/default/game/fcys/res/monster" +
prepareMonsterData.type + "_1.png");//根据类型选择对应的图片
monsterSprite.setScale(1.0/0.8);
monsterSprite.setAnchorPoint(cc.p(0.5, 0));
var dir = Math.random();
if(Math.random() < prepareMonsterData.direction){
targetX = 180;
monsterSprite.setPosition(cc.p(-30,positionY - 55));
}else{
targetX = 300;
monsterSprite.setPosition(cc.p(510,positionY - 55));
monsterSprite.setFlippedX(true);//右边出现的怪物镜像显示
}
/*if(prepareMonsterData.direction == 0){//如果怪物出现的方向是随机的,则产生一个1或2的随机数,
1表示左边,2表示右边
prepareMonsterData.direction = Math.floor(Math.random() * 10 % 2 + 1);
}
if(prepareMonsterData.direction == 1){//从左边出现的怪物
targetX = 180;
monsterSprite.setPosition(cc.p(-30,positionY - 65));
}else if(prepareMonsterData.direction == 2){//从右边出现的怪物
targetX = 300;
monsterSprite.setPosition(cc.p(510,positionY - 65));
monsterSprite.setFlippedX(true);//右边出现的怪物镜像显示
}*/
monsterArray.push(monsterSprite);//已出现的怪物添加到monsterArray数组中
monsterLayer.getChildByTag(prepareMonsterData.type).addChild(monsterSprite,1,
prepareMonsterData.type);//添加怪物到Layer上,TAG即为怪物的类型
//不同的怪物类型初始化不同的血量
if(prepareMonsterData.type == 1 || prepareMonsterData.type ==3
|| prepareMonsterData.type == 4 || prepareMonsterData.type == 5){
monsterSprite.setUserData(monsterUserData(1,1));
}else{
monsterSprite.setUserData(monsterUserData(2,2));
}
var walkLine = createMonsterWalkLine(prepareMonsterData.type,prepareMonsterData.rampageProb);
//根据怪物类型设置怪物的行走路线和Action
if(prepareMonsterData.type ==1 || prepareMonsterData.type == 2
|| prepareMonsterData.type == 5 || prepareMonsterData.type == 6){
monsterSprite.runAction(createMonsterWalkAnimate(prepareMonsterData.type));
monsterSprite.runAction(cc.Sequence.create(walkLine, cc.CallFunc.create(monsterAttackCallback)));
}else if(prepareMonsterData.type ==3 || prepareMonsterData.type ==4){
monsterSprite.runAction(walkLine);
}
}
源码https://www.ormcc.com/
需要源码请关注添加好友哦^ ^
转载:欢迎来到本站,转载请注明文章出处
https://ormcc.com/