从零开始手把手教你使用javascript+canvas开发一个塔防游戏07塔的升级和出售

项目演示

项目演示地址:

体验一下

项目源码:

项目源码

代码结构

本节做完效果

info.js

 //画出塔的攻击范围以及升级等信息
	drawScope : function(tower){
		
		var select = Game.canvasList.select;
		
		Canvas.clear(select,500,500);
		
		Canvas.fillArc(select,tower.x+25,tower.y+25,TowerType[tower.type]["level_"+tower.level].scope,"rgba(25,174,70,0.5)");
		
		if(tower.level < 3)Canvas.drawImg(select,Game.imgList.btn_img,0,0,20,20,tower.x,tower.y,20,20);
		
		Canvas.drawImg(select,Game.imgList.btn_img,20,0,20,20,tower.x+30,tower.y+30,20,20);
	},
    //升级或卖掉
	upgradeOrSell : function(x,y){
		
		var tower = Game.nowSelectTower;
		//升级
		if(tower.level < 3 && T.pointInRect({x:x,y:y},{x:tower.x,y:tower.y,width:20,height:20})){
			
			if(this.score - TowerType[tower.type]["level_"+(tower.level+1)].buyIt < 0)return false;
			
			tower.level += 1;
			
			this.updateScore(TowerType[tower.type]["level_"+tower.level].buyIt * -1);
			
			this.drawScope(tower);
			//update
		}
        //卖掉
		else if(T.pointInRect({x:x,y:y},{x:tower.x+30,y:tower.y+30,width:20,height:20})){
			
			var money = Math.floor((tower.level * TowerType[tower.type]["level_1"].buyIt)/2);
			
			this.updateScore(money);
			
			delete this.installTower[Math.floor(tower.x/50)+"_"+Math.floor(tower.y/50)];
			
			Game.towerList.remove(tower);
			
			Canvas.clearRect(Game.canvasList.tower,tower.x,tower.y,tower.width,tower.height);
			
			Canvas.clear(Game.canvasList.select,500,500);
			
			tower = null;
			//sell
		}
	}

enemy.js

game.js


新增initBind 函数

//初始化绑定塔的事件
	initBind : function(){
		
		var select = document.getElementById("select");
		
		select.onclick = function(e){
			
			var x = e.offsetX || e.layerX,
				y = e.offsetY || e.layerY;
			//遍历塔的列表
			for(var i=0,l=Game.towerList.length;i<l;i++){
				//判断是否选择到了塔
				if(T.pointInRect({x:x,y:y},Game.towerList[i])){
					//画出范围
					Info.drawScope(Game.towerList[i]);
					
					if(Game.nowSelectTower){
						//升级或卖掉
						Info.upgradeOrSell(x,y);
					}
					
					Game.nowSelectTower = Game.towerList[i];
					
					break;
				}
			}
			//没有选中,清除
			if(i == l){
				Canvas.clear(Game.canvasList.select,500,500);
				
				Game.nowSelectTower = null;
			}
		}
		
	}
 //重新开始
    restart : function(){
        
        this.stop();
        
        this.towerList = [];
        this.enemyList = [];
        this.bulletList = [];
        this.mission = 0;
        this.missionEnemey = 0;
        this.missionLazy = 2000;
        this.enemyLazy = 0;
        this.nowSelectTower = null;
        
        Info.score = 100;
        Info.life = 10;
        Info.mission = 1;
        Info.installTower = {};
        
        Canvas.clear(this.canvasList.map,500,500);
        Canvas.clear(this.canvasList.main,500,500);
        Canvas.clear(this.canvasList.tower,500,500);
        Canvas.clear(this.canvasList.select,500,500);
        
        Info.redraw();
        
        this.start();
    },
    //停止
	stop : function(){
		
		clearInterval(this.timer);
	},
    //结束
	over : function(){
		this.stop();
		alert("你输了!");
	},
    //赢了
	win : function(){
		this.stop();
		alert("你赢了!");
	}

项目源码:

项目源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内容索引:脚本资源,HTML,网页游戏,魔   运行方法:进入 src 或 build 目录,用浏览器(如IE9)打开 td.html 即可运行。   请注意,IE8不能运行本游戏,你必需按以上要求运行。   相关的技术说明:   1.本游戏完全使用 HTML5 / JavaScript / CSS 实现,没有用到 Flash、SilverLight 等技术。   2.这一个版本没有用到图片,游戏中的所有物品都是使用 HTML5 画出来的。   3.这一个版本部分地方为 IE9 做了专门的优化,可正常运行在 IE9 下。   脚本及资源目录说明:   /build 压缩后的可发布的文件   /screenshorts 屏幕截图   /src 源码   /css 样式表   /js JavaScripts 源文件   /tools 小工具、脚本      作弊方法:为方便测试,本游戏内置了几个作弊方法,如下:   1.增加 100 万金钱:[removed]_TD.cheat="money+";void(0);   2.难度增倍:[removed]_TD.cheat="difficulty+";void(0);   3.难度减半:[removed]_TD.cheat="difficulty-";void(0);   4.生命值恢复:[removed]_TD.cheat="life+";void(0);   5.生命值降为最低:[removed]_TD.cheat="life-";void(0);   在浏览器地址栏输入上面的“[removed]...;”并回车,即可实现作弊。   注意,以上作弊方法主要是为测试设计,正常游戏过程中请酌情使用,否则可能会降低游戏乐趣。   更新历史:   2010-12-29 根据网友建议,增加生命自动恢复功能(每隔 5 波生命恢复 5 点,每隔 10 波生命恢复 10 点)。调整参数,减小了激光枪的射程,增强了重机枪的威力。(v0.1.12)。   2010-12-18 添加新武器“激光枪”(v0.1.8.0)。   2010-12-12 暂停图片资源版本分支的开发,继续优化、开发圈圈版(v0.1.7.0)。   2010-11-28 第一个图片资源版本(v0.2.1.3267)。   2010-11-23 发布 圈圈版(v0.1.6.2970)。   2010-11-14 线上发布第一个版本。   2010-11-11 开始编写这个游戏

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值