火柴人版王者-Java
- 其他
- 2025-07-21 19:23:57

主类 package com.sxt; import com.sxt.beast.Beast; import java.awt.Component; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.image.ImageObserver; import java.util.ArrayList; import javax.swing.JButton; import javax.swing.JFrame; public class GameFrame extends JFrame { int state = 0; private int windowWidth = 1400; private int windowHeight = 700; private Image offScreenImage = null; private Image attack = Toolkit.getDefaultToolkit().getImage("img/attack.jpg"); private Image gameWin = Toolkit.getDefaultToolkit().getImage("img/gameWin.png"); private Image gameLose = Toolkit.getDefaultToolkit().getImage("img/gameLose.png"); Background background = new Background(this); Champion player; Champion champion = new ChampionHouyi(this, 700, 3800); MinionBlue mb = new MinionBlue(this); MinionRed mr = new MinionRed(this); Turret turret = new Turret(this); public Beast beast = new Beast(this); JButton attackButton; public ArrayList<GameObject> objList = new ArrayList(); ArrayList<GameObject> redList = new ArrayList(); ArrayList<GameObject> blueList = new ArrayList(); public ArrayList<GameObject> removeList = new ArrayList(); public GameFrame() { } public void launch() { this.setSize(this.windowWidth, this.windowHeight); this.setLocationRelativeTo((Component)null); this.setDefaultCloseOperation(3); this.setResizable(false); this.setTitle("尚学堂王者荣耀"); this.setVisible(true); this.addKeyListener(new KeyMonitor()); this.objList.add(this.background); this.objList.addAll(this.turret.turretList); this.objList.addAll(this.beast.beastList); this.blueList.add((GameObject)this.turret.turretList.get(0)); this.redList.add((GameObject)this.turret.turretList.get(4)); this.attackButton = new JButton(); this.attackButton.setSize(130, 132); this.attackButton.setLocation(1150, 430); this.attackButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { GameFrame.this.player.attack(GameFrame.this.redList); } }); this.add(this.attackButton); while(true) { if (this.state == 1) { this.turret.addTurret(); } this.repaint(); try { Thread.sleep(17L); } catch (Exception var2) { var2.printStackTrace(); } } } public void paint(Graphics g) { if (this.offScreenImage == null) { this.offScreenImage = this.createImage(5984, 4452); } Graphics gImage = this.offScreenImage.getGraphics(); int i; if (this.state == 0) { for(i = 0; i < this.champion.championList.size(); ++i) { Image classical = ((Champion)this.champion.championList.get(i)).classical; gImage.drawImage(classical, i * 160, 20, (ImageObserver)null); JButton championButton = new JButton(); championButton.setSize(150, 150); championButton.setLocation(i * 150, 0); int finalI = i; championButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { GameFrame.this.state = 1; GameFrame.this.player = (Champion)GameFrame.this.champion.championList.get(finalI); GameFrame.this.objList.add(GameFrame.this.player); GameFrame.this.player.addButton(); } }); this.add(championButton); } } else if (this.state == 1) { for(i = 0; i < this.objList.size(); ++i) { ((GameObject)this.objList.get(i)).paintSelf(gImage); } gImage.drawImage(this.attack, this.player.getX() + 500, this.player.getY() + 100, (ImageObserver)null); this.objList.removeAll(this.removeList); } else if (this.state == 2) { gImage.drawImage(this.gameWin, 0, 5, (ImageObserver)null); } else if (this.state == 3) { gImage.drawImage(this.gameLose, 0, 5, (ImageObserver)null); } if (this.state != 1) { g.drawImage(this.offScreenImage, 0, 0, (ImageObserver)null); } else { g.drawImage(this.offScreenImage, -this.player.getX() + 700, -this.player.getY() + 350, (ImageObserver)null); } this.requestFocus(); } public static void main(String[] args) { GameFrame gameFrame = new GameFrame(); gameFrame.launch(); } private class KeyMonitor extends KeyAdapter { private KeyMonitor() { } public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); GameFrame.this.player.keyPressed(e); } public void keyReleased(KeyEvent e) { int key = e.getKeyCode(); GameFrame.this.player.keyReleased(e); } } } GameObject 包 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt; import com.sxt.beast.Beast; import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import java.awt.Rectangle; import java.awt.Toolkit; import java.util.ArrayList; import java.util.Iterator; public abstract class GameObject { private int x; private int y; private Image img; public GameFrame gameFrame; private int spd; private int hp; private int currentHp; private GameObject target; private boolean hasTarget = false; private int dis; private int attackCoolDownTime; private boolean attackCoolDown = true; private boolean alive = true; boolean beControlled = false; public GameObject(GameFrame gameFrame) { this.gameFrame = gameFrame; } public GameObject(int x, int y, GameFrame gameFrame) { this.x = x; this.y = y; this.gameFrame = gameFrame; } public GameObject() { } public void addHp(Graphics g, int difX, int difY, int width, int height, Color color) { g.setColor(Color.black); g.drawRect(this.getX() - difX, this.getY() - difY, width, height); g.setColor(color); g.fillRect(this.getX() - difX, this.getY() - difY, width * this.getCurrentHp() / this.getHp(), height); } public double getDis(int x1, int y1, int x2, int y2) { return Math.sqrt(Math.pow((double)(x1 - x2), 2.0) + Math.pow((double)(y1 - y2), 2.0)); } public boolean recIntersectsRec(Rectangle r1, Rectangle r2) { return r1.intersects(r2); } public boolean recIntersectsCir(Rectangle rec, int x, int y, int r) { return this.getDis(x, y, rec.x, rec.y) < (double)r || this.getDis(x, y, rec.x, rec.y + rec.height) < (double)r || this.getDis(x, y, rec.x + rec.width, rec.y) < (double)r || this.getDis(x, y, rec.x + rec.width, rec.y + rec.height) < (double)r; } public void attack(ArrayList<GameObject> gameObjList) { if (this.hasTarget) { if (!this.recIntersectsCir(this.target.getRec(), this.getX(), this.getY(), this.getDis())) { this.setHasTarget(false); } else if (!this.target.isAlive()) { this.setHasTarget(false); } else if (this.isAttackCoolDown() && this.isAlive()) { Bullet bullet = null; if (Turret.class.isAssignableFrom(this.getClass())) { bullet = new Bullet(this.gameFrame, this, this.getTarget(), 500, 50); } else if (Minion.class.isAssignableFrom(this.getClass())) { bullet = new Bullet(this.gameFrame, this, this.getTarget(), 50, 30); } else if (this instanceof Champion) { bullet = new Bullet(this.gameFrame, this, this.getTarget(), 500, 50, "img/bullet.gif"); } this.gameFrame.objList.add(bullet); (new AttackCD()).start(); } } else { Iterator var3 = gameObjList.iterator(); GameObject obj; while(var3.hasNext()) { obj = (GameObject)var3.next(); if (this.recIntersectsCir(obj.getRec(), this.getX(), this.getY(), this.getDis())) { this.setTarget(obj); this.setHasTarget(true); break; } } if (!this.hasTarget && gameObjList == this.gameFrame.blueList) { if (this.recIntersectsCir(this.gameFrame.player.getRec(), this.getX(), this.getY(), this.getDis())) { this.setTarget(this.gameFrame.player); this.setHasTarget(true); } } else { var3 = this.gameFrame.beast.beastList.iterator(); while(var3.hasNext()) { obj = (GameObject)var3.next(); if (this.recIntersectsCir(obj.getRec(), this.getX(), this.getY(), this.getDis())) { this.setTarget(obj); this.setHasTarget(true); break; } } } } } public abstract void paintSelf(Graphics var1); public abstract Rectangle getRec(); public int getX() { return this.x; } public void setX(int x) { this.x = x; } public int getY() { return this.y; } public void setY(int y) { this.y = y; } public Image getImg() { return this.img; } public void setImg(String img) { this.img = Toolkit.getDefaultToolkit().getImage(img); } public int getSpd() { return this.spd; } public void setSpd(int spd) { this.spd = spd; } public int getHp() { return this.hp; } public void setHp(int hp) { this.hp = hp; } public int getCurrentHp() { return this.currentHp; } public void setCurrentHp(int currentHp) { if (currentHp < this.getHp() && Beast.class.isAssignableFrom(this.getClass())) { System.out.println("yes"); this.setTarget(this.gameFrame.player); this.setHasTarget(true); } this.currentHp = currentHp; } public GameObject getTarget() { return this.target; } public void setTarget(GameObject target) { this.target = target; } public boolean isHasTarget() { return this.hasTarget; } public void setHasTarget(boolean hasTarget) { this.hasTarget = hasTarget; } public int getDis() { return this.dis; } public void setDis(int dis) { this.dis = dis; } public int getAttackCoolDownTime() { return this.attackCoolDownTime; } public void setAttackCoolDownTime(int attackCoolDownTime) { this.attackCoolDownTime = attackCoolDownTime; } public boolean isAttackCoolDown() { return this.attackCoolDown; } public void setAttackCoolDown(boolean attackCoolDown) { this.attackCoolDown = attackCoolDown; } public boolean isAlive() { return this.alive; } public void setAlive(boolean alive) { this.alive = alive; } class AttackCD extends Thread { AttackCD() { } public void run() { GameObject.this.setAttackCoolDown(false); try { Thread.sleep((long)GameObject.this.attackCoolDownTime); } catch (Exception var2) { var2.printStackTrace(); } GameObject.this.setAttackCoolDown(true); this.stop(); } } } Minion类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt; import java.awt.Color; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.image.ImageObserver; import java.util.ArrayList; import java.util.Iterator; public abstract class Minion extends GameObject { private boolean nextMinion = true; private boolean nextLine = true; private int minionCount = 0; private boolean ifFindTarget = false; public Minion(GameFrame gameFrame) { super(gameFrame); this.setHp(800); this.setCurrentHp(this.getHp()); this.setDis(100); this.setAttackCoolDownTime(2000); } public abstract void move(ArrayList<GameObject> var1); public boolean hitMinion(int x, int y, ArrayList<GameObject> objList) { Rectangle r = new Rectangle(x - 16, y - 16, 45, 45); Iterator var6 = objList.iterator(); GameObject obj; do { if (!var6.hasNext()) { return false; } obj = (GameObject)var6.next(); } while(obj.getClass() != this.getClass() || obj == this || !r.intersects(obj.getRec())); return true; } public void findTarget(ArrayList<GameObject> objList) { Iterator var3 = objList.iterator(); while(var3.hasNext()) { GameObject obj = (GameObject)var3.next(); if (this.recIntersectsCir(obj.getRec(), this.getX(), this.getY(), 200)) { this.setTarget(obj); this.setIfFindTarget(true); } } if (objList == this.gameFrame.blueList && this.recIntersectsCir(this.gameFrame.player.getRec(), this.getX(), this.getY(), 200)) { this.setTarget(this.gameFrame.player); this.setIfFindTarget(true); } } public void moveToTarget() { double dis = this.getDis(this.getX(), this.getY(), this.getTarget().getX(), this.getTarget().getY()); int xSpeed = (int)((double)(this.getSpd() * (this.getTarget().getX() - this.getX())) / dis); int ySpeed = (int)((double)(this.getSpd() * (this.getTarget().getY() - this.getY())) / dis); if (!this.hitMinion(this.getX() + xSpeed, this.getY(), this.gameFrame.objList)) { this.setX(this.getX() + xSpeed); } if (!this.hitMinion(this.getX(), this.getY() + ySpeed, this.gameFrame.objList)) { this.setY(this.getY() + ySpeed); } } public void createMinion(GameFrame gameFrame, ArrayList<GameObject> minionList) { if (this.nextLine) { if (this.nextMinion) { if (minionList == this.gameFrame.blueList) { MinionBlue mb = new MinionBlue(gameFrame); gameFrame.objList.add(mb); minionList.add(mb); } else { MinionRed mr = new MinionRed(gameFrame); gameFrame.objList.add(mr); minionList.add(mr); } ++this.minionCount; (new NextMinion()).start(); } if (this.minionCount == 3) { this.minionCount = 0; (new NextLine()).start(); } } } public void paintSelf(Graphics g) { if (this.getCurrentHp() <= 0) { this.setAlive(false); this.gameFrame.removeList.add(this); if (this instanceof MinionBlue) { this.gameFrame.blueList.remove(this); } else { this.gameFrame.redList.remove(this); } } else { if (this instanceof MinionBlue) { this.addHp(g, 17, 28, 45, 10, Color.GREEN); } else { this.addHp(g, 17, 28, 45, 10, Color.RED); } g.drawImage(this.getImg(), this.getX() - 16, this.getY() - 16, (ImageObserver)null); if (!this.beControlled) { if (this instanceof MinionBlue) { this.move(this.gameFrame.redList); } else { this.move(this.gameFrame.blueList); } } } } public Rectangle getRec() { return new Rectangle(this.getX() - 16, this.getY() - 16, 45, 45); } public boolean isIfFindTarget() { return this.ifFindTarget; } public void setIfFindTarget(boolean ifFindTarget) { this.ifFindTarget = ifFindTarget; } class NextLine extends Thread { NextLine() { } public void run() { Minion.this.nextLine = false; try { Thread.sleep(15000L); } catch (Exception var2) { var2.printStackTrace(); } Minion.this.nextLine = true; this.stop(); } } class NextMinion extends Thread { NextMinion() { } public void run() { Minion.this.nextMinion = false; try { Thread.sleep(1500L); } catch (Exception var2) { var2.printStackTrace(); } Minion.this.nextMinion = true; this.stop(); } } } MinionBlue类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt; import java.util.ArrayList; public class MinionBlue extends Minion { public MinionBlue(GameFrame gameFrame) { super(gameFrame); this.setImg("img/minion/blue.jpg"); this.setX(1325); this.setY(3750); } public void move(ArrayList<GameObject> objList) { if (this.isIfFindTarget()) { if (!this.recIntersectsCir(this.getTarget().getRec(), this.getX(), this.getY(), 200)) { this.setIfFindTarget(false); } else { if (!this.isHasTarget()) { this.moveToTarget(); } this.attack(objList); } } else { this.findTarget(objList); if (this.getX() < 4425) { this.setSpd(25); if (!this.hitMinion(this.getX() + this.getSpd(), this.getY(), this.gameFrame.blueList)) { this.setX(this.getX() + this.getSpd()); } } else if (this.getX() < 5100 && this.getX() >= 4425) { this.setSpd(20); if (!this.hitMinion(this.getX() + this.getSpd(), this.getY(), this.gameFrame.blueList)) { this.setX(this.getX() + this.getSpd()); } if (!this.hitMinion(this.getX(), this.getY() - this.getSpd(), this.gameFrame.blueList)) { this.setY(this.getY() - this.getSpd()); } } else if (this.getX() >= 4900) { this.setSpd(18); if (!this.hitMinion(this.getX(), this.getY() - this.getSpd(), this.gameFrame.blueList)) { this.setY(this.getY() - this.getSpd()); } } } } } MinionRed类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt; import java.util.ArrayList; public class MinionRed extends Minion { public MinionRed(GameFrame gameFrame) { super(gameFrame); this.setImg("img/minion/red.jpg"); this.setX(5050); this.setY(1125); } public void move(ArrayList<GameObject> objList) { if (this.isIfFindTarget()) { if (!this.recIntersectsCir(this.getTarget().getRec(), this.getX(), this.getY(), 200)) { this.setIfFindTarget(false); } else { if (!this.isHasTarget()) { this.moveToTarget(); } this.attack(objList); } } else { this.findTarget(objList); if (this.getY() < 3125) { this.setSpd(18); if (!this.hitMinion(this.getX(), this.getY() + this.getSpd(), this.gameFrame.redList)) { this.setY(this.getY() + this.getSpd()); } } else if (this.getY() < 3750 && this.getY() >= 3125) { this.setSpd(20); if (!this.hitMinion(this.getX(), this.getY() + this.getSpd(), this.gameFrame.redList)) { this.setY(this.getY() + this.getSpd()); } if (!this.hitMinion(this.getX() - this.getSpd(), this.getY(), this.gameFrame.redList)) { this.setX(this.getX() - this.getSpd()); } } else if (this.getY() >= 3750) { this.setSpd(25); if (!this.hitMinion(this.getX() - this.getSpd(), this.getY(), this.gameFrame.redList)) { this.setX(this.getX() - this.getSpd()); } } } } } Turret类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt; import java.awt.Color; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.image.ImageObserver; import java.util.ArrayList; public class Turret extends GameObject { ArrayList<Turret> turretList = new ArrayList(); public Turret turretBlueOne; public Turret turretBlueTwo; public Turret turretBlueThree; public Turret turretBlueBase; public Turret turretRedOne; public Turret turretRedTwo; public Turret turretRedThree; public Turret turretRedBase; public Turret(GameFrame gameFrame) { super(gameFrame); this.setImg("img/turret.png"); this.turretList.add(this.turretBlueOne = new TurretBlue(1860, 3790, gameFrame)); this.turretList.add(this.turretBlueTwo = new TurretBlue(2650, 3820, gameFrame)); this.turretList.add(this.turretBlueThree = new TurretBlue(3995, 3830, gameFrame)); this.turretList.add(this.turretBlueBase = new TurretBlue(1130, 3650, gameFrame)); this.turretList.add(this.turretRedOne = new TurretRed(5100, 3030, gameFrame)); this.turretList.add(this.turretRedTwo = new TurretRed(5120, 2100, gameFrame)); this.turretList.add(this.turretRedThree = new TurretRed(5060, 1570, gameFrame)); this.turretList.add(this.turretRedBase = new TurretRed(4850, 1100, gameFrame)); } public Turret(int x, int y, GameFrame gameFrame) { super(x, y, gameFrame); this.setImg("img/turret.png"); this.setHp(6000); this.setCurrentHp(this.getHp()); this.setAttackCoolDownTime(1000); this.setDis(300); } public void addTurret() { if (!this.gameFrame.turret.turretBlueOne.isAlive() && this.gameFrame.turret.turretBlueTwo.isAlive() && this.gameFrame.blueList.indexOf(this.gameFrame.turret.turretBlueTwo) == -1) { this.gameFrame.blueList.add(this.gameFrame.turret.turretBlueTwo); } if (!this.gameFrame.turret.turretBlueTwo.isAlive() && this.gameFrame.turret.turretBlueThree.isAlive() && this.gameFrame.blueList.indexOf(this.gameFrame.turret.turretBlueThree) == -1) { this.gameFrame.blueList.add(this.gameFrame.turret.turretBlueThree); } if (!this.gameFrame.turret.turretBlueThree.isAlive() && this.gameFrame.turret.turretBlueBase.isAlive() && this.gameFrame.blueList.indexOf(this.gameFrame.turret.turretBlueBase) == -1) { this.gameFrame.blueList.add(this.gameFrame.turret.turretBlueBase); } if (!this.gameFrame.turret.turretBlueBase.isAlive()) { this.gameFrame.state = 3; } if (!this.gameFrame.turret.turretRedOne.isAlive() && this.gameFrame.turret.turretRedTwo.isAlive() && this.gameFrame.redList.indexOf(this.gameFrame.turret.turretRedTwo) == -1) { this.gameFrame.redList.add(this.gameFrame.turret.turretRedTwo); } if (!this.gameFrame.turret.turretRedTwo.isAlive() && this.gameFrame.turret.turretRedThree.isAlive() && this.gameFrame.redList.indexOf(this.gameFrame.turret.turretRedThree) == -1) { this.gameFrame.redList.add(this.gameFrame.turret.turretRedThree); } if (!this.gameFrame.turret.turretRedThree.isAlive() && this.gameFrame.turret.turretRedBase.isAlive() && this.gameFrame.redList.indexOf(this.gameFrame.turret.turretRedBase) == -1) { this.gameFrame.redList.add(this.gameFrame.turret.turretRedBase); } if (!this.gameFrame.turret.turretRedBase.isAlive()) { this.gameFrame.state = 2; } } public void paintSelf(Graphics g) { if (this.getCurrentHp() <= 0) { this.setAlive(false); this.gameFrame.removeList.add(this); if (this instanceof TurretBlue) { this.gameFrame.blueList.remove(this); } else { this.gameFrame.redList.remove(this); } } else { if (this instanceof TurretBlue) { this.addHp(g, 50, 130, 100, 20, Color.GREEN); this.attack(this.gameFrame.redList); } else { this.addHp(g, 50, 130, 100, 20, Color.RED); this.attack(this.gameFrame.blueList); } g.drawImage(this.getImg(), this.getX() - 50, this.getY() - 100, (ImageObserver)null); g.drawOval(this.getX() - 300, this.getY() - 300, 600, 600); } } public Rectangle getRec() { return new Rectangle(this.getX() - 50, this.getY() - 100, 100, 180); } } TurretBlue类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt; public class TurretBlue extends Turret { public TurretBlue(GameFrame gameFrame) { super(gameFrame); } public TurretBlue(int x, int y, GameFrame gameFrame) { super(x, y, gameFrame); } } TurretRed类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt; public class TurretRed extends Turret { public TurretRed(GameFrame gameFrame) { super(gameFrame); } public TurretRed(int x, int y, GameFrame gameFrame) { super(x, y, gameFrame); } } ChampionHouyi类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt; import com.sxt.beast.Beast; import java.awt.Color; import java.awt.Graphics; import java.awt.Polygon; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.Iterator; import javax.swing.JButton; public class ChampionHouyi extends Champion { boolean ifAbilityThree = false; boolean ifAbilityTwo = false; MouseMonitor m; MouseMonitorTwo m2; Polygon p; double sin; double cos; GameObject abilityThreeTarget; boolean ifXOutside; boolean ifYOutside; int X_AbilityTwo; int Y_AbilityTwo; public ChampionHouyi(GameFrame gameFrame) { super(gameFrame); this.abilityOne = Toolkit.getDefaultToolkit().getImage("img/Houyi/abilityOne.jpg"); this.abilityTwo = Toolkit.getDefaultToolkit().getImage("img/Houyi/abilityTwo.jpg"); this.abilityThree = Toolkit.getDefaultToolkit().getImage("img/Houyi/abilityThree.jpg"); this.classical = Toolkit.getDefaultToolkit().getImage("img/Houyi/Classical.jpg"); this.coolDownTimeOne = 14000; this.coolDownTimeTwo = 10000; this.coolDownTimeThree = 28000; } public ChampionHouyi(GameFrame gameFrame, int i, int j) { super(gameFrame, i, j); } public void exit(MouseAdapter ma) { this.gameFrame.removeMouseListener(ma); } public void attack() { if (this.isAttackCoolDown()) { ArrayList<GameObject> targets = new ArrayList(); Iterator var3 = this.gameFrame.redList.iterator(); GameObject beastObj; while(var3.hasNext()) { beastObj = (GameObject)var3.next(); if (this.recIntersectsCir(beastObj.getRec(), this.getX() - 250, this.getY() - 250, 500)) { targets.add(beastObj); if (targets.size() == 3) { break; } } } var3 = this.gameFrame.beast.beastList.iterator(); while(var3.hasNext()) { beastObj = (GameObject)var3.next(); if (this.recIntersectsCir(beastObj.getRec(), this.getX() - 250, this.getY() - 250, 500)) { targets.add(beastObj); if (targets.size() == 3) { break; } } } for(int i = 0; i < targets.size(); ++i) { Bullet bullet; if (i == 0) { bullet = new Bullet(this.gameFrame, this, (GameObject)targets.get(i), 400, 50, "img/bullet.gif"); } else { bullet = new Bullet(this.gameFrame, this, (GameObject)targets.get(i), 200, 50, "img/bullet.gif"); } this.gameFrame.objList.add(bullet); } (new AttackCD()).start(); } } public void abilityTwoAttack() { Iterator var2 = this.gameFrame.objList.iterator(); while(true) { GameObject redObj; do { if (!var2.hasNext()) { return; } redObj = (GameObject)var2.next(); } while(!(redObj instanceof MinionRed) && !Beast.class.isAssignableFrom(redObj.getClass())); if (this.recIntersectsCir(redObj.getRec(), this.X_AbilityTwo - 60, this.Y_AbilityTwo - 60, 120)) { redObj.setCurrentHp(redObj.getCurrentHp() - 400); } if (this.recIntersectsCir(redObj.getRec(), this.X_AbilityTwo - 30, this.Y_AbilityTwo - 30, 60)) { redObj.setCurrentHp(redObj.getCurrentHp() - 200); } } } public void abilityThreeMove() { this.p.translate((int)(50.0 * this.cos), -((int)(50.0 * this.sin))); Iterator var2 = this.gameFrame.objList.iterator(); while(true) { GameObject redObj; do { if (!var2.hasNext()) { int var3; int[] var4; int y; int var6; if (!this.ifXOutside) { var3 = (var4 = this.p.xpoints).length; for(var6 = 0; var6 < var3; ++var6) { y = var4[var6]; if (y < 0 || y >= 5165) { this.ifXOutside = true; break; } } } if (!this.ifYOutside) { var3 = (var4 = this.p.ypoints).length; for(var6 = 0; var6 < var3; ++var6) { y = var4[var6]; if (y < 0 || y >= 4085) { this.ifYOutside = true; break; } } } return; } redObj = (GameObject)var2.next(); } while(!(redObj instanceof MinionRed) && !Beast.class.isAssignableFrom(redObj.getClass())); if (this.p.intersects(redObj.getRec())) { redObj.setCurrentHp(redObj.getCurrentHp() - 400); this.abilityThreeTarget = redObj; (new AbilityControlCD()).start(); this.ifAbilityThree = false; (new AbilityThreeCD()).start(); } } } public void abilityOne() { if (this.coolDownOne) { (new AbilityOneDuration()).start(); (new AbilityOneCD()).start(); } } public void abilityTwo() { if (this.coolDownTwo) { this.m2 = new MouseMonitorTwo(); this.gameFrame.addMouseListener(this.m2); this.X_AbilityTwo = 0; this.Y_AbilityTwo = 0; } } public void abilityThree() { if (this.coolDownThree) { this.m = new MouseMonitor(); this.p = new Polygon(); this.gameFrame.addMouseListener(this.m); this.ifAbilityThree = true; this.ifXOutside = false; this.ifYOutside = false; } } public void abilityEffect(Graphics g) { if (this.ifAbilityTwo) { System.out.println("222"); g.setColor(Color.RED); g.fillOval(this.X_AbilityTwo - 60, this.Y_AbilityTwo - 60, 120, 120); g.setColor(Color.BLACK); g.fillOval(this.X_AbilityTwo - 30, this.Y_AbilityTwo - 30, 60, 60); this.abilityTwoAttack(); this.X_AbilityTwo = 0; this.Y_AbilityTwo = 0; this.ifAbilityTwo = false; (new AbilityTwoCD()).start(); } if (this.ifAbilityThree) { System.out.println("333"); g.setColor(Color.RED); g.fillPolygon(this.p); this.abilityThreeMove(); if (this.ifXOutside || this.ifYOutside) { this.ifAbilityThree = false; this.p = new Polygon(); (new AbilityThreeCD()).start(); } } } class AbilityControlCD extends Thread { AbilityControlCD() { } public void run() { ChampionHouyi.this.abilityThreeTarget.beControlled = true; try { Thread.sleep(20000L); } catch (Exception var2) { var2.printStackTrace(); } ChampionHouyi.this.abilityThreeTarget.beControlled = false; this.stop(); } } class AbilityOneCD extends Thread { AbilityOneCD() { } public void run() { ChampionHouyi.this.coolDownOne = false; try { ChampionHouyi var10000; int one; for(one = ChampionHouyi.this.coolDownTimeOne; ChampionHouyi.this.coolDownTimeOne > 0; var10000.coolDownTimeOne -= 1000) { Thread.sleep(1000L); System.out.println("技能一冷却时间: " + ChampionHouyi.this.coolDownTimeOne / 1000); var10000 = ChampionHouyi.this; } ChampionHouyi.this.coolDownTimeOne = one; } catch (Exception var2) { var2.printStackTrace(); } ChampionHouyi.this.coolDownOne = true; this.stop(); } } class AbilityOneDuration extends Thread { AbilityOneDuration() { } public void run() { JButton substitute = ChampionHouyi.this.gameFrame.attackButton; ChampionHouyi.this.gameFrame.remove(ChampionHouyi.this.gameFrame.attackButton); JButton button = new JButton(); button.setSize(130, 132); button.setLocation(1150, 430); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ChampionHouyi.this.attack(); } }); ChampionHouyi.this.gameFrame.add(button); try { Thread.sleep(5000L); } catch (Exception var4) { var4.printStackTrace(); } ChampionHouyi.this.gameFrame.remove(button); ChampionHouyi.this.gameFrame.add(substitute); this.stop(); } } class AbilityThreeCD extends Thread { AbilityThreeCD() { } public void run() { ChampionHouyi.this.coolDownThree = false; try { for(int three = ChampionHouyi.this.coolDownTimeThree; three > 0; three -= 1000) { Thread.sleep(1000L); System.out.println("三技能冷却时间: " + three / 1000); } } catch (Exception var2) { var2.printStackTrace(); } ChampionHouyi.this.coolDownThree = true; this.stop(); } } class AbilityTwoCD extends Thread { AbilityTwoCD() { } public void run() { ChampionHouyi.this.coolDownTwo = false; try { ChampionHouyi var10000; int two; for(two = ChampionHouyi.this.coolDownTimeTwo; ChampionHouyi.this.coolDownTimeTwo > 0; var10000.coolDownTimeTwo -= 1000) { Thread.sleep(1000L); System.out.println("技能二冷却时间: " + ChampionHouyi.this.coolDownTimeTwo / 1000); var10000 = ChampionHouyi.this; } ChampionHouyi.this.coolDownTimeTwo = two; } catch (Exception var2) { var2.printStackTrace(); } ChampionHouyi.this.coolDownTwo = true; this.stop(); } } class AttackCD extends Thread { AttackCD() { } public void run() { ChampionHouyi.this.setAttackCoolDown(false); try { Thread.sleep((long)ChampionHouyi.this.getAttackCoolDownTime()); } catch (Exception var2) { var2.printStackTrace(); } ChampionHouyi.this.setAttackCoolDown(true); this.stop(); } } private class MouseMonitor extends MouseAdapter { private MouseMonitor() { } public void mousePressed(MouseEvent e) { int mouseX = e.getX(); int mouseY = e.getY(); int playerX = 700; int playerY = 350; double dis = ChampionHouyi.this.getDis(mouseX, mouseY, playerX, playerY); ChampionHouyi.this.cos = (double)(mouseX - playerX) / dis; ChampionHouyi.this.sin = (double)(-(mouseY - playerY)) / dis; int difX = (int)(60.0 * ChampionHouyi.this.sin); int difY = (int)(60.0 * ChampionHouyi.this.cos); ChampionHouyi.this.p.addPoint(ChampionHouyi.this.getX() - difX, ChampionHouyi.this.getY() - difY); ChampionHouyi.this.p.addPoint(ChampionHouyi.this.getX() + difX, ChampionHouyi.this.getY() + difY); ChampionHouyi.this.p.addPoint(ChampionHouyi.this.getX() + difX + (int)(20.0 * ChampionHouyi.this.cos), ChampionHouyi.this.getY() + difY - (int)(20.0 * ChampionHouyi.this.sin)); ChampionHouyi.this.p.addPoint(ChampionHouyi.this.getX() - difX + (int)(20.0 * ChampionHouyi.this.cos), ChampionHouyi.this.getY() - difY - (int)(20.0 * ChampionHouyi.this.sin)); ChampionHouyi.this.ifAbilityThree = true; ChampionHouyi.this.exit(this); } } private class MouseMonitorTwo extends MouseAdapter { private MouseMonitorTwo() { } public void mousePressed(MouseEvent e) { System.out.println("pressed"); int mouseX = e.getX(); int mouseY = e.getY(); int playerX = 700; int playerY = 350; double dis = ChampionHouyi.this.getDis(mouseX, mouseY, playerX, playerY); if (dis < 250.0) { ChampionHouyi.this.X_AbilityTwo = e.getX() - playerX + ChampionHouyi.this.getX(); ChampionHouyi.this.Y_AbilityTwo = e.getY() - playerY + ChampionHouyi.this.getY(); } ChampionHouyi.this.ifAbilityTwo = true; ChampionHouyi.this.exit(this); } } } ChampionDaji类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt; import com.sxt.beast.Beast; import java.awt.Color; import java.awt.Graphics; import java.awt.Polygon; import java.awt.Toolkit; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.Iterator; import java.util.Random; public class ChampionDaji extends Champion { boolean ifAbilityOne = false; boolean ifAbilityTwo = false; MouseMonitor m; Polygon p; double sin; double cos; ArrayList<GameObject> attacked; int step = 0; GameObject abilityTwoTarget; Bullet abilityTwoBullet; Bullet[] bulletList = new Bullet[]{new Bullet(), new Bullet(), new Bullet(), new Bullet(), new Bullet()}; public ChampionDaji(GameFrame gameFrame) { super(gameFrame); this.abilityOne = Toolkit.getDefaultToolkit().getImage("img/Daji/abilityOne.jpg"); this.abilityTwo = Toolkit.getDefaultToolkit().getImage("img/Daji/abilityTwo.jpg"); this.abilityThree = Toolkit.getDefaultToolkit().getImage("img/Daji/abilityThree.jpg"); this.classical = Toolkit.getDefaultToolkit().getImage("img/Daji/Classical.jpg"); this.coolDownTimeOne = 6000; this.coolDownTimeTwo = 8000; this.coolDownTimeThree = 8000; } public void exit() { this.gameFrame.removeMouseListener(this.m); } public void abilityOneMove() { this.p.translate((int)(50.0 * this.cos), -((int)(50.0 * this.sin))); Iterator var2 = this.gameFrame.objList.iterator(); while(true) { while(var2.hasNext()) { GameObject redObj = (GameObject)var2.next(); if (redObj instanceof MinionRed && this.p.intersects(redObj.getRec()) && this.attacked.indexOf(redObj) == -1) { redObj.setCurrentHp(redObj.getCurrentHp() - 400); this.attacked.add(redObj); } else if (Beast.class.isAssignableFrom(redObj.getClass()) && this.p.intersects(redObj.getRec()) && this.attacked.indexOf(redObj) == -1) { redObj.setCurrentHp(redObj.getCurrentHp() - 400); this.attacked.add(redObj); } } return; } } public void abilityOne() { if (this.coolDownOne) { this.m = new MouseMonitor(); this.p = new Polygon(); this.gameFrame.addMouseListener(this.m); this.attacked = new ArrayList(); } } public void abilityTwo() { if (this.coolDownTwo) { boolean find = false; Iterator var3 = this.gameFrame.objList.iterator(); label27: while(true) { GameObject redObj; do { if (!var3.hasNext()) { break label27; } redObj = (GameObject)var3.next(); } while(!(redObj instanceof MinionRed) && !Beast.class.isAssignableFrom(redObj.getClass())); if (this.recIntersectsCir(redObj.getRec(), this.getX(), this.getY(), 250) && redObj.isAlive()) { this.abilityTwoBullet = new Bullet(this.gameFrame, this, redObj, 250, 60, "img/Daji/abilityTwoBullet.png"); this.gameFrame.objList.add(this.abilityTwoBullet); this.abilityTwoTarget = redObj; this.ifAbilityTwo = true; find = true; break; } } if (find) { (new AbilityTwoCD()).start(); find = false; } } } public void abilityThree() { if (this.coolDownThree) { ArrayList<GameObject> targetList = new ArrayList(); for(int i = 0; i < this.gameFrame.objList.size(); ++i) { GameObject target = (GameObject)this.gameFrame.objList.get(i); if ((target instanceof MinionRed || Beast.class.isAssignableFrom(target.getClass())) && this.recIntersectsCir(target.getRec(), this.getX(), this.getY(), 250) && target.isAlive()) { targetList.add(target); } } if (targetList.size() != 0) { Random random = new Random(); for(int count = 0; count < 5; ++count) { int r = random.nextInt(targetList.size()); if (!((GameObject)targetList.get(r)).isAlive()) { GameObject substitute = (GameObject)targetList.get(r); substitute.setAlive(true); this.bulletList[count] = new Bullet(this.gameFrame, this, substitute, 250, 60, "img/Daji/abilityTwoBullet.png"); } else { this.bulletList[count] = new Bullet(this.gameFrame, this, (GameObject)targetList.get(r), 250, 60, "img/Daji/abilityTwoBullet.png"); } } (new AbilityThreeBulletCD()).start(); (new AbilityThreeCD()).start(); } } } public void abilityEffect(Graphics g) { if (this.ifAbilityOne) { g.setColor(Color.RED); g.fillPolygon(this.p); this.abilityOneMove(); ++this.step; if (this.step == 10) { this.step = 0; this.ifAbilityOne = false; } } if (this.ifAbilityTwo) { System.out.println(this.abilityTwoTarget.beControlled); if (this.abilityTwoBullet.getRec().intersects(this.abilityTwoTarget.getRec())) { (new AbilityControllCD()).start(); this.ifAbilityTwo = false; } } } class AbilityControllCD extends Thread { AbilityControllCD() { } public void run() { ChampionDaji.this.abilityTwoTarget.beControlled = true; try { Thread.sleep(20000L); } catch (Exception var2) { var2.printStackTrace(); } ChampionDaji.this.abilityTwoTarget.beControlled = false; this.stop(); } } class AbilityOneCD extends Thread { AbilityOneCD() { } public void run() { ChampionDaji.this.coolDownOne = false; try { for(int one = ChampionDaji.this.coolDownTimeOne; one > 0; one -= 1000) { Thread.sleep(1000L); System.out.println("一技能冷却时间: " + one / 1000); } } catch (Exception var2) { var2.printStackTrace(); } ChampionDaji.this.coolDownOne = true; this.stop(); } } class AbilityThreeBulletCD extends Thread { AbilityThreeBulletCD() { } public void run() { try { ChampionDaji.this.gameFrame.objList.add(ChampionDaji.this.bulletList[0]); Thread.sleep(200L); ChampionDaji.this.gameFrame.objList.add(ChampionDaji.this.bulletList[1]); Thread.sleep(200L); ChampionDaji.this.gameFrame.objList.add(ChampionDaji.this.bulletList[2]); Thread.sleep(200L); ChampionDaji.this.gameFrame.objList.add(ChampionDaji.this.bulletList[3]); Thread.sleep(200L); ChampionDaji.this.gameFrame.objList.add(ChampionDaji.this.bulletList[4]); } catch (Exception var2) { var2.printStackTrace(); } this.stop(); } } class AbilityThreeCD extends Thread { AbilityThreeCD() { } public void run() { ChampionDaji.this.coolDownThree = false; try { for(int three = ChampionDaji.this.coolDownTimeThree; three > 0; three -= 1000) { Thread.sleep(1000L); System.out.println("三技能冷却时间: " + three / 1000); } } catch (Exception var2) { var2.printStackTrace(); } ChampionDaji.this.coolDownThree = true; this.stop(); } } class AbilityTwoCD extends Thread { AbilityTwoCD() { } public void run() { ChampionDaji.this.coolDownTwo = false; try { for(int two = ChampionDaji.this.coolDownTimeTwo; two > 0; two -= 1000) { Thread.sleep(1000L); System.out.println("二技能冷却时间: " + two / 1000); } } catch (Exception var2) { var2.printStackTrace(); } ChampionDaji.this.coolDownTwo = true; this.stop(); } } private class MouseMonitor extends MouseAdapter { private MouseMonitor() { } public void mousePressed(MouseEvent e) { int mouseX = e.getX(); int mouseY = e.getY(); int playerX = 700; int playerY = 350; double dis = ChampionDaji.this.getDis(mouseX, mouseY, playerX, playerY); ChampionDaji.this.cos = (double)(mouseX - playerX) / dis; ChampionDaji.this.sin = (double)(-(mouseY - playerY)) / dis; int difX = (int)(60.0 * ChampionDaji.this.sin); int difY = (int)(60.0 * ChampionDaji.this.cos); ChampionDaji.this.p.addPoint(ChampionDaji.this.getX() - difX, ChampionDaji.this.getY() - difY); ChampionDaji.this.p.addPoint(ChampionDaji.this.getX() + difX, ChampionDaji.this.getY() + difY); ChampionDaji.this.p.addPoint(ChampionDaji.this.getX() + difX + (int)(20.0 * ChampionDaji.this.cos), ChampionDaji.this.getY() + difY - (int)(20.0 * ChampionDaji.this.sin)); ChampionDaji.this.p.addPoint(ChampionDaji.this.getX() - difX + (int)(20.0 * ChampionDaji.this.cos), ChampionDaji.this.getY() - difY - (int)(20.0 * ChampionDaji.this.sin)); ChampionDaji.this.exit(); (ChampionDaji.this.new AbilityOneCD()).start(); ChampionDaji.this.ifAbilityOne = true; } } } Champion类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt; import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.image.ImageObserver; import java.util.ArrayList; import javax.swing.JButton; public abstract class Champion extends GameObject { public boolean up; public boolean down; public boolean left; public boolean right; static String[] imgs = new String[8]; int moveCount = 1; Image abilityOne; Image abilityTwo; Image abilityThree; Image classical; int coolDownTimeOne; int coolDownTimeTwo; int coolDownTimeThree; boolean coolDownOne = true; boolean coolDownTwo = true; boolean coolDownThree = true; ArrayList<Champion> championList = new ArrayList(); static { for(int i = 1; i < 8; ++i) { imgs[i] = "img/move/" + i + ".png"; } } public Champion(GameFrame gameFrame, int x, int y) { super(gameFrame); this.setImg("img/stand.png"); this.setX(x); this.setY(y); this.setSpd(75); this.setHp(24000); this.setDis(250); this.setAttackCoolDownTime(100); this.setCurrentHp(this.getHp()); this.championList.add(new ChampionDaji(gameFrame)); this.championList.add(new ChampionHouyi(gameFrame)); } public Champion(GameFrame gameFrame) { super(gameFrame); this.setImg("img/stand.png"); this.setX(700); this.setY(3800); this.setSpd(75); this.setHp(24000); this.setDis(250); this.setAttackCoolDownTime(100); this.setCurrentHp(this.getHp()); } public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); if (key == 68) { this.right = true; } if (key == 65) { this.left = true; } if (key == 87) { this.up = true; } if (key == 83) { this.down = true; } } public void keyReleased(KeyEvent e) { int key = e.getKeyCode(); if (key == 68) { this.right = false; } if (key == 65) { this.left = false; } if (key == 87) { this.up = false; } if (key == 83) { this.down = false; } } public void move() { if (this.up) { this.setY(this.getY() - this.getSpd()); } if (this.down) { this.setY(this.getY() + this.getSpd()); } if (this.left) { this.setX(this.getX() - this.getSpd()); } if (this.right) { this.setX(this.getX() + this.getSpd()); } if (!this.up && !this.down && !this.left && !this.right) { this.setImg("img/stand.png"); } else { this.setImg(imgs[this.moveCount]); ++this.moveCount; if (this.moveCount == 8) { this.moveCount = 1; } } } public void addButton() { JButton button1 = new JButton(); button1.setSize(100, 100); button1.setLocation(1056, 513); button1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Champion.this.abilityOne(); } }); JButton button2 = new JButton(); button2.setSize(100, 100); button2.setLocation(1090, 370); button2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Champion.this.abilityTwo(); } }); JButton button3 = new JButton(); button3.setSize(100, 100); button3.setLocation(1220, 300); button3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Champion.this.abilityThree(); } }); this.gameFrame.add(button1); this.gameFrame.add(button2); this.gameFrame.add(button3); } public abstract void abilityOne(); public abstract void abilityTwo(); public abstract void abilityThree(); public abstract void abilityEffect(Graphics var1); public void paintSelf(Graphics g) { if (this.getCurrentHp() <= 0) { this.setAlive(false); this.gameFrame.removeList.add(this); } else { this.addHp(g, 30, 80, 80, 20, Color.GREEN); g.drawImage(this.abilityOne, this.getX() + 360, this.getY() + 180, (ImageObserver)null); g.drawImage(this.abilityTwo, this.getX() + 400, this.getY() + 40, (ImageObserver)null); g.drawImage(this.abilityThree, this.getX() + 520, this.getY() - 30, (ImageObserver)null); g.drawImage(this.getImg(), this.getX() - 33, this.getY() - 50, (ImageObserver)null); this.move(); this.abilityEffect(g); } } public Rectangle getRec() { return new Rectangle(this.getX() - 30, this.getY() - 60, 60, 120); } } Bullet类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt; import com.sxt.beast.Beast; import java.awt.Color; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.image.ImageObserver; public class Bullet extends GameObject { GameObject attacker; GameObject target; int ad; public Bullet(GameFrame gameFrame, GameObject attacker, GameObject target, int ad, int spd) { super(attacker.getX(), attacker.getY(), gameFrame); this.attacker = attacker; this.target = target; this.setAd(ad); this.setSpd(spd); } public Bullet(GameFrame gameFrame, GameObject attacker, GameObject target, int ad, int spd, String img) { super(attacker.getX(), attacker.getY(), gameFrame); this.attacker = attacker; this.target = target; this.setImg(img); this.setAd(ad); this.setSpd(spd); } public Bullet() { } public void move() { if (this.recIntersectsRec(this.getRec(), this.target.getRec())) { if (Beast.class.isAssignableFrom(this.target.getClass())) { this.target.setTarget(this.gameFrame.player); this.target.setHasTarget(true); } this.target.setCurrentHp(this.target.getCurrentHp() - this.getAd()); this.gameFrame.removeList.add(this); } double dis = this.getDis(this.getX(), this.getY(), this.target.getX(), this.target.getY()); int xSpeed = (int)((double)(this.getSpd() * (this.target.getX() - this.getX())) / dis); int ySpeed = (int)((double)(this.getSpd() * (this.target.getY() - this.getY())) / dis); this.setX(this.getX() + xSpeed); this.setY(this.getY() + ySpeed); } public void paintSelf(Graphics g) { g.drawImage(this.getImg(), this.getX() - 16, this.getY() - 16, (ImageObserver)null); if (this.getImg() == null) { g.setColor(Color.BLACK); g.fillOval(this.getX() - 5, this.getY() - 5, 10, 10); g.drawRect(this.getX() - 5, this.getY() - 5, 10, 10); } this.move(); } public Rectangle getRec() { return new Rectangle(this.getX() - 5, this.getY() - 5, 10, 10); } public int getAd() { return this.ad; } public void setAd(int ad) { this.ad = ad; } } Background类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt; import java.awt.Graphics; import java.awt.Image; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.image.ImageObserver; public class Background extends GameObject { Image bg = Toolkit.getDefaultToolkit().getImage("img/Map.jpg"); public Background(GameFrame gameFrame) { super(gameFrame); } public void paintSelf(Graphics g) { g.drawImage(this.bg, 0, 0, (ImageObserver)null); } public Rectangle getRec() { return null; } } 野怪包
beast包
Bear类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt.beast; import com.sxt.GameFrame; public class Bear extends Beast { public Bear(int x, int y, GameFrame gameFrame) { super(x, y, gameFrame); this.setImg("img/beast/bear.jpg"); this.width = 85; this.height = 112; this.setDis(65); } } Beast类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt.beast; import com.sxt.Bullet; import com.sxt.GameFrame; import com.sxt.GameObject; import java.awt.Color; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.image.ImageObserver; import java.util.ArrayList; public class Beast extends GameObject { public ArrayList<Beast> beastList = new ArrayList(); int width; int height; int initialX; int initialY; public boolean isAggressive = false; Beast beast = null; public Beast(GameFrame gameFrame) { super(gameFrame); this.beastList.add(new RedBuff(3045, 3170, gameFrame)); this.beastList.add(new Bear(2800, 2855, gameFrame)); this.beastList.add(new Bird(3570, 3380, gameFrame)); this.beastList.add(new Xiyi(4585, 2365, gameFrame)); this.beastList.add(new BlueBuff(4025, 2295, gameFrame)); this.beastList.add(new Wolf(4235, 1945, gameFrame)); } public Beast(int x, int y, GameFrame gameFrame) { super(x, y, gameFrame); this.setHp(1000); this.setCurrentHp(this.getHp()); this.setSpd(10); this.setAttackCoolDownTime(2000); this.initialX = this.getX(); this.initialY = this.getY(); this.beast = this; } public void moveToTarget() { double dis = this.getDis(this.getX(), this.getY(), this.getTarget().getX(), this.getTarget().getY()); if (dis > 500.0) { this.isAggressive = false; this.setHasTarget(false); } else { int xSpeed = (int)((double)(this.getSpd() * (this.getTarget().getX() - this.getX())) / dis); int ySpeed = (int)((double)(this.getSpd() * (this.getTarget().getY() - this.getY())) / dis); this.setX(this.getX() + xSpeed); this.setY(this.getY() + ySpeed); } } public void moveToInitialLocation() { double dis = this.getDis(this.getX(), this.getY(), this.initialX, this.initialY); if (dis < (double)this.getSpd()) { this.setX(this.initialX); this.setY(this.initialY); this.isAggressive = true; } else { int xSpeed = (int)((double)(this.getSpd() * (this.initialX - this.getX())) / dis); int ySpeed = (int)((double)(this.getSpd() * (this.initialY - this.getY())) / dis); this.setX(this.getX() + xSpeed); this.setY(this.getY() + ySpeed); } } public void move() { if (this.isHasTarget() && this.isAggressive) { if (!this.recIntersectsCir(this.getTarget().getRec(), this.getX(), this.getY(), this.getDis())) { this.moveToTarget(); } else if (this.isAttackCoolDown() && this.isAlive()) { Bullet bullet = new Bullet(this.gameFrame, this, this.getTarget(), 500, 50, "img/bullet.gif"); this.gameFrame.objList.add(bullet); (new AttackCD()).start(); } } else { this.moveToInitialLocation(); if (this.getCurrentHp() < this.getHp()) { this.setCurrentHp(this.getCurrentHp() + 100); } } } public void paintSelf(Graphics g) { if (this.getCurrentHp() <= 0) { System.out.println("beast die"); this.setAlive(false); this.gameFrame.removeList.add(this); this.gameFrame.beast.beastList.remove(this); (new ReviveCD()).start(); } else { this.addHp(g, this.width / 2, 80, this.width, 20, Color.GREEN); g.drawImage(this.getImg(), this.getX() - this.width / 2, this.getY() - this.height / 2, (ImageObserver)null); g.setColor(Color.RED); g.fillOval(this.getX(), this.getY(), 10, 10); g.drawOval(this.getX() - this.getDis(), this.getY() - this.getDis(), 2 * this.getDis(), 2 * this.getDis()); this.move(); } } public Rectangle getRec() { return new Rectangle(this.getX() - this.width / 2, this.getY() - this.height / 2, this.width, this.height); } class AttackCD extends Thread { AttackCD() { } public void run() { Beast.this.setAttackCoolDown(false); try { Thread.sleep((long)Beast.this.getAttackCoolDownTime()); } catch (Exception var2) { var2.printStackTrace(); } Beast.this.setAttackCoolDown(true); this.stop(); } } class ReviveCD extends Thread { ReviveCD() { } public void run() { try { Thread.sleep(5000L); } catch (Exception var2) { var2.printStackTrace(); } Object reviveBeast; if (Beast.this.beast instanceof RedBuff) { reviveBeast = new RedBuff(3045, 3170, Beast.this.gameFrame); } else if (Beast.this.beast instanceof Bear) { reviveBeast = new Bear(2800, 2855, Beast.this.gameFrame); } else if (Beast.this.beast instanceof Bird) { reviveBeast = new Bird(3570, 3380, Beast.this.gameFrame); } else if (Beast.this.beast instanceof Xiyi) { reviveBeast = new Xiyi(4585, 2365, Beast.this.gameFrame); } else if (Beast.this.beast instanceof BlueBuff) { reviveBeast = new BlueBuff(4025, 2295, Beast.this.gameFrame); } else { reviveBeast = new Wolf(4235, 1945, Beast.this.gameFrame); } Beast.this.gameFrame.objList.add((GameObject) reviveBeast); Beast.this.gameFrame.beast.beastList.add((Beast) reviveBeast); } } } Bird类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt.beast; import com.sxt.GameFrame; public class Bird extends Beast { public Bird(int x, int y, GameFrame gameFrame) { super(x, y, gameFrame); this.setImg("img/beast/红隼.jpg"); this.width = 122; this.height = 98; this.setDis(125); } } BlueBuff类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt.beast; import com.sxt.GameFrame; public class BlueBuff extends Beast { public BlueBuff(int x, int y, GameFrame gameFrame) { super(x, y, gameFrame); this.setImg("img/beast/blueBuff.jpg"); this.width = 142; this.height = 176; this.setDis(70); } } RedBuff类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt.beast; import com.sxt.GameFrame; public class RedBuff extends Beast { public RedBuff(int x, int y, GameFrame gameFrame) { super(x, y, gameFrame); this.setImg("img/beast/redBuff.jpg"); this.width = 103; this.height = 150; this.setDis(70); } } Wolf类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt.beast; import com.sxt.GameFrame; public class Wolf extends Beast { public Wolf(int x, int y, GameFrame gameFrame) { super(x, y, gameFrame); this.setImg("img/beast/wolf.jpg"); this.width = 145; this.height = 140; this.setDis(65); } } Xiyi类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sxt.beast; import com.sxt.GameFrame; public class Xiyi extends Beast { public Xiyi(int x, int y, GameFrame gameFrame) { super(x, y, gameFrame); this.setImg("img/beast/蜥蜴.jpg"); this.width = 111; this.height = 65; this.setDis(125); } }火柴人版王者-Java由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“火柴人版王者-Java”