我不能为我的纸牌游戏提出一个好的架构。我需要帮助来了解游戏通常是如何设计的。
首先,我将描述游戏规则。
游戏规则
设定- 有四名球员,每两名球员组成一个团队。
- 每位玩家可获得12张随机洗牌
- 桌子上有4张盲卡(河牌)
- 玩家订购是这样的
- 每个玩家都可以在100到160之间传递或选择一个大于当前下注的数字
- 博彩从第一位玩家开始,直到圈子通过为止
- 一旦玩家通过,就不能再下注
- 赢得下注回合的球队至少应获得等于其下注的积分才能赢得比赛
输掉了本轮比赛的团队不应允许其团队达到目标
如果赢得比赛的团队获得所有分,则另一支球队将获得等于其赌注的负分
- 如果输掉比赛的队伍获得了所有积分,另一支队伍将获得双倍负积分
游戏流程和收集点
- 赢得下注的玩家(国王)在桌上获得了剩余的四张牌。
- 然后,她/他甚至可以不用玩就将一组四张卡保存在他们的团队卡库中。
- 国王将挑选一套西装作为尺码西装,并让其他人知道
- King通过将他/她的手牌放在桌子上来开始游戏。每个其他玩家应按此顺序玩
- 如果他们手中持有与该张牌相同的花色,则必须打出其中一张
- 如果他们没有,他们可以玩其他西装
- 在所有其他玩家玩过手之后,该回合的赢家将是:
- 如果所有卡都相同,则拥有最高卡的人
- 拥有最高“统治者”卡的人
- 一轮获胜者将收集卡并将其放入银行
- 赢得前一轮的玩家将开始下一轮
- 这将一直持续到每个人的手都空了
计数点
- 每个回合赢5分。这意味着每4张卡至少有5分。
- 拥有Ace,银行中的10点或5点各加5点
我的设计
班级
class Card {
string suit;
string rank
}
class Deck {
List cards = [];
List suits = ['S', 'H', 'D', 'C'];
List ranks = ['1', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'];
private void init(){..}
void shuffle(){...}
}
class Game{
Deck deck = new Deck();
Player player1;
Player player2;
Player player3;
Player player4;
int _isOn = 0;
Game(this.player1, this.player2, this.player3, this.player4){
deck.makeCards();
deck.shuffle();
start();
}
void start(){
player1.cards.addAll( deck.cards.getRange(0, 12) );
player2.cards.addAll( deck.cards.getRange(12, 24) );
player3.cards.addAll( deck.cards.getRange(24, 36) );
player4.cards.addAll( deck.cards.getRange(36, 48) );
deck.cards.removeRange(0, 48);
}
String toJson(){
}
String toString(){
}
}
class Player{
String name;
int points;
List cards = [];
Player(this.name, {this.points});
String toJson(){}
String toString(){}
}
我的问题
现在,我已经定义了所有这些类,现在我不知道如何将这些定义绑定到数据库(例如Mongo)并控制游戏流程。
- 所有这些逻辑应该去哪儿?
- 在服务器/客户端方案中应如何保持状态?
注意:
我正在使用Dart对此进行编程,但是我不需要用Dart编写答案。