import java.awt.Rectangle;
import java.util.ArrayList;
public class CollisionController {
protected final static int LEFT = 0;
protected final static int RIGHT = 1;
protected final static int UP = 2;
protected final static int DOWN = 3;
private static final int BREAKABLE = 1, UNBREAKABLE = 0, TRANSPARENT = 2;
private ArrayList<GamePlayMine>gamePlayMines;
private ArrayList<TankMine>tankMines1;
private ArrayList<TankMine>tankMines2;
private ArrayList<Shell>shellsTank1;
private ArrayList<Shell>shellsTank2;
private Tank1 tank1;
private Tank2 tank2;
private ArrayList<Health>healths;
private ArrayList<Obstacles>obstacles;
private boolean soundSelected;
CollisionController(GamePlay gamePlay){
tankMines1 = gamePlay.getTank1().getMines();
tankMines2 = gamePlay.getTank2().getMines();
shellsTank1 = gamePlay.getTank1().getShells();
shellsTank2 = gamePlay.getTank2().getShells();
gamePlayMines = gamePlay.getMines();
healths = gamePlay.getHealths();
obstacles = gamePlay.getObstacles();
tank1 = gamePlay.getTank1();
tank2 = gamePlay.getTank2();
}
public boolean isCollision(int x1, int y1, int width1, int height1,
int x2, int y2, int width2, int height2){
Rectangle r1 = new Rectangle(x1, y1, width1, height1);
Rectangle r2 = new Rectangle(x2, y2, width2, height2);
return r1.intersects(r2);
}
public void handleCollision(){
int x, x1, x2;
int y, y1, y2;
int shellWidth = Shell.getWidth();
int shellHeight = Shell.getHeight();
int tankMineHeight = TankMine.getHeight();
int tankMineWidth = TankMine.getWidth();
int gamePlayMineHeight = GamePlayMine.getHeight();
int gamePlayMineWidth = GamePlayMine.getWidth();
int healthWidth = Health.getWidth();
int healthHeight = Health.getHeight();
int obstacleWidth = Obstacles.getWidth();
int obstacleHeight = Obstacles.getHeight();
int tankWidth = tank1.getWidth();
int tankHeight = tank1.getHeight();
//shell to obstacle
for (int i = 0; i < shellsTank1.size(); i++){
x1 = shellsTank1.get(i).getPosition().x;
y1 = shellsTank1.get(i).getPosition().y;
for (int j = 0; j < obstacles.size(); j++){
x2 = obstacles.get(j).getPosition().x;
y2 = obstacles.get(j).getPosition().y;
if (isCollision(x1, y1, shellWidth, shellHeight, x2, y2, obstacleWidth, obstacleHeight)){
if (obstacles.get(j).getType() == BREAKABLE){
obstacles.get(j).explode();
if (shellsTank1.size() > 0)
shellsTank1.remove(i);
obstacles.remove(j);
}
else if (obstacles.get(j).getType() == UNBREAKABLE){
if (shellsTank1.size() > 0)
shellsTank1.remove(i);
((Unbreakable)obstacles.get(j)).animation();
}
}
}
}
for (int i = 0; i < shellsTank2.size(); i++){
x1 = shellsTank2.get(i).getPosition().x;
y1 = shellsTank2.get(i).getPosition().y;
for (int j = 0; j < obstacles.size(); j++){
x2 = obstacles.get(j).getPosition().x;
y2 = obstacles.get(j).getPosition().y;
if (isCollision(x1, y1, shellWidth, shellHeight, x2, y2, obstacleWidth, obstacleHeight)){
System.out.println("touched");
if (obstacles.get(j).getType() == BREAKABLE){
obstacles.get(j).explode();
if (shellsTank2.size() > 0)
obstacles.remove(j);
shellsTank2.remove(i);
}
else if (obstacles.get(j).getType() == UNBREAKABLE){
if (shellsTank2.size() > 0)
shellsTank2.remove(i);
((Unbreakable)obstacles.get(j)).animation();
}
}
}
}
//shells to tanks
x1 = tank1.getPosition().x;
y1 = tank1.getPosition().y;
x2 = tank2.getPosition().x;
y2 = tank2.getPosition().y;
for (int i = 0; i < shellsTank1.size(); i++){
x = shellsTank1.get(i).getPosition().x;
y = shellsTank1.get(i).getPosition().y;
if (isCollision(x, y, shellWidth, shellHeight, x2, y2, tankWidth, tankHeight)){
tank2.updateLife(-shellsTank1.get(i).getValue());
shellsTank1.remove(i);
if(!soundSelected)
tank2.shellToTankSound();
}
}
for (int i = 0; i < shellsTank2.size(); i++){
x = shellsTank2.get(i).getPosition().x;
y = shellsTank2.get(i).getPosition().y;
if (isCollision(x, y, shellWidth, shellHeight, x1, y1, tankWidth, tankHeight)){
tank1.updateLife(-shellsTank2.get(i).getValue());
shellsTank2.remove(i);
if(!soundSelected)
tank1.shellToTankSound();
}
}
//shell to TankMine
for (int i = 0; i < shellsTank1.size(); i++){
x1 = shellsTank1.get(i).getPosition().x;
y1 = shellsTank1.get(i).getPosition().y;
for (int j = 0; j < tankMines1.size(); j++){
x2 = tankMines1.get(j).getPosition().x;
y2 = tankMines1.get(j).getPosition().y;
if (isCollision(x1, y1, shellWidth, shellHeight, x2, y2, tankMineWidth, tankMineHeight)){
shellsTank1.remove(i);
tankMines1.get(j).explode();
tankMines1.remove(j);
}
}
}
for (int i = 0; i < shellsTank1.size(); i++){
x1 = shellsTank1.get(i).getPosition().x;
y1 = shellsTank1.get(i).getPosition().y;
for (int j = 0; j < tankMines2.size(); j++){
x2 = tankMines2.get(j).getPosition().x;
y2 = tankMines2.get(j).getPosition().y;
if (isCollision(x1, y1, shellWidth, shellHeight, x2, y2, tankMineWidth, tankMineHeight)){
shellsTank1.remove(i);
tankMines2.get(j).explode();
tankMines2.remove(j);
}
}
}
for (int i = 0; i < shellsTank2.size(); i++){
x1 = shellsTank2.get(i).getPosition().x;
y1 = shellsTank2.get(i).getPosition().y;
for (int j = 0; j < tankMines1.size(); j++){
x2 = tankMines1.get(j).getPosition().x;
y2 = tankMines1.get(j).getPosition().y;
if (isCollision(x1, y1, shellWidth, shellHeight, x2, y2, tankMineWidth, tankMineHeight)){
shellsTank2.remove(i);
tankMines1.get(j).explode();
tankMines1.remove(j);
}
}
}
for (int i = 0; i < shellsTank2.size(); i++){
x1 = shellsTank2.get(i).getPosition().x;
y1 = shellsTank2.get(i).getPosition().y;
for (int j = 0; j < tankMines2.size(); j++){
x2 = tankMines2.get(j).getPosition().x;
y2 = tankMines2.get(j).getPosition().y;
if (isCollision(x1, y1, shellWidth, shellHeight, x2, y2, tankMineWidth, tankMineHeight)){
shellsTank2.remove(i);
tankMines2.get(j).explode();
tankMines2.remove(j);
}
}
}
//tankMine to tank
x1 = tank1.getPosition().x;
y1 = tank1.getPosition().y;
x2 = tank2.getPosition().x;
y2 = tank2.getPosition().y;
for (int i = 0; i < tankMines1.size(); i++){
x = tankMines1.get(i).getPosition().x;
y = tankMines1.get(i).getPosition().y;
if (isCollision(x, y, tankMineWidth, tankMineHeight, x1, y1, tankWidth, tankHeight)){
tank1.updateLife(-tankMines1.get(i).getValue());
if(!soundSelected)
tank1.mineSound();
tank1.explode();
tankMines1.remove(i);
}
}
for (int i = 0; i < tankMines1.size(); i++){
x = tankMines1.get(i).getPosition().x;
y = tankMines1.get(i).getPosition().y;
if (isCollision(x, y, tankMineWidth, tankMineHeight, x2, y2, tankWidth, tankHeight)){
tank2.updateLife(-tankMines1.get(i).getValue());
if(!soundSelected)
tank2.mineSound();
tank2.explode();
tankMines1.remove(i);
}
}
for (int i = 0; i < tankMines2.size(); i++){
x = tankMines2.get(i).getPosition().x;
y = tankMines2.get(i).getPosition().y;
if (isCollision(x, y, tankMineWidth, tankMineHeight, x1, y1, tankWidth, tankHeight)){
tank1.updateLife(-tankMines2.get(i).getValue());
if(!soundSelected)
tank1.mineSound();
tank1.explode();
tankMines2.remove(i);
}
}
for (int i = 0; i < tankMines2.size(); i++){
x = tankMines2.get(i).getPosition().x;
y = tankMines2.get(i).getPosition().y;
if (isCollision(x, y, tankMineWidth, tankMineHeight, x2, y2, tankWidth, tankHeight)){
tank2.updateLife(-tankMines2.get(i).getValue());
if(!soundSelected)
tank2.mineSound();
tank2.explode();
tankMines2.remove(i);
}
}
//shell to gamePlayMin
没有合适的资源?快使用搜索试试~ 我知道了~
Java坦克大战游戏源代码
共121个文件
png:38个
class:33个
java:19个
4 下载量 189 浏览量
2023-08-29
02:56:48
上传
评论 2
收藏 204.21MB RAR 举报
温馨提示
Java坦克大战游戏源代码 关于项目 Java中的坦克大战游戏是一款简单的多人游戏对战游戏。这个游戏和之前的游戏很相似。本系统是在Eclipse IDE中制作的。此外,您需要在计算机上安装 JDK 和 JRE 才能运行它。这是一个简单而有趣的游戏。
资源推荐
资源详情
资源评论
收起资源包目录
Java坦克大战游戏源代码 (121个子文件)
CollisionController.class 10KB
StartMenu.class 9KB
GamePlay.class 8KB
Tank.class 7KB
LifeBar.class 4KB
MapController.class 4KB
Tank2.class 4KB
Tank1.class 4KB
Health.class 3KB
Mine.class 3KB
Shell.class 3KB
GamePlayMine.class 2KB
TankMine.class 1KB
Unbreakable.class 1KB
Transparent.class 1KB
Breakable.class 1KB
Ending.class 1KB
Obstacles.class 1KB
StartMenu$9.class 1KB
GamePlay$1.class 916B
GamePlayController.class 847B
StartMenu$2.class 699B
StartMenu$6.class 690B
StartMenu$5.class 690B
StartMenu$8.class 690B
StartMenu$3.class 690B
StartMenu$4.class 690B
StartMenu$7.class 690B
StartMenu$1.class 662B
Health$1.class 655B
Mine$1.class 620B
Tank$1.class 512B
StartMenu$10.class 512B
.classpath 226B
Thumbs.db 382KB
Thumbs.db 382KB
flame1.gif 361KB
flame1.gif 361KB
mineExplosion.gif 70KB
mineExplosion.gif 70KB
tankWars.jar 69.05MB
CollisionController.java 12KB
StartMenu.java 11KB
GamePlay.java 6KB
Tank.java 6KB
MapController.java 5KB
LifeBar.java 3KB
Tank2.java 3KB
Tank1.java 3KB
Shell.java 2KB
Health.java 2KB
Mine.java 2KB
GamePlayMine.java 1KB
Obstacles.java 982B
Unbreakable.java 967B
TankMine.java 908B
Breakable.java 884B
Transparent.java 859B
Ending.java 577B
GamePlayController.java 530B
screenshot-armored-aces-app-game-home.jpg 61KB
screenshot-armored-aces-app-game-home.jpg 61KB
non-breakable.jpg 46KB
non-breakable.jpg 46KB
background.jpg 33KB
background.jpg 33KB
breakable.jpg 7KB
breakable.jpg 7KB
mine.png 814KB
mine.png 814KB
gmine.png 765KB
gmine.png 765KB
flame1.png 403KB
flame1.png 403KB
heart.png 231KB
heart.png 231KB
grass.png 68KB
grass.png 68KB
tankDown.png 5KB
tankDown.png 5KB
tankRight.png 5KB
tankRight.png 5KB
tankLeft.png 5KB
tankLeft.png 5KB
tankUp.png 5KB
tankUp.png 5KB
tank2up.png 4KB
tank2up.png 4KB
tank2down.png 4KB
tank2down.png 4KB
tank2left.png 4KB
tank2left.png 4KB
tank2right.png 4KB
tank2right.png 4KB
shellUp.png 3KB
shellUp.png 3KB
shellDown.png 3KB
shellDown.png 3KB
shellLeft.png 3KB
shellLeft.png 3KB
共 121 条
- 1
- 2
资源评论
小云同志你好
- 粉丝: 1045
- 资源: 931
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功