Saya tidak dapat membuat arsitektur yang bagus untuk permainan kartu saya. Saya perlu bantuan untuk memahami bagaimana game biasanya dirancang.
Pertama, saya akan menjelaskan aturan permainan.
Aturan Game
Mempersiapkan- Ada empat pemain, masing-masing dua pemain membentuk satu tim.
- Setiap pemain mendapat 12 kartu yang dikocok
- Ada 4 kartu buta di atas meja (sungai)
- Urutan pemain seperti ini
- Setiap pemain dapat melewati atau memilih nomor yang lebih besar dari taruhan saat ini antara 100 hingga 160
- Taruhan dimulai dari pemain pertama dan lingkaran hingga lulus tim
- Setelah pemain lulus mereka tidak bisa bertaruh lagi
- Tim yang memenangkan putaran taruhan setidaknya harus mengumpulkan poin yang sama dengan taruhan mereka untuk memenangkan pertandingan
Tim yang kalah dalam ronde pertaruhan seharusnya tidak membiarkan tim mereka mencapai tujuan mereka
Jika tim yang memenangkan ronde pertaruhan mendapatkan semua poin, tim lain akan mendapatkan poin negatif sama dengan taruhan mereka
- jika tim yang kalah pada putaran taruhan mengumpulkan semua poin, tim lain akan mendapatkan poin negatif ganda
Game mengalir dan mengumpulkan poin
- Pemain yang memenangkan ronde pertaruhan ( raja ) mendapat empat kartu tersisa di meja.
- Kemudian dia dapat menyimpan satu set empat kartu di bank kartu tim mereka tanpa memainkannya.
- Raja akan memilih jas sebagai jas penguasa dan membiarkan orang lain tahu itu
- King memulai permainan dengan meletakkan kartu dari tangannya di atas meja. Setiap pemain lain harus bermain dalam urutan ini
- jika mereka memiliki kartu yang sama di tangan mereka, mereka harus memainkan salah satu kartu itu
- jika mereka tidak memilikinya, mereka dapat memainkan setelan lain
- Setelah semua pemain lain memainkan tangan mereka, pemenang putaran akan:
- Orang yang memiliki kartu tertinggi jika semua kartu sama
- Orang yang memiliki kartu "penguasa" tertinggi jika ada
- Pemenang putaran akan mengumpulkan kartu dan menaruhnya di bank mereka
- Pemain yang memenangkan babak sebelumnya akan memulai babak berikutnya
- Ini akan berlanjut sampai tangan semua orang kosong
Menghitung poin
- Memenangkan setiap putaran memiliki 5 poin. Ini berarti setiap 4 kartu memiliki setidaknya 5 poin.
- Memiliki Ace, 10 atau 5 di bank masing-masing menambah 5 poin
Desain saya
Kelas
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(){}
}
Masalahku
Sekarang saya telah mendefinisikan semua kelas ini, saya tidak tahu bagaimana mengikat definisi ini ke database (seperti Mongo) dan mengontrol alur permainan.
- Kemana semua logika itu pergi?
- Bagaimana cara menjaga status dalam skenario server / klien?
catatan:
Saya menggunakan Dart untuk memprogram ini tetapi saya tidak ingin jawaban ditulis dalam Dart.