我正在尝试实现纸牌游戏(类似于桥牌)。有许多类代表Suit,Player,Cart,Team等。
在每一轮比赛中,每位玩家投掷4张牌,一旦所有玩家手中的13张牌被抛出,我们就可以计算出两名玩家每队收集的积分。
当所有52张牌都被抛出时,我需要告诉Main表单以某种方式结束(更好的术语是开始新一轮)。
我正在尝试实现以下伪算法
While(not all cards played)
{
continue the game
}
Calculate each player’s score according to the collect hand
不确定将此while循环放在何处。当然不在Form_Load。
答案 0 :(得分:0)
你的问题有点笼统,所以这是我的主要建议:
不要将业务逻辑放在视图类中。您的视图应通过方法调用/事件对基础状态的更改做出反应。不幸的是,围绕MVVM / MVC模式(如WPF)构建的技术要容易得多。
话虽这么说,我会创建一个“GameController”类来管理游戏状态并保存这样的规则。每次玩牌时,都会通过以下方式运行:
void CheckRoundEnd()
{
if (cardsPlayed == 52)
EndRound();
}
EndRound
会引发表单侦听的事件,或者在表单上调用适当的方法来重置下一轮的视图。