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.
102 lines
3.0 KiB
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;
|
|
}
|
|
}
|