我正在和我的开发伙伴讨论下面的游戏设计。
我在Move类中有一个Game集合。我的开发人员伙伴要求我移除集合,并且只有当前的移动信息。
你有什么建议?
public class Game
{
public String Id { get; set; }
public String CreatorId { get; set; }
public List<Player> Players { get; set; }
public List<Move> Moves { get; set; }
}
public class Player
{
public String Id { get; set; }
public String Name { get; set; }
}
public class Move
{
public String Id { get; set; }
public String PlayerId { get; set; }
public String PlayerName { get; set; }
public String NextMoveId { get; set; }
public String NextPlayerId { get; set; }
public String Position { get; set; }
}编辑:
我的开发人员伙伴建议我在Move类中只有一个Game对象。
发布于 2010-12-10 09:34:53
一个游戏通常由一个或多个玩家执行的一组动作组成。在每一个动作之间,游戏处于某种状态。
如果您有当前状态,并且不需要播放或撤消任何移动,则永远不会访问之前的操作。未来的动向还不清楚,因此,仅凭你提供的信息,我想说Game不应该有任何Move,只有一个State和一个ProcessMove(Move move)方法来改变Game的State。Move是由Player之一生成的。
发布于 2010-12-10 10:54:41
public class Game
{
public String Id { get; set; }
public String CreatorId { get; set; }
public List<Player> Players { get; set; }
public String PlayerId { get; set; }
}
public class Player
{
public String Id { get; set; }
public String Name { get; set; }
public String Position { get; set; }
public Move(string NewPosition);
public event EventHandler onMoved;
}这将是我更喜欢的选择,虽然不知道它是什么样的游戏,这是很难知道的。无论哪种方式,玩家都应该封装自己的位置,游戏应该知道当前的玩家。
至于移动,它的游戏依赖,但移动将改变玩家的位置,这可能影响也可能不会影响其他玩家,所以我可能会实现对玩家的移动,并有一个onMoved事件的玩家,游戏是订阅的。
发布于 2010-12-10 09:29:37
我认为有一个集合的移动在那里没有错。你可以用另一个属性暴露当前的移动,然后,你和你的配偶都是统计的。
你提供的信息我只能说这些。我不知道你的游戏逻辑。当您需要有一个移动历史记录(例如,一个重放功能)或您想要计划几个移动之前,移动集合可以是一个优势。除了你可能不一定需要它之外,我认为没有什么不对的。
顺便说一下:List<T>是用于实现的,而不是ObjectModels的。我会将列表包装在一个名为MovesCollection的类中。移动应该实现一个接口(抽象契约),以防您需要许多不同的移动实现(例如AttackMove、Fortify-Move、Retreat.)
https://stackoverflow.com/questions/4407307
复制相似问题