我正在尝试使用MVC模式创建一个回合制卡牌游戏。我对正确的设计有一些疑问。
我创建了由以下类组成的模型:
- Card (使用Suit)
- Deck (40张牌, 抽取牌的方法, 剩余牌数)
- Table
- Suit (枚举)
- Player(手牌, 玩家名称, 手牌数量, 搜集到的卡牌)
- GameModel (包含对Deck、Table的引用,并在构造函数中接收两个玩家对象)
当用户按下“新游戏”按钮时,我将创建两个Player对象和GameModel(计算机和玩家)。这是正确的方式吗?(我想我不需要策略模式)
我创建了一个GameController类,该类具有对GameModel类和GameFrame(视图)类的引用。
当电脑在进行游戏或有人赢得手牌并拿起桌子上的牌时,我需要实现某种形式的“暂停”,所以我想我需要创建一个带有游戏循环的Runnable类。正确吗?
这些类应该如何互动? (这样的英语是否正确?xD)
玩家操作示例:
点击卡牌按钮 --> actionListener --> 调用GameController方法以检查操作是否可行(轮到我并可以出牌,电脑已出牌) --> 如有可能,GameController将更新GameModel --> GameLoop注意到GameModel的变化,并调用一些UI方法来升级视图(使用一些Thread.sleep(...))。这有用吗?
但在所有这些中,我应该把AI放在哪里? 谢谢你的帮助 :)