纸牌游戏设计,课程的oop

时间:2015-08-20 10:22:18

标签: oop

我想写一个4人的纸牌游戏......我的课程是:

1-主

2卡

3-dealer(有一个card对象数组,array.length = 52)

4人(有一个卡片对象数组,array.length = 13 //每个玩家有13张牌)

我的问题是添加一个班级" deck"有一个13卡对象的数组或只是将这个13卡对象的数组添加到播放器类?

已编辑 - 是否需要任何课程来检查谁是获胜者以及游戏何时完成,或者我应该在主要课程中实现这部分代码?

2 个答案:

答案 0 :(得分:1)

任何一种方法都可行。

如果采用第二种方法,你需要在 $(window).load(function() { $("#listofAppsTable").DataTable({ dom : "<'row'<'col-md-3'l><'col-md-4'f><'col-md-3'><'col-md-2'B>>t<'row'<'col-md-6'i><'col-md-6'p>>", lengthMenu : [ [ 10, 25, 50, -1 ], [ 10, 25, 50, "All" ] ], buttons : [ "copyFlash", "csvFlash" ] }); 中创建非私有方法,以便在课堂外用甲板做任何你想做的事情,比如从一个方法获得顶级卡片。甲板,或一个洗牌。

答案 1 :(得分:1)

我认为我宁愿使用authorized_keys这个词而不是Hand,特别是如果涉及经销商,那就是你的电话。重要的是坚持使用一个术语并遵循真实的域名术语(例如,如果你有游戏专家并且他们在说玩家的手,那么这应该反映在代码中)。

将隐式概念显式化是很好的,所以我肯定会有一个Deck类。它将成为与玩家手牌相关的任何行为的自然之家,并且可用于强制执行不变量(例如,最初强制手牌总是由13张牌组成)。

请注意,也可以在Hand方法中执行不变的强制执行。您可以使Dealer.deal构造函数包受到保护,Hand方法将成为deal的工厂。

最后,我认为你错过了Hand概念。 Game方法只能进入main类或类似的东西,并形成你的组合根。 GameBootstrap课程将负责游戏状态和规则。