package com.tedu.model.vo;
import java.awt.Graphics;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Timer;
import javax.swing.ImageIcon;
import com.tedu.frame.MyJPanel;
import com.tedu.model.load.ElementLoad;
import com.tedu.model.manager.ElementManager;
import com.tedu.model.manager.MoveType;
import com.tedu.model.manager.TypeMove;
import com.tedu.thread.GameMusic;
public class Enemy extends SuperElement {
private ImageIcon img;
private GameMusic gameMusic;
private String name;// 敌机种类
private int i = 0;// 每个死亡方法都需要的两个单独变量
private int j = 0;// 每个死亡方法都需要的两个单独变量
private static int Barrier1Hp=100;//铁桶hp
private static int Barrier2Hp=100;//木桶hp
private static int BossHp=100;//BossHP
private boolean planeboom=true;
private static boolean yesbar1=false;
private static boolean yesbar2=false;
private int barrierdie=2;
private int attack = 0;
private int save=0;
private int stand=0;
private int woodlaba=0;
private int woodstand=0;
private int givetoys=0;
private int run1=0;
private int run2=0;
private int run3=0;
// 每个动作方法用的单独变量
private boolean pk;
private int firstX;
private int a1 = 0;
private int a2 = 0;
private int a3 = 0;
private int a4 = 0;
private int a5 = 0;
private int a6 = 0;
private int a7 = 0;
private int a8 = 0;
private int a9 = 0;
private int a10 = 0;
private int a11 = 0;
private int a12 = 0;
private int a13 = 0;
private int a14 = 0;
private int a15 = 0;
private int a16 = 0;
private int a17 = 0;
private int a18 = 0;
private int a19 = 0;
private int a20 = 0;
private int a21 = 0;
private int a22 = 0;
private int a23 = 0;
private int a24 = 0;
private int a25 = 0;
private int a26 = 0;
private int a27 = 0;
private int a28 = 0;
private int a29 = 0;
private int a30 = 0;
private int a31 = 0;
private int a32 = 0;
private int a33 = 0;
private int a34 = 0;
boolean DirectionR = true;
boolean hp = true;
private int time = 0;
protected MoveType moveType = MoveType.stop;
private int bullet = 2;
private int location;
private boolean isUFO=false;
public Enemy(int x, int y, int w, int h, ImageIcon img) {
super(x, y, w, h);
this.img = img;
this.firstX = x;
setLocation(x);
}
public static Enemy createEnemey(String url) {
// 004=enemyA,enemyA,20,170,40,40,10000
String[] arr = url.split(",");
int x = Integer.parseInt(arr[2]);
int y = Integer.parseInt(arr[3]);
int w = Integer.parseInt(arr[4]);
int h = Integer.parseInt(arr[5]);
ImageIcon img = ElementLoad.getElementLoad().getMap().get(arr[0]);
Enemy enemy = null;
switch (arr[0]) {// 在配置文件中可以给与类型
case "enemyB":
enemy = new EnemyHand(x, y, w, h, img);
break;
case "enemyA":
enemy = new EnemyCannon(x, y, w, h, img);
break;
case "enemyC":
enemy = new EnemyGun(x, y, w, h, img);
break;
case "enemyD":
enemy = new EnemyTank(x, y, w, h, img);
break;
case "oderA":
enemy=new OderSit(x, y, w, h, img);
break;
case "oderB":
enemy=new OderWood(x, y, w, h, img);
break;
case "barrierB":
enemy=new Barrier1(x, y, w, h, img);
break;
case "barrierC":
enemy=new Barrier2(x, y, w, h, img);
break;
case "UFOA":
enemy=new UFO(x, y, w, h, img);
break;
case "boss":
enemy = new Boss(x, y, w, h, img);
break;
default:
enemy = new Enemy(x, y, w, h, img);
}
return enemy/* new Enemy(x,y,w,h,img) */;
}
public int getFirstX() {
return firstX;
}
public void setFirstX(int firstX) {
this.firstX = firstX;
}
@Override
public void showElement(Graphics g) {
g.drawImage(img.getImage(), getX(), getY(), getW(), getH(), null);
}
@Override
public void update() {
super.update();// 如果没有这句话,就是 重新制定新模板
// addFire();//追加
addFire();
updateImage();
}
public void updateImage() {
}
public MoveType getMoveType() {
return moveType;
}
public void setMoveType(MoveType moveType) {
this.moveType = moveType;
}
public void ufo1(){
List<SuperElement> list1 = ElementManager.getManager().getElementList("play");
Player player=(Player)list1.get(0);
if(player.getX()+600>getX())
attack++;
if(attack==7)
{ setPk(true);
attack=0;
}
if(player.getX()+500>getX())
{
if(planeboom==true)
{
gameMusic=new GameMusic("planeboom.mp3", false);
gameMusic.start();
planeboom=false;
}
setMoveType(moveType.left);
}
if(getX()<10)
setVisible(false);
}
public void bossaction() {
List<SuperElement> list1 = ElementManager.getManager().getElementList("play");
if (getBossHp()<0) {
if (list1.get(0).getX() < getX()) {
if (j < ElementLoad.getElementLoad().getPlayTop().get("bossdie").size()) {
bossdie();
j++;
}
}
if (list1.get(0).getX() >= getX()) {
if (j < ElementLoad.getElementLoad().getPlayTop().get("bossdieR").size()) {
bossdieR();
j++;
}
}
MyJPanel.setType(TypeMove.five);
} else {
if ((list1.get(0).getX() < getX()) && (list1.get(0).getX() + 200 > getX())) {
boss();
setMoveType(MoveType.left);
setDirectionR(false);
} else if ((list1.get(0).getX() >= getX()) && getX() + 200 > list1.get(0).getX()) {
bossR();
setMoveType(MoveType.right);
setDirectionR(true);
}
}
}
public void action1() {// 拿大炮的敌人所有动作(站立+惊吓+左右射击+死亡动画)
// 血量优先判断
List<SuperElement> list1 = ElementManager.getManager().getElementList("play");
if (!isHp() && (j < ElementLoad.getElementLoad().getPlayTop().get("die1").size())) {
die1();
j++;
if (j == ElementLoad.getElementLoad().getPlayTop().get("die1").size()) {
gameMusic=new GameMusic("music (10).mp3", false);
gameMusic.start();
setVisible(false);
}
} else {
if (list1.get(0).getX() < getX()) {
setDirectionR(false);
}
if (list1.get(0).getX() >= getX()) {
setDirectionR(true);
}
if (!isDirectionR()) {
if (list1.get(0).getX() + 600 <= getX()) {
setMoveType(MoveType.stop);
keepcannon();
} else if ((list1.get(0).getX() + 600 > getX()) && (list1.get(0).getX() + 500 < getX())
&& (i < ElementLoad.getElementLoad().getPlayTop().get("frightened").size())) {
setMoveType(MoveType.stop);
frightened();
i++;
} else if (list1.get(0).getX() + 200 < getX()) {
setMoveType(MoveType.left);
cannonmove();
} else if (list1.get(0).getX() + 50 < getX()) {
setMoveType(MoveType.stop);
cannonupfire();
attack++;
if(attack == 3*(ElementLoad.getElementLoad().getPlayTop().get("cannonupfire").size()-1))
{
setPk(true);
attack=0;
}
} else if (list1.get(0).getX() <= getX())
knife();
}
if (isDirectionR()) {
if (getX() + 500 <= list1.get(0).getX()) {
setMoveType(MoveType.stop);
keepcannonR();
} else if (getX() + 400 < list1.get(0).getX()) {
setMoveType(MoveType.right);
walkR();
} else if ((getX() + 400 >= list1.get(0).getX()) && (getX() + 300 < list1.get(0).getX())
&& (i < ElementLoad.getElementLoad().getPlayTop().get("frightened").size())) {
setMoveType(MoveType.stop);
frightened();
i++;
} else if (getX() + 50 < list1.get(0).getX()) {
setMoveType(MoveType.stop);
cannonupfireR();
attack++;
if(attack == 3*(ElementLoad.getElementLoad().getPlayTop().get("cannonupfireR").size()-1))
{
setPk(true);
attack=0;
}
} else if (getX() <= list1.get(0).getX())
knifeR();
}
}
}
public void action2() {// 持枪的敌人所有动作(站立持枪+惊吓+左右射击+死亡动画)
//
合金弹头.zip
需积分: 22 182 浏览量
2019-10-08
23:59:20
上传
评论
收藏 29.06MB ZIP 举报
zazaza258
- 粉丝: 1
- 资源: 11
最新资源
- 数据结构课程设计-全国交通出行咨询模拟系统C语言实现源码.zip
- cef-binary-109.0.1+gcd5e37a+chromium-109.0.5414.8-windows32
- 基于C语言的全国交通咨询系统模拟源码.zip
- 炫酷代码雨,超级炫酷哦!!!
- 基于物联网MQTT协议的智能停车场管理系统
- POETIZE个人博客系统源码 - 最美博客
- 基于深度学习的行人检测系统源码+项目说明(YoloV3+Tensorflow).zip
- 区块链系统:以比特币为基础
- 直接插入排序(Insertion Sort)是一种简单直观的排序算法.txt
- Python实现基于深度学习的预测区域电力负荷模型源码+项目说明(高分项目).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈