Kart oyunum için iyi bir mimari bulamıyorum. Oyunların genellikle nasıl tasarlandığını anlamak için yardıma ihtiyacım var.
İlk olarak, oyun kurallarını anlatacağım.
Oyun kuralları
Kurmak- Dört oyuncu var, her iki oyuncu bir takım oluşturuyor.
- Her oyuncu 12 karışık kart alır
- Masanın üzerinde 4 kör kart var (nehir)
- Oyuncuların sırası böyle
- Her oyuncu 100 ila 160 arasında mevcut bahisten daha büyük bir sayı geçebilir veya seçebilir
- Bahis ilk oyuncudan başlar ve bir takım pas geçene kadar çevreler
- Bir oyuncu pas geçtikten sonra artık bahis yapamazlar
- Bahis turunu kazanan takım, oyunu kazanmak için en azından bahislerine eşit puan toplamalıdır.
Bahis turunu kaybeden takım, takımlarının hedeflerine ulaşmasına izin vermemelidir
Eğer bahis turu kazanan takım tüm puanları alırsa, diğer takım bahislerine eşit negatif puan alır
- Eğer bahis turunu kaybeden takım tüm puanları toplarsa diğer takım iki kat negatif puan alır
Oyun akışı ve toplama noktaları
- Bahis turunu kazanan oyuncu ( kral ) masada kalan dört kart alır.
- Daha sonra takım kartları bankasına oynamadan bile dört kartlık bir takım kaydedebilir.
- Kral cetvel kıyafeti olarak bir takım seçecek ve diğerlerine bunu bildirecek
- King oyuna elinden bir kart koyarak masaya başlar. Her oyuncu bu sırayla oynamalıdır
- eğer elinde o kartın aynısı varsa, o kartlardan birini oynamak zorundalar.
- eğer onlar yoksa, başka bir takım elbise oynayabilirler
- Diğer tüm oyuncular ellerini oynadıktan sonra, turun galibi:
- Tüm kartlar aynı ise en yüksek karta sahip olan
- Varsa en yüksek "cetvel" kartına sahip olan
- Turun galibi kartları toplayacak ve bankalarına koyacaktır.
- Bir önceki turu kazanan oyuncu bir sonraki tura başlar
- Bu herkesin eli boşalana kadar devam edecek
Puan sayma
- Her turu kazanmanın 5 puanı vardır. Bu, her 4 kartın en az 5 puanı olduğu anlamına gelir.
- As, bankada 10 veya 5 olmak üzere her biri 5 puan ekler
Benim tasarımım
Sınıflar
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(){}
}
Benim sorunum
Şimdi tüm bu sınıfları tanımladığım için bu tanımları bir veritabanına (Mongo gibi) nasıl bağlayacağımı ve oyun akışını nasıl kontrol edeceğimi bilmiyorum.
- Bütün bu mantık nereye gitmeli?
- Bir sunucu / istemci senaryosunda durumu nasıl korumalıyım?
Not:
Bunu programlamak için Dart kullanıyorum ama cevapların Dart'a yazılmasını istemiyorum.