我已经有一段时间了,我似乎无法解决游戏的动态。
所以,基本上,这款游戏在我的国家名为Truco是一款非常受欢迎的纸牌游戏。我将尝试使用以下要点解释它,但无论如何,在我的解释之后的Bold段落对于游戏的结构是非常简单和简单的,所以,请随意跳过它。
对于不了解游戏的人来说,这一切都必须真正令人困惑。所以,总而言之,总共有6个回合,每回合都是由一个玩家玩牌的玩家结束的,并且每回合本身都会在两个玩家之间进行一些信息交换,包括玩家轮到它的挑战打电话,另一方必须接受或拒绝。除此之外,当比赛结束时比赛本身并没有结束,比赛一直持续到两个比赛中的一个达到30分,通过赢得比赛和挑战。
我开始尝试使用while循环进行设置,但由于循环从不暂停并等待onClickListeners,因此很容易失败。 然后,我发布了这个问题:How can I handle player turns in Android?
我开始对国家设计模式进行一些研究,并且在过去的几天里一直在努力。我有一个游戏本身的课程: GameTruco 。 TrucoState 类和该TrucoState 的10种不同实现。在GameTruco里面,我有所有这些不同状态的实例,以及我需要跟踪的所有不同变量,玩家可以执行的两个动作,它们的转动是什么以及它是什么回合。因此,我在GameTruco中的所有选项(不同的国家和不同的方法称为这些国家)只考虑可以被调用的不同挑战后的游戏状态,但不要考虑自己玩牌....我不知道如何处理这个问题。而且,当我完成设计时,我不太清楚如何将它与我的Button的onClickListeners混合起来。
如果有人能告诉我如何通过推荐改变我的状态模式或其他方式来解决纸牌游戏的动态,我会非常感激。
答案 0 :(得分:1)
状态模式可能是解决这个问题的好方法。
我的GameTruco只考虑可以调用的不同挑战后的游戏状态,但不要考虑自己玩牌
如果州只考虑轮到谁以及当前的赌注是什么等,那么这些牌可以被认为是与州分开的。您将需要逻辑其他地方跟踪卡片以及如何确定谁赢了(也许还会更新状态)
另外,当我完成设计时,我不太清楚如何将它与我的Button的onClickListeners混合起来。
您的点击侦听器代码应该是状态更改的位置。
示例:
//listener code implementation
//user has decided to raise...
int raiseAmount = ... // perhaps passed in thru listener or from UI objects
State currentState; //current state before raise
currentState = currentState.player1Raises(raiseAmount);
//now state is for player 2 to decide what to do
//update UI to let player 2 decide what to do given current State