【发布时间】:2012-12-10 01:43:15
【问题描述】:
我正在创建一个基于文本的游戏,但遇到了一些问题。这是我目前所遇到的。到目前为止,我有一个战斗类,以及两个不同武器的两个类。我正在尝试为武器本身分配生命值。但我最大的问题是在战斗课上。我正在尝试创建它,以便在随机时间随机掉落武器以及随机武器。到目前为止,在战斗课上我有这个:
public class Combat {
final int chanceOfDrop = 3;
static Weapons[] wepArray = {new M4(), new M16()}
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(Weapon[Combat.ranNumberGen(Weapons.length)]);
}
private static void givePlayerWeapon(int w) {
hasWeapon[w] = true;
for w <(Weapons.length-1) {
if has weapon[w] {
System.out.println(wepArray[w].getWeaponName);
}
}
}
}
}
}
我在创建新的 M4() 时遇到问题,新的 M16() 显示类型不匹配:无法将 M4 形式转换为武器。我确实有一个名为 Weapons 的课程,这可能是问题吗?
这是我的 M4 类,M4 和 M16 类是相同的
public abstract class M4 {
private Integer weaponDamage = 5;
private Integer weaponAmmo = 25;
private String weaponName = "M4";
public M4(String name, int ammo, int damage) {
name = weaponName;
ammo = weaponAmmo;
damage = weaponDamage;
}
public String getWeaponName() {
return weaponName;
}
public Integer getAmmo() {
return weaponAmmo;
}
public Integer getDamage() {
return weaponDamage;
}
}
我认为我在这里没有任何问题。不过,也许我的问题就在于此。虽然,我有一个武器课,但什么都没有。我需要那个吗?
【问题讨论】:
-
这里有很多问题。为什么
M4是抽象的?为什么不扩展或实现Weapon?您似乎可以互换使用Weapon和Weapons- 它是什么?当您的意思是wepArray时,您似乎也使用了Weapons。 -
我同意@Matt。此代码甚至似乎不可编译。
-
我会创建一个名为 Weapon 的接口,然后让每个特定的类都实现 Weapon 类。这将允许每个人都有一种方法来获取和设置随机值。特别是因为您说这些课程几乎相同。这是创建界面的绝佳机会。
-
在开始编写 Java 之前,您需要先了解一下。这不是 Visual Basic。 codeproject.com/Articles/22769/… 花点时间阅读全文。
-
人们是对的,但 +1 纯粹是出于创建文字游戏的意图:)