首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >游戏设计改进

游戏设计改进
EN

Stack Overflow用户
提问于 2010-12-10 09:23:58
回答 5查看 351关注 0票数 4

我正在和我的开发伙伴讨论下面的游戏设计。

我在Move类中有一个Game集合。我的开发人员伙伴要求我移除集合,并且只有当前的移动信息。

你有什么建议?

代码语言:javascript
运行
复制
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对象。

EN

回答 5

Stack Overflow用户

发布于 2010-12-10 09:34:53

一个游戏通常由一个或多个玩家执行的一组动作组成。在每一个动作之间,游戏处于某种状态。

如果您有当前状态,并且不需要播放或撤消任何移动,则永远不会访问之前的操作。未来的动向还不清楚,因此,仅凭你提供的信息,我想说Game不应该有任何Move,只有一个State和一个ProcessMove(Move move)方法来改变GameStateMove是由Player之一生成的。

票数 4
EN

Stack Overflow用户

发布于 2010-12-10 10:54:41

代码语言:javascript
运行
复制
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事件的玩家,游戏是订阅的。

票数 1
EN

Stack Overflow用户

发布于 2010-12-10 09:29:37

我认为有一个集合的移动在那里没有错。你可以用另一个属性暴露当前的移动,然后,你和你的配偶都是统计的。

你提供的信息我只能说这些。我不知道你的游戏逻辑。当您需要有一个移动历史记录(例如,一个重放功能)或您想要计划几个移动之前,移动集合可以是一个优势。除了你可能不一定需要它之外,我认为没有什么不对的。

顺便说一下:List<T>是用于实现的,而不是ObjectModels的。我会将列表包装在一个名为MovesCollection的类中。移动应该实现一个接口(抽象契约),以防您需要许多不同的移动实现(例如AttackMove、Fortify-Move、Retreat.)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4407307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档