我一直在寻找如何制作一个包含许多不同枚举的数组。
我要做的是使用例如
的枚举public enum playerTeam
{
Red,
Blue
};
和另一个
public enum currentWeapon
{
Knife,
Gun,
Rifle,
Shotgun,
SniperRifle,
RocketLauncher,
Grenade,
Molotov,
FlameThrower,
ProximityMine,
RemoteMine
};
然后将它们分配给一个名为
的数组 Players[]
然后能够循环遍历数组并设置每个枚举的值。我之前使用过没有数组的枚举。设置/获取播放器的数据。 但现在我要将我的项目扩展到多人游戏。我无法弄清楚如何将枚举添加到一个数组。因为这会使代码更容易处理。
这真的很难解释,希望你们明白......
答案 0 :(得分:4)
我建议您创建一个包含Player
和Weapon
成员的班级Team
。然后使用播放器实例执行操作。
class Player
{
Weapon CurrentWeapon {get; set;}
Team Team {get; set;}
}
答案 1 :(得分:0)
考虑到C#允许你做什么,这是一种看待事物的奇怪方式。最好的是,为了达到你想要的效果,你可以使用将键映射到值(玩家到武器/团队)的东西,比如System.Collections.Generic.Dictionary
。
但实际上没有必要这样做。 Player类应该在两个字段中包含该信息:
class Player
{
...
private Team currentTeam;
private Weapon currentWeapon;
...
}
根据你对枚举的命名和你的想法来判断,我认为你也应该从头到尾都遵循C#和OOP的学习资源。
答案 2 :(得分:0)
这有点荒谬,因为团队绝对不是武器(wtf是currentWeapon。而不是武器)但如果你问如何使用枚举和位标志你可以写
[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