You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tank/src/main/java/com/msb/model/GameModel.java

102 lines
3.0 KiB

package com.msb.model;/**
* @Author bingor
* @Date 2022/10/10 16:30
* @Description: com.msb.model
* @Version: 1.0
*/
import com.msb.base.PropertyMgr;
import com.msb.chain.ColliderChain;
import com.msb.enums.DirEnum;
import com.msb.enums.GroupEnum;
import com.msb.factorys.CircleFactory;
import com.msb.factorys.DefaultFactory;
import com.msb.factorys.abstracts.GameFactory;
import com.msb.inter.impl.BulletTankCollider;
import com.msb.inter.impl.TankTankCollider;
import com.msb.model.abstracts.BaseExplode;
import com.msb.model.abstracts.GameObject;
import java.awt.*;
import java.util.ArrayList;
import java.util.List;
/**
*@ClassName GameModel
*@Description TODO
*@Author bingor
*@Date 2022/10/10 16:30
*@Version 3.0
*/
public class GameModel {
Tank myTank = new Tank(100, 500, DirEnum.RIGHT, GroupEnum.GOOD, this);
/*
public List<Bullet> bullets = new ArrayList<>();
public List<Tank> tanks = new ArrayList<>(); //敌方坦克
public List<Explode> explodes = new ArrayList<>(); //爆炸效果
*/
public List<GameObject> gameObjects = new ArrayList<>();
private ColliderChain colliderChain = new ColliderChain();
// public GameFactory gameFactory = new DefaultFactory();
public GameModel() {
int initTankCount = Integer.parseInt(PropertyMgr.getString("initTankCount"));
//创建5个敌方坦克
for (int i=0; i<initTankCount; i++) {
// tankFrame.tanks.add(new Tank(100 + i*80, 100, DirEnum.valueOf(random.nextInt(30)%4), GroupEnum.BAD, tankFrame));
this.gameObjects.add(new Tank(100 + i*120, 100, DirEnum.DOWN, GroupEnum.BAD, this));
}
}
public void paint(Graphics g) {
Color color = g.getColor();
g.setColor(Color.WHITE);
/*g.drawString("子弹的数量:" + bullets.size(), 10, 60);
g.drawString("敌方坦克数量:" + tanks.size(), 10, 90);
g.drawString("爆炸的数量:" + explodes.size(), 10, 120);*/
g.setColor(color);
myTank.paint(g);
// explode.paint(g);
//画出敌方坦克
/*for (int i=0; i<tanks.size(); i++) {
tanks.get(i).paint(g);
}
//画出子弹
for (int i=0; i<bullets.size(); i++) {
bullets.get(i).paint(g);
}
//爆炸效果
for (int i=0; i<explodes.size(); i++) {
explodes.get(i).paint(g);
}*/
/*for (int i=0; i<bullets.size(); i++) {
for (int j=0; j<tanks.size(); j++) {
bullets.get(i).collide(tanks.get(j));
}
}*/
for (int i=0; i<gameObjects.size(); i++) {
gameObjects.get(i).paint(g);
}
for (int i=0; i<gameObjects.size(); i++) {
for (int j=i+1; j<gameObjects.size(); j++) {
// bullets.get(i).collide(tanks.get(j));
GameObject o1 = gameObjects.get(i);
GameObject o2 = gameObjects.get(j);
colliderChain.collide(o1, o2);
}
}
}
public Tank getMainTank() {
return myTank;
}
}