ฉันไม่สามารถสร้างสถาปัตยกรรมที่ดีสำหรับเกมไพ่ของฉันได้ ฉันต้องการความช่วยเหลือในการทำความเข้าใจว่าเกมได้รับการออกแบบมาอย่างไร
ก่อนอื่นฉันจะอธิบายกฎของเกม
กฎของเกม
ติดตั้ง- มีผู้เล่นสี่คนผู้เล่นสองคนรวมกันเป็นทีม
- ผู้เล่นแต่ละคนจะได้รับไพ่สับ 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