Java魔兽争霸

魔兽争霸是一款非常经典的实时战略游戏,玩家需要建立基地、培训士兵、发展经济,并与敌人进行战斗。在本文中,我们将使用Java编程语言来实现一个简化版的魔兽争霸游戏。

游戏规则

我们将游戏规则简化为以下几点:

  • 玩家可以选择建立不同类型的建筑,包括城堡、兵营和矿场。
  • 玩家可以训练士兵,包括步兵和骑兵。
  • 玩家可以选择进攻敌人的城堡。
  • 玩家需要管理资源,包括金币和矿石。

游戏设计

我们将游戏设计为面向对象的模式,有以下几个核心类:

建筑类

建筑类包括城堡、兵营和矿场,每个建筑都有自己的属性和行为。

public abstract class Building {
    protected String name;
    protected int health;
    protected int level;

    public Building(String name, int health, int level) {
        this.name = name;
        this.health = health;
        this.level = level;
    }

    public abstract void upgrade();

    public abstract void repair();

    public String getName() {
        return name;
    }

    public int getHealth() {
        return health;
    }

    public int getLevel() {
        return level;
    }
}

public class Castle extends Building {
    public Castle() {
        super("Castle", 1000, 1);
    }

    @Override
    public void upgrade() {
        level++;
        health += 500;
    }

    @Override
    public void repair() {
        health = 1000;
    }
}

public class Barracks extends Building {
    public Barracks() {
        super("Barracks", 500, 1);
    }

    @Override
    public void upgrade() {
        level++;
        health += 250;
    }

    @Override
    public void repair() {
        health = 500;
    }
}

public class Mine extends Building {
    public Mine() {
        super("Mine", 250, 1);
    }

    @Override
    public void upgrade() {
        level++;
        health += 125;
    }

    @Override
    public void repair() {
        health = 250;
    }
}

士兵类

士兵类包括步兵和骑兵,每个士兵都有自己的属性和行为。

public abstract class Soldier {
    protected String name;
    protected int health;
    protected int damage;

    public Soldier(String name, int health, int damage) {
        this.name = name;
        this.health = health;
        this.damage = damage;
    }

    public abstract void attack();

    public abstract void defend();

    public String getName() {
        return name;
    }

    public int getHealth() {
        return health;
    }

    public int getDamage() {
        return damage;
    }
}

public class Infantry extends Soldier {
    public Infantry() {
        super("Infantry", 100, 20);
    }

    @Override
    public void attack() {
        System.out.println("Infantry attacks with " + damage + " damage.");
    }

    @Override
    public void defend() {
        System.out.println("Infantry defends with " + health + " health.");
    }
}

public class Cavalry extends Soldier {
    public Cavalry() {
        super("Cavalry", 150, 30);
    }

    @Override
    public void attack() {
        System.out.println("Cavalry attacks with " + damage + " damage.");
    }

    @Override
    public void defend() {
        System.out.println("Cavalry defends with " + health + " health.");
    }
}

游戏类

游戏类负责管理玩家和敌方的阵营,以及游戏的进行。

public class Game {
    private List<Building> playerBuildings;
    private List<Soldier> playerSoldiers;
    private List<Building> enemyBuildings;
    private List<Soldier> enemySoldiers;

    public Game() {
        playerBuildings = new ArrayList<>();
        playerSoldiers = new ArrayList<>();
        enemyBuildings = new ArrayList<>();
        enemySoldiers = new ArrayList<>();
    }

    public void addPlayerBuilding(Building building) {
        playerBuildings.add(building);
    }

    public void addPlayerSoldier(Soldier soldier) {
        playerSoldiers.add(s