0

我一直在寻找如何制作一个包含许多不同枚举的数组。

我正在尝试做的是枚举,例如

public enum playerTeam
{
    Red,
    Blue
};

还有一个

public enum currentWeapon
{
    Knife,
    Gun,
    Rifle,
    Shotgun,
    SniperRifle,
    RocketLauncher,
    Grenade,
    Molotov,
    FlameThrower,
    ProximityMine,
    RemoteMine
};

然后将它们分配给一个称为类似的数组

Players[]

然后能够循环遍历数组并设置每个枚举的值。我以前使用过没有数组的枚举。设置/获取播放器的数据。但现在我即将将我的项目扩展到多人游戏。而且我不知道如何将枚举添加到一个数组中。因为这会使代码更容易处理。

这真的很难解释,希望你们能理解..

4

3 回答 3

4

我建议您创建一个Player包含成员WeaponTeam. 然后使用播放器实例执行操作。

class Player
{
    Weapon CurrentWeapon {get; set;}
    Team Team {get; set;}
}
于 2013-10-01T20:48:15.283 回答
0

这有点荒谬,因为团队显然不是武器(wtf 是 currentWeapon。而不是 Weapon)但是如果你问如何使用枚举和位标志,你可以写

[Flags]
public enum Weapon
{
    ...
    WeaponMask = 0xFF
    IsBlueTeam = 0x0100
}

这允许你做

switch(player[i] & WeaponMask) { case SomeWeapon: ... }
isBlueTeam = (player[i] & IsBlueTeam) != 0 //assuming its either blue or read
于 2013-10-01T20:56:35.190 回答
0

考虑到 C# 允许您做什么,这是一种奇怪的看待事物的方式。充其量,要准确实现您想要的,您可以使用将键映射到值(玩家到武器/团队)的东西,例如System.Collections.Generic.Dictionary.

但真的没有必要这样做。Player 类应该在两个字段中包含该信息:

class Player
{
   ...
   private Team currentTeam;
   private Weapon currentWeapon;
   ...
}

从您如何命名枚举以及您的想法来看,我认为您还应该从头到尾关注 C# 和 OOP 的学习资源。

于 2013-10-01T20:48:35.863 回答