package com.basic.study.tank.tank1;
import java.awt.*;
import java.util.Vector;
/**
* @author hu
* @version 1.0
* 父类
*/
public class Tank {
private int x, y;//坦克的xy坐标
private int direct;//0 上,1右 2下 3左
private int speed = 1;//坦克速度
private boolean isLive = true; //坦克存活状态
Vector<EnemyTank> list = EnemyTank.list;
public boolean isLive() { // 返回坦克状态
return isLive;
}
public void setLive(boolean live) { //设置坦克状态
isLive = live;
}
/**
* 以下方法分别返回坦克的横纵坐标以及方向,或者是设置
*
* @return
*/
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getDirect() {
return direct;
}
public void setDirect(int direct) {
this.direct = direct;
}
public void reverseDirect() {
switch (this.getDirect()) {
case 0 :
this.setDirect(2);
break;
case 1:
this.setDirect(3);
break;
case 2:
this.setDirect(0);
case 3:
this.setDirect(1);
}
}
public Tank(int x, int y) {
this.x = x;
this.y = y;
}
/**
* 坦克移动,上下左右
*/
public void moveUp() {
this.setDirect(0);
y -= speed;
}
public void moveDown() {
this.setDirect(2);
y += speed;
}
public void moveLeft() {
this.setDirect(3);
x -= speed;
}
public void moveRight() {
this.setDirect(1);
x += speed;
}
public int getSpeed() {
return speed;
} //返回坦克速度
public void setSpeed(int speed) {
this.speed = speed;
}
public boolean tankP() {
// 重叠 0 上,1右 2下 3左,由于时间问题,未完善,可使用up主韩顺平的代码
// switch (this.getDirect()) {
// case 0:
// case 2:
// for (int i = 0; i < list.size(); i++) {
// EnemyTank tank = list.get(i);
// if (tank != this) {
// switch (tank.getDirect()) {
// case 0:
// case 2:
// if (tank.getX() >= this.getX() - 40 && tank.getX() <= this.getX() + 40) {
// if (tank.getY() >= this.getY() && tank.getY() <= this.getY() + 60) {
// return true;
// }
// if (tank.getY() <= this.getY() && tank.getY() + 60 >= this.getY()) {
// return true;
// }
// }
// break;
// case 1:
// case 3:
// if (tank.getX() >= this.getX() - 60 && tank.getX() <= this.getX() + 40) {
// if (tank.getY() > this.getY() && tank.getY() < this.getY() + 60) {
// return true;
// }
// if (tank.getY() <= this.getY() && tank.getY() + 40 >= this.getY()) {
// return true;
// }
// }
// break;
// }
// }
// }
// break;
// case 1:
// case 3:
// for (int j = 0; j < list.size(); j++) {
// EnemyTank tank = list.get(j);
// if (tank != this) {
// switch (tank.getDirect()) {
// case 0:
// case 2:
// if (tank.getX() >= this.getX() - 40 && tank.getX() <= this.getX() + 60) {
// if (tank.getY() > this.getY() && tank.getY() < this.getY() + 40) {
// return true;
// } else if (tank.getY() <= this.getY() && tank.getY() + 60 >= this.getY()) {
// return true;
// }
// }
// break;
// case 1:
// case 3:
// if (tank.getX() >= this.getX() - 60 && tank.getX() <= this.getX() + 60) {
// if (tank.getY() >= this.getY() && tank.getY() <= this.getY() + 40) {
// return true;
// }
// if (tank.getY() <= this.getY() && tank.getY() + 40 >= this.getY()) {
// return true;
// }
// }
// break;
// }
// break;
// }
//
// }
// }
// return false;
//判断当前敌人坦克(this) 方向
switch (this.getDirect()) {
case 0: //上
//让当前敌人坦克和其它所有的敌人坦克比较
for (int i = 0; i < list.size(); i++) {
//从vector 中取出一个敌人坦克
EnemyTank enemyTank = list.get(i);
//不和自己比较
if (enemyTank != this) {
//如果敌人坦克是上/下
//老韩分析
//1. 如果敌人坦克是上/下 x的范围 [enemyTank.getX(), enemyTank.getX() + 40]
// y的范围 [enemyTank.getY(), enemyTank.getY() + 60]
if (enemyTank.getDirect() == 0 || enemyTank.getDirect() == 2) {
//2. 当前坦克 左上角的坐标 [this.getX(), this.getY()]
if (this.getX() >= enemyTank.getX()
&& this.getX() <= enemyTank.getX() + 40
&& this.getY() >= enemyTank.getY()
&& this.getY() <= enemyTank.getY() + 60) {
return true;
}
//3. 当前坦克 右上角的坐标 [this.getX() + 40, this.getY()]
if (this.getX() + 40 >= enemyTank.getX()
&& this.getX() + 40 <= enemyTank.getX() + 40
&& this.getY() >= enemyTank.getY()
&& this.getY() <= enemyTank.getY() + 60) {
return true;
}
}
//如果敌人坦克是 右/左
//老韩分析
//1. 如果敌人坦克是右/左 x的范围 [enemyTank.getX(), enemyTank.getX() + 60]
// y的范围 [enemyTank.getY(), enemyTank.getY() + 40]
if (enemyTank.getDirect() == 1 || enemyTank.getDirect() == 3) {
没有合适的资源?快使用搜索试试~ 我知道了~
TankBattle (Java坦克大战)
共9个文件
java:9个
需积分: 1 0 下载量 67 浏览量
2024-04-13
22:18:24
上传
评论
收藏 10KB ZIP 举报
温馨提示
坦克大作战”是一款基于 Java 编程语言开发的经典坦克对战游戏项目。该项目旨在通过编程实现一个具有挑战性和趣味性的游戏,让玩家在游戏中体验激烈的坦克对战乐趣。 游戏的核心玩法是玩家操控自己的坦克,与多个由电脑控制的敌方坦克进行对战。玩家可以通过键盘控制坦克的移动和射击,利用智慧和技巧来躲避敌方坦克的攻击并消灭它们。游戏中的坦克和子弹等元素都被抽象为对象,通过多线程实现了游戏的动态效果,使得玩家可以感受到真实的战斗氛围。 在游戏设计中,碰撞检测和移动逻辑起着重要的作用。玩家的坦克需要及时做出反应,避开敌方坦克和子弹的攻击,同时找到合适的时机进行反击。游戏的难度逐渐增加,考验玩家的反应能力和战术思维。 此外,项目还提供了记录功能,能够保存上一局游戏的信息,包括玩家的得分、击败敌方坦克数量等。这为玩家提供了更好的游戏体验,让他们可以随时回顾自己的游戏成绩,并与其他玩家进行比较。 总的来说,“坦克大作战”项目简洁而实用,展现了经典坦克对战游戏的核心玩法。它不仅适合作为 Java 编程初学者的练手项目,还能够为喜爱游戏开发的玩家提供一定的参考价值
资源推荐
资源详情
资源评论
收起资源包目录
tank1.zip (9个子文件)
tank1
EnemyTank.java 4KB
Recorder.java 2KB
Node.java 678B
MyJframe.java 2KB
Tank.java 18KB
MyTank.java 843B
MyPanel.java 11KB
Boom.java 964B
Shoot.java 2KB
共 9 条
- 1
资源评论
想做大学士
- 粉丝: 36
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功