【发布时间】:2017-02-19 07:02:47
【问题描述】:
假设我有一个包含多种武器的 2 人游戏。在游戏开始时,玩家可以选择自己的武器并将其装备给自己的角色。所以如果现在,我有以下代码来实现上述场景:
public class Weapon {
private String name;
private int attackPoints;
private int effectivity = 100;
public Weapon(String name, int attackPoints) {
this.name = name;
this.attackPoints = attackPoints;
}
// ...
}
public class Character {
private String name;
private Weapon weapon;
public Character(String name, Weapon weapon) {
this.name = name;
this.weapon = weapon;
}
// ...
}
public class Game {
Scanner scanner = new Scanner(System.in);
public void createCharacter() {
String namePlayer = "Knight";
String nameOpponent = "Thief";
//Weapon Menu
System.out.println("Select weapon");
System.out.println("1. Dagger - Attack: 10");
System.out.println("2. Sword - Attack 20");
Character player;
Character opponent;
int choice = scanner.nextInt();
//Weapon assignment
switch (choice) {
case 1:
player = new Character(name, new Weapon("Dagger", 10));
break;
case 2:
player = new Character(name, new Weapon("Sword", 20));
break;
}
}
}
改写问题
我担心的是,如果我必须添加一个额外的武器,例如“15 伤害的斧头”,那么我必须修改武器菜单,同时在我的开关中添加一个额外的箱子陈述。是否有可能我只需要修改某种列表,它会处理可供玩家选择的武器列表,同时使武器的实例对玩家和对手角色?
老问题
我担心的是,每次我有了新武器,我都必须修改武器菜单,同时修改武器分配部分。有没有更好的方法来实现它?
【问题讨论】:
标签: java oop design-patterns object-oriented-analysis