写点什么

Java 实现一个坦克大战的小游戏【附源码】

作者:JavaPub
  • 2022 年 5 月 30 日
  • 本文字数:2562 字

    阅读完需:约 8 分钟

网站已经上线了 http://javapub.net.cn/


文末源码文末源码文末源码


点赞再看,养成习惯


适合人群:初级学习者和爱好者,下面有展示图。计算机毕业设计


@[toc]

1 前言

🚀获取源码,文末公众号回复【坦克】,即可。⭐欢迎点赞留言

2 正文

公众号:JavaPub

2.1 展示预览

13MB GIF 可以欣赏:https://img-blog.csdnimg.cn/img_convert/4721f22d97731adcdbc8baff4b520176.gif


<img src="https://tva1.sinaimg.cn/large/007F3CC8ly1h0ooqf5p6mg31ex0pfhdt.gif" alt="动画" width="1833" data-width="1833" data-height="915">




2.2 项目结构

2.2 主要代码展示


var Bullet = function(context,owner,type,dir){ this.ctx = context; this.x = 0; this.y = 0; this.owner = owner; //子弹的所属者 this.type = type;//1、玩家 2、敌方 this.dir = dir; this.speed = 3; this.size = 6; this.hit = false; this.isDestroyed = false; this.draw = function(){ this.ctx.drawImage(RESOURCE_IMAGE,POS["bullet"][0]+this.dir*this.size,POS["bullet"][1],this.size,this.size,this.x,this.y,this.size,this.size); this.move(); }; this.move = function(){ if(this.dir == UP){ this.y -= this.speed; }else if(this.dir == DOWN){ this.y += this.speed; }else if(this.dir == RIGHT){ this.x += this.speed; }else if(this.dir == LEFT){ this.x -= this.speed; } this.isHit(); }; /** * 碰撞检测 */ this.isHit = function(){ if(this.isDestroyed){ return; } //临界检测 if(this.x < map.offsetX){ this.x = map.offsetX; this.hit = true; }else if(this.x > map.offsetX + map.mapWidth - this.size){ this.x = map.offsetX + map.mapWidth - this.size; this.hit = true; } if(this.y < map.offsetY){ this.y = map.offsetY; this.hit = true; }else if(this.y > map.offsetY + map.mapHeight - this.size){ this.y = map.offsetY + map.mapHeight - this.size; this.hit = true; } //子弹是否碰撞了其他子弹 if(!this.hit){ if(bulletArray != null && bulletArray.length > 0){ for(var i=0;i<bulletArray.length;i++){ if(bulletArray[i] != this && this.owner.isAI != bulletArray[i].owner.isAI && bulletArray[i].hit == false && CheckIntersect(bulletArray[i],this,0)){ this.hit = true; bulletArray[i].hit = true; break; } } } } if(!this.hit){ //地图检测 if(bulletMapCollision(this,map)){ this.hit = true; } //是否击中坦克 if(this.type == BULLET_TYPE_PLAYER){ if(enemyArray != null || enemyArray.length > 0){ for(var i=0;i<enemyArray.length;i++){ var enemyObj = enemyArray[i]; if(!enemyObj.isDestroyed && CheckIntersect(this,enemyObj,0)){ CheckIntersect(this,enemyObj,0); if(enemyObj.lives > 1){ enemyObj.lives --; }else{ enemyObj.distroy(); } this.hit = true; break; } } } }else if(this.type == BULLET_TYPE_ENEMY){ if(player1.lives > 0 && CheckIntersect(this,player1,0)){ if(!player1.isProtected && !player1.isDestroyed){ player1.distroy(); } this.hit = true; }else if(player2.lives > 0 && CheckIntersect(this,player2,0)){ if(!player2.isProtected && !player2.isDestroyed){ player2.distroy(); } this.hit = true; } } } if(this.hit){ this.distroy(); } }; /** * 销毁 */ this.distroy = function(){ this.isDestroyed = true; crackArray.push(new CrackAnimation(CRACK_TYPE_BULLET,this.ctx,this)); if(!this.owner.isAI){ BULLET_DESTROY_AUDIO.play(); } }; };
复制代码



2.3 按钮操作


var CrackAnimation = function(type,context,crackObj){ this.times = 0; this.ctx = context; this.frame = 0; this.x = 0; this.y = 0; this.posName = ""; this.size = 0; this.isOver = false; this.tempDir = 1; this.owner = crackObj; if(type == CRACK_TYPE_TANK){ this.posName = "tankBomb"; this.size = 66; this.frame = 4; }else{ this.posName = "bulletBomb"; this.size = 32; this.frame = 3; } this.x = crackObj.x + (parseInt(crackObj.size - this.size)/2); this.y = crackObj.y + (parseInt(crackObj.size - this.size)/2); this.draw = function(){ var gaptime = 3; var temp = parseInt(this.times/gaptime); this.ctx.drawImage(RESOURCE_IMAGE,POS[this.posName][0]+temp*this.size,POS[this.posName][1],this.size,this.size,this.x,this.y,this.size,this.size); this.times += this.tempDir; if(this.times > this.frame * gaptime - parseInt(gaptime/2)){ this.tempDir = -1; } if(this.times <= 0){ this.isOver = true; } };};
复制代码


获取源码,公众号回复【坦克】,即可。更多最新 Java 面试题加群、见群公告。~


不会还有人没 点赞 + 关注 + 收藏 吧!


系列推荐:

Java 实现 捕鱼达人 小游戏【附源码】


Java 实现 贪吃蛇 小游戏【附源码】


Java 实现 1024 小游戏【附源码】


Java实现一个坦克大战的小游戏【附源码】


Java实现一个打飞机的小游戏【附源码】


Java 实现 植物大战僵尸 小游戏【附源码】


项目源码获取方法


点赞本文,然后私信我,我免费分享给你哈~



发布于: 刚刚阅读数: 3
用户头像

JavaPub

关注

原创技术公众号:JavaPub 2018.12.02 加入

原创技术公众号:JavaPub | 限时免费领取原创PDF

评论

发布
暂无评论
Java实现一个坦克大战的小游戏【附源码】_JavaPub_InfoQ写作社区