Tôi không thể đưa ra một kiến trúc tốt cho trò chơi bài của mình. Tôi cần giúp đỡ để hiểu làm thế nào các trò chơi thường được thiết kế.
Đầu tiên, tôi sẽ mô tả các quy tắc trò chơi.
Luật chơi
Thiết lập- Có bốn người chơi, mỗi người chơi tạo thành một đội.
- Mỗi người chơi được 12 thẻ xáo trộn
- Có 4 thẻ mù trên bàn (sông)
- Thứ tự người chơi là như thế này
- Mỗi người chơi có thể vượt qua hoặc chọn một số lớn hơn đặt cược hiện tại trong khoảng từ 100 đến 160
- Đặt cược bắt đầu từ người chơi đầu tiên và vòng tròn cho đến khi một đội vượt qua
- Khi một người chơi vượt qua, họ không thể đặt cược nữa
- Đội chiến thắng trong vòng đặt cược ít nhất phải thu thập điểm bằng với cược của họ để giành chiến thắng trong trò chơi
Đội thua vòng cá cược không được cho phép đội của họ đạt được mục tiêu
Nếu đội thắng vòng đặt cược nhận được tất cả các điểm, đội kia sẽ nhận được điểm âm bằng với cược của họ
- Nếu đội thua trong vòng đặt cược thu thập tất cả các điểm, đội kia sẽ nhận được hai điểm âm
Lưu lượng trò chơi và thu thập điểm
- Người chơi thắng vòng đặt cược ( nhà vua ) nhận bốn thẻ còn lại trên bàn.
- Sau đó cô ấy / anh ấy có thể lưu một bộ bốn thẻ trong ngân hàng thẻ đội của họ mà không cần chơi chúng.
- Nhà vua sẽ chọn một bộ đồ làm bộ đồ cai trị và cho người khác biết rằng
- King bắt đầu trò chơi bằng cách đặt một lá bài từ bàn tay của mình lên bàn. Mỗi người chơi khác nên chơi theo thứ tự này
- nếu họ có cùng một bộ bài đó trong tay, họ phải chơi một trong những lá bài đó
- nếu họ không có nó, họ có thể chơi bất kỳ bộ đồ nào khác
- Sau khi tất cả những người chơi khác chơi bài, người chiến thắng của vòng này sẽ là:
- Người có thẻ cao nhất nếu tất cả các thẻ đều giống nhau
- Người có thẻ "thước kẻ" cao nhất nếu có
- Người chiến thắng trong vòng sẽ thu thập thẻ và đưa nó vào ngân hàng của họ
- Người chơi chiến thắng vòng trước sẽ bắt đầu vòng tiếp theo
- Điều này sẽ tiếp tục cho đến khi bàn tay của mọi người trống rỗng
Đếm điểm
- Chiến thắng mỗi vòng có 5 điểm. Điều này có nghĩa là cứ 4 thẻ có ít nhất 5 điểm.
- Có Ace, 10 hoặc 5 trong ngân hàng, mỗi nhóm thêm 5 điểm
Thiết kế của tôi
Các lớp học
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(){}
}
Vấn đề của tôi
Bây giờ tôi đã định nghĩa tất cả các lớp này, tôi không biết cách liên kết các định nghĩa này với cơ sở dữ liệu (như Mongo) và kiểm soát luồng trò chơi.
- Tất cả logic đó nên đi đâu?
- Làm thế nào tôi nên giữ trạng thái trong một kịch bản máy chủ / máy khách?
Ghi chú:
Tôi đang sử dụng Dart để lập trình điều này nhưng tôi không cần câu trả lời được viết bằng Dart.