package com.beancore.config; public enum EnemyPlaneType { SMALL_ENEMY_PLANE, BIG_ENEMY_PLANE, BOSS_ENEMY_PLANE },这段代码什么意思
时间: 2024-03-11 09:43:46 浏览: 17
这段代码定义了一个名为 EnemyPlaneType 的枚举类型,它包括三个枚举常量:SMALL_ENEMY_PLANE、BIG_ENEMY_PLANE 和 BOSS_ENEMY_PLANE。这个枚举类型可以用来表示不同类型的敌机,例如小型敌机、大型敌机和 boss 敌机。在程序中可以通过 EnemyPlaneType.SMALL_ENEMY_PLANE 这样的方式来引用枚举常量。
相关问题
#pragma once #include "Weapon.h" #include <memory> #include <vector> class HeadQuarter; class Dragon; class Ninja; class Iceman; class Lion; class Wolf; class City; enum { dragon, ninja, iceman, lion, wolf }; enum { WarriorNum = 5 }; enum { MaxWeaponNum = 10 }; class Warrior { private: virtual void doLogBirth() = 0; public: int id, lifeValue; HeadQuarter* pHeadquarter; int kind; int theAttackValue; string name; vector<shared_ptr<Weapon>> weapons; Warrior(int _kind, HeadQuarter* phq, int _id, int lv, int av); int cityID; int nowWeaponID = 0; static const string Name[WarriorNum]; static shared_ptr<Warrior> create(int _kind, HeadQuarter* phq, int _id, int lv, int av, int _k); virtual void moveForward(int time, int& isOver); void logBirth(int time); int getLifeValue()const { return lifeValue; } int getWeaponNum()const { return weapons.size(); } string getName()const { return name; } int getID()const { return id; } int getKind()const { return kind; } int getCityID()const { return cityID; } int getMaxHurt(); void WolfSteal(int time, Warrior* pEnemy); //保证偷之前weapon有序,且偷之后保持有序 virtual int LionEscape(int time) { return 0; } void oneAttack(Warrior* enemy); void sortWeapons(); void reportSituation(int time); void captureWeapon(Warrior* pEnemy); virtual ~Warrior() {} };
这是一个C++的头文件,其中定义了一个名为Warrior的类,包含了一些私有成员变量和公有成员函数。其中私有成员变量包括一个虚函数doLogBirth()、一个ID、生命值、所属阵营指针、种类、攻击值、名称、拥有的武器列表。公有成员函数包括构造函数、移动函数、记录出生函数、获取生命值、获取武器数量、获取名称、获取ID、获取种类、获取所在城市ID、获取最大攻击值、狼人偷武器函数、狮子逃跑函数、攻击函数、武器排序函数、报告状态函数、夺取武器函数和析构函数。
一份坦克大战的java代码
以下是一个简单的坦克大战游戏的 Java 代码,希望能对你有所帮助:
```java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TankWar extends JPanel implements KeyListener, Runnable {
private static final long serialVersionUID = 1L;
private JFrame frame;
private Tank playerTank;
private ArrayList<EnemyTank> enemyTanks;
private ArrayList<Explosion> explosions;
private BufferedImage offScreenImage;
private Graphics offScreenGraphics;
private boolean[] keys;
public TankWar() {
frame = new JFrame("Tank War");
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
playerTank = new Tank(400, 500, Tank.Direction.UP, true);
enemyTanks = new ArrayList<EnemyTank>();
explosions = new ArrayList<Explosion>();
for (int i = 0; i < 5; i++) {
enemyTanks.add(new EnemyTank(50 + i * 150, 50, Tank.Direction.DOWN));
}
offScreenImage = new BufferedImage(800, 600, BufferedImage.TYPE_INT_ARGB);
offScreenGraphics = offScreenImage.getGraphics();
keys = new boolean[256];
frame.addKeyListener(this);
frame.add(this);
frame.setVisible(true);
new Thread(this).start();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
offScreenGraphics.setColor(Color.WHITE);
offScreenGraphics.fillRect(0, 0, 800, 600);
playerTank.draw(offScreenGraphics);
for (EnemyTank enemyTank : enemyTanks) {
enemyTank.draw(offScreenGraphics);
}
for (Explosion explosion : explosions) {
explosion.draw(offScreenGraphics);
}
g.drawImage(offScreenImage, 0, 0, null);
}
@Override
public void keyPressed(KeyEvent e) {
keys[e.getKeyCode()] = true;
if (keys[KeyEvent.VK_SPACE]) {
playerTank.fire();
}
}
@Override
public void keyReleased(KeyEvent e) {
keys[e.getKeyCode()] = false;
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void run() {
while (true) {
playerTank.move(keys);
for (EnemyTank enemyTank : enemyTanks) {
enemyTank.move();
}
for (int i = 0; i < playerTank.getMissiles().size(); i++) {
Missile missile = playerTank.getMissiles().get(i);
missile.move();
if (missile.isOutOfBound()) {
playerTank.getMissiles().remove(missile);
i--;
} else {
for (EnemyTank enemyTank : enemyTanks) {
if (missile.hit(enemyTank)) {
playerTank.getMissiles().remove(missile);
i--;
explosions.add(new Explosion(enemyTank.getX(), enemyTank.getY()));
enemyTanks.remove(enemyTank);
break;
}
}
}
}
for (int i = 0; i < explosions.size(); i++) {
Explosion explosion = explosions.get(i);
if (explosion.isOver()) {
explosions.remove(explosion);
i--;
}
}
for (EnemyTank enemyTank : enemyTanks) {
for (int i = 0; i < enemyTank.getMissiles().size(); i++) {
Missile missile = enemyTank.getMissiles().get(i);
missile.move();
if (missile.isOutOfBound()) {
enemyTank.getMissiles().remove(missile);
i--;
} else {
if (missile.hit(playerTank)) {
enemyTank.getMissiles().remove(missile);
i--;
explosions.add(new Explosion(playerTank.getX(), playerTank.getY()));
playerTank.setAlive(false);
break;
}
}
}
if (playerTank.isAlive() && enemyTank.getRectangle().intersects(playerTank.getRectangle())) {
explosions.add(new Explosion(playerTank.getX(), playerTank.getY()));
playerTank.setAlive(false);
break;
}
}
if (enemyTanks.isEmpty()) {
System.out.println("You win!");
System.exit(0);
}
if (!playerTank.isAlive()) {
System.out.println("Game over!");
System.exit(0);
}
repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new TankWar();
}
private class Tank {
private int x;
private int y;
private Direction direction;
private boolean alive;
private Image[] images;
private int currentImageIndex;
private ArrayList<Missile> missiles;
public Tank(int x, int y, Direction direction, boolean alive) {
this.x = x;
this.y = y;
this.direction = direction;
this.alive = alive;
images = new Image[8];
for (int i = 0; i < 8; i++) {
images[i] = TankWarUtils.getImage("tank" + (i + 1) + ".png");
}
currentImageIndex = 0;
missiles = new ArrayList<Missile>();
}
public void draw(Graphics g) {
if (alive) {
g.drawImage(images[currentImageIndex], x, y, null);
} else {
g.drawImage(TankWarUtils.getImage("explosion.png"), x, y, null);
}
for (Missile missile : missiles) {
missile.draw(g);
}
}
public void move(boolean[] keys) {
int moveLength = 5;
if (keys[KeyEvent.VK_UP]) {
direction = Direction.UP;
y -= moveLength;
}
if (keys[KeyEvent.VK_DOWN]) {
direction = Direction.DOWN;
y += moveLength;
}
if (keys[KeyEvent.VK_LEFT]) {
direction = Direction.LEFT;
x -= moveLength;
}
if (keys[KeyEvent.VK_RIGHT]) {
direction = Direction.RIGHT;
x += moveLength;
}
if (x < 0) {
x = 0;
}
if (x > 750) {
x = 750;
}
if (y < 0) {
y = 0;
}
if (y > 550) {
y = 550;
}
currentImageIndex++;
if (currentImageIndex >= 8) {
currentImageIndex = 0;
}
}
public void fire() {
missiles.add(new Missile(x + 20, y + 20, direction));
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public Rectangle getRectangle() {
return new Rectangle(x, y, 60, 60);
}
public ArrayList<Missile> getMissiles() {
return missiles;
}
public boolean isAlive() {
return alive;
}
public void setAlive(boolean alive) {
this.alive = alive;
}
public enum Direction {
UP, DOWN, LEFT, RIGHT
}
}
private class EnemyTank {
private int x;
private int y;
private Direction direction;
private Image[] images;
private int currentImageIndex;
private ArrayList<Missile> missiles;
public EnemyTank(int x, int y, Direction direction) {
this.x = x;
this.y = y;
this.direction = direction;
images = new Image[8];
for (int i = 0; i < 8; i++) {
images[i] = TankWarUtils.getImage("enemy" + (i + 1) + ".png");
}
currentImageIndex = 0;
missiles = new ArrayList<Missile>();
}
public void draw(Graphics g) {
g.drawImage(images[currentImageIndex], x, y, null);
for (Missile missile : missiles) {
missile.draw(g);
}
}
public void move() {
int moveLength = 3;
if (Math.random() < 0.01) {
fire();
}
if (Math.random() < 0.05) {
int r = (int) (Math.random() * 4);
if (r == 0) {
direction = Direction.UP;
} else if (r == 1) {
direction = Direction.DOWN;
} else if (r == 2) {
direction = Direction.LEFT;
} else if (r == 3) {
direction = Direction.RIGHT;
}
}
if (direction == Direction.UP) {
y -= moveLength;
} else if (direction == Direction.DOWN) {
y += moveLength;
} else if (direction == Direction.LEFT) {
x -= moveLength;
} else if (direction == Direction.RIGHT) {
x += moveLength;
}
if (x < 0) {
x = 0;
}
if (x > 750) {
x = 750;
}
if (y < 0) {
y = 0;
}
if (y > 550) {
y = 550;
}
currentImageIndex++;
if (currentImageIndex >= 8) {
currentImageIndex = 0;
}
}
public void fire() {
missiles.add(new Missile(x + 20, y + 20, direction));
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public Rectangle getRectangle() {
return new Rectangle(x, y, 60, 60);
}
public ArrayList<Missile> getMissiles() {
return missiles;
}
public enum Direction {
UP, DOWN, LEFT, RIGHT
}
}
private class Missile {
private int x;
private int y;
private Direction direction;
private Image image;
public Missile(int x, int y, Direction direction) {
this.x = x;
this.y = y;
this.direction = direction;
image = TankWarUtils.getImage("missile.png");
}
public void draw(Graphics g) {
g.drawImage(image, x, y, null);
}
public void move() {
int moveLength = 8;
if (direction == Direction.UP) {
y -= moveLength;
} else if (direction == Direction.DOWN) {
y += moveLength;
} else if (direction == Direction.LEFT) {
x -= moveLength;
} else if (direction == Direction.RIGHT) {
x += moveLength;
}
}
public boolean isOutOfBound() {
return x < 0 || x > 800 || y < 0 || y > 600;
}
public boolean hit(Tank tank) {
return getRectangle().intersects(tank.getRectangle());
}
public boolean hit(EnemyTank enemyTank) {
return getRectangle().intersects(enemyTank.getRectangle());
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public Rectangle getRectangle() {
return new Rectangle(x, y, 10, 10);
}
public enum Direction {
UP, DOWN, LEFT, RIGHT
}
}
private class Explosion {
private int x;
private int y;
private Image[] images;
private int currentImageIndex;
public Explosion(int x, int y) {
this.x = x;
this.y = y;
images = new Image[11];
for (int i = 0; i < 11; i++) {
images[i] = TankWarUtils.getImage("explosion" + (i + 1) + ".png");
}
currentImageIndex = 0;
}
public void draw(Graphics g) {
g.drawImage(images[currentImageIndex], x, y, null);
currentImageIndex++;
if (currentImageIndex >= 11) {
currentImageIndex = 0;
}
}
public boolean isOver() {
return currentImageIndex == 0;
}
}
private static class TankWarUtils {
public static Image getImage(String fileName) {
return new ImageIcon(TankWarUtils.class.getResource("/images/" + fileName)).getImage();
}
}
}
```