为Math.Random创建一系列武器供选择

时间:2012-12-23 07:10:54

标签: java arrays class random interface

对于该怎么做我只是有点困惑。我有两个武器类。一个用于M16,另一个用于M4。然后,我有那些实现名为Armory的接口的类。但我遇到了与Combat类有关的问题。在战斗类中,我有一个随机数生成器,它将生成一个随机数,并根据它的数量,给玩家一个武器或什么都不做。我将在下面发布代码:

接口:

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
        }
            }



}

注意:我有一个武器类,但没有任何内容。我真的不知道该放什么。

任何建议?

提前致谢: 山丹

1 个答案:

答案 0 :(得分:0)

几个问题 -


A.要将m16和m14元素放入武器数组中,这些类必须扩展(如果武器是一个类)或implmeent(如果武器是接口)武器。
另一个选择是有一个方法 M16和M14课程均为Weapons toWeapons()

B.如果我错了,请纠正我(不是母语为英语的人 - 但军械库是一个提供武器的地方,所以你选择的名字并不好。
M16和M14应该实现一个名为“Weapon”的接口,这个(我的拙见)应该是数组的类型。

C.如果我理解,你想在某些情况下向用户提供武器 ​​-
完成这项任务的一种方法,如果(检查是否存在)不会变得丑陋,就是让NoWeapon类实现Weapon(在你当前的代码中 - 实现Armory)。
它的方法具有“无所事事”的应用意义。
例如 - weaponAmmo将始终返回0.