我正在创建一个控制台僵尸生存游戏,该游戏应该是随机的并且相当复杂,例如找到多种武器和弹药类型。但是,我相信我可以将对象保存在数组中,以便稍后再使用它以获取正确的信息,但是这种方式行不通。
我尝试过将对象存储在没有运气的数组中。我试图将数组从基于项目的数组更改为没有运气的对象。
class Firearm : Weapon
{
public Firemode firemode;
public int maxCapacity;
public int curCapacity;
public Type type;
public Caliber caliber;
public Firearm (string _name, float _damage, int _range, Firemode
_firemode, int _maxCapacity, int _curCapacity, Type _type, Caliber
_caliber)
{
name = _name;
damage = _damage;
range = _range;
firemode = _firemode;
maxCapacity = _maxCapacity;
curCapacity = _curCapacity;
type = _type;
caliber = _caliber;
}
public void FirearmStats()
{
Console.WriteLine("\n Name: {0}\n Damage: {1}\n Range: {2}\n
Firemode: {3}\n Max Capacity: {4}\n Current Capacity: {5}", name, damage,
range, firemode, maxCapacity, curCapacity);
}
}
static void Main(string[] args)
{
Random numberGenerator = new Random();
//Pistols
Firearm m9 = new Firearm("Beretta M9A1", 34.0F, 30,
Firemode.SemiAutomatic, 15, numberGenerator.Next(1, 16), Type.Pistol,
Caliber.nine);
....
Item[] inventory = new Item[14];
Item[] equipped = new Item[0];
.....
equipped[0] = m9;
Console.WriteLine("\nYou find a {0}", equipped[0].name);
//issue here with equipped[0]^^^
equipped[0].FirearmStats();
//and here ^^^^^
player.Command();
}
严重性代码描述项目文件行抑制状态 错误CS1061'Program.Item'不包含'FirearmStats'的定义,并且找不到可以接受的扩展方法'FirearmStats'接受类型为'Program.Item'的第一个参数(您是否缺少using指令或程序集引用? )ZombieConsoleGame E:\ Visual Studio Projects \ ZombieConsoleGame \ ZombieConsoleGame \ Program.cs 158不适用
答案 0 :(得分:1)
我假设initState
类继承自您的List
类。
由于数组Weapon
的类型为Item
,因此您需要将 Item 强制转换为武器,然后才能调用任意武器类上的方法/功能。
更改此行(突出显示问题的地方)equipped
成为:
Item
这会将 Item 强制转换为 Firearm ,然后允许您将其用作Firearm。
编辑:
此外,该行:
equipped[0].FirearmStats();
将创建一个其中包含零个元素的Array变量,没有分配空间来存储您配备的物品。将((Firearm)equipped[0]).FirearmStats();
中的零更改为正数,就像您在库存(Item[] equipped = new Item[0];
)