我对做什么感到困惑。我有两个武器课。一个用于M16,另一个用于M4。然后,我将这些类实现一个名为Armory的接口。但是我在战斗课上遇到了问题。在战斗课中,我有一个随机数生成器,它将生成一个随机数,并根据它是多少来为玩家提供武器或不执行任何操作。我将在下面发布代码:
接口:
public interface Armory {
public Integer weaponAmmo(int wepAmmo);
public Integer weaponDamage(int wepDamage);
public String weaponName(String wepName);
}
M4级(M4和M16级相同,除了损坏和弹药数量):
public class M4 implements Armory {
public Integer weaponAmmo(int wepAmmo) {
wepAmmo = 10;
return wepAmmo;
}
public Integer weaponDamage(int wepDamage) {
wepDamage = 2;
return wepDamage;
}
public String weaponName(String wepName) {
wepName = "M4";
return wepName;
}
最后,战斗课(这是我遇到的问题):
public class Combat {
final int chanceOfDrop = 3;
Weapons[] wepArray = {new M4(), new M16()}; //Issues here.. Don't really know how to implement this.
static boolean[] hasWeapon = {false, true};
public static int ranNumberGen(int chanceOfDrop) {
return (int) (Math.random()*1);
}
private void enemyDead() {
boolean canDrop = false;
if(ranNumberGen(chanceOfDrop)==0){
canDrop = true;
}
if(canDrop == true){
givePlayerWeapon(wepArray[Combat.ranNumberGen(wepArray.length)] } //Issues here also.
private static void givePlayerWeapon(int w) {
hasWeapon[w] = true;
for (int i = 0; i < hasWeapon.length; ++i)
{
if (hasWeapon[i]) System.out.println(( wepArray[i]).weaponName()); //And, last but not least, I am having Issues here
}
}
}
注意:我有一个武器课,但是里面什么也没有。我真的不知道该放什么。
有什么建议么?
提前致谢:
山丹
最佳答案
几个问题-
答:要将m16和m14元素放入武器数组中,这些类必须扩展(如果武器是类)或不紧要(如果武器是接口)武器。
另一种选择是拥有一种方法
M16和M14类中的Weapons toWeapons()
。
B.如果我错了,请纠正我(不是说英语的人-但Armory是提供武器的地方,因此您选择的名字不好。
M16和M14应该实现一个名为“武器”的接口,而这个(在我的拙见中)应该是数组的类型。
C.据我了解,您在某些情况下不希望向用户提供任何武器-
完成此任务(而不是检查是否存在)的一种方法是让NoWeapon类实现Weapon(在您当前的代码中-实现Armory)。
它的方法将具有“什么都不做”的适用含义。
例如 -
武器总会返回0。