باستخدام التعابير المنطقية للحصول على درجة اليد بوكر

StackOverflow https://stackoverflow.com/questions/244114

  •  04-07-2019
  •  | 
  •  

سؤال

وأنا تطوير لعبة البوكر في C #. في هذه اللحظة وأنا أحاول الحصول على درجة اللاعبين ناحية استخدام RegEx. أنا ابحث في سلسلة (التي تتألف من الدعوى البطاقات وعدد) وابحث عن الدعاوى أو أرقام لتتناسب مع RegEx. إذا كنت تحصل على 2 مباريات ثم لاعب لديه زوج، 3 مباريات لديه 3 من نوع ما.

ولدي 3 فئات في هذه اللحظة، فئة بطاقة (مع رقم والدعوى)، فئة سطح السفينة (التي تحتوي على 52 بطاقات)، وفئة اليد التي تحصل على خمس بطاقات من سطح السفينة تعديلا.

والطبقة الطابق ديها shuffleDeck(). الطبقة جهة لديها وظائف لحساب النتيجة (في هذه الوظائف أن أستخدمه باستخدام التعابير المنطقية).

وأنا توليد سلسلة التي يمكنني استخدام RegEx بإضافة 5 دعاوى والأرقام التي من جهة لديها.

هل هذه فكرة جيدة أو يجب أن أفعل ذلك بطريقة أخرى، إذا كان الأمر كذلك، كيف؟

وشكرا لكم على مساعدتكم

وPS. أنا واحد من المبرمجين غير مجرب التي ترغب في استخدام أداة المكتسبة حديثا في كل شيء

هل كانت مفيدة؟

المحلول

وأنا لا أعتقد أن التعابير المنطقية هي الطريقة المناسبة للتعامل مع هذا. ربما يجب عليك أن تستخدم تمثيل أكثر تطورا من يد من سلسلة.

نصائح أخرى

وأنت لم تقدم الكثير من التفاصيل، ولكن ما من ما قرأت، وأفترض أنك لا تدفع OOP بعيدا جدا ...

وكنت أود أن يكون فئة البطاقة التي تحتوي على الرتبة والبدلة الحالات الطبقة. ثم أود أن يكون طبقة السطح الذي يعالج خلط / التعامل ...

وأود أن بعد ذلك فئة اليد التي من شأنها أن يحتوي اليد لعبة البوكر من الأشياء بطاقة ن ...

في هذه الطريقة يمكنك بناء قواعد لتقييم كل كائن جهة، بحيث تكون أكثر مرونة وأكثر الموسعة في المستقبل ... مثلا إذا كنت تريد أن تجعل لعبة بطاقة أخرى / إضافة دعم لمتغير آخر من لعبة البوكر ...

<ع> استخدام التعبيرات العادية لتفعل كل هذا يبدو أن هناك سوء اختيار جدا.

وأنا أتفق مع الآخرين، أن التعبيرات المنتظمة يبدو خيارا سيئا. أنه قد عمل مع أزواج و 3 من نفس النوع، و 4 من نوع. ومع ذلك، فإنه قد تحصل على نوع من صعبة (أو يستحيل) مرة واحدة تبدأ في النظر في أيدي مثل الإحمرار، المستقيمة، و 2 زوج.

وأعتقد أن أفضل حل هو تقييم بطاقات من أفضل من ناحية إلى ناحية أسوأ، كما هو موضح هنا ، وبمجرد العثور على المباراة، ثم وهذا هو يدك. وهذا يضمن أن لا نخلط بين 4 من نوع لمدة 2 زوج. أو تدفق على التوالي للتو على التوالي، أو مجرد مطاردة. واود ان اذهب مع mmattax وإنشاء كائن لبطاقة، وكائن لمن ناحية، ثم يمكنك تقييم البطاقات في كل جهة لمعرفة ما إذا كانت تفي بالمعايير المطلوبة لكل جهة.

وأعتقد أن الأعداد الأولية هي حل جيد لذلك. النظر فيما يلي:

//            D H S C    
colors =    [7,5,3,2]

//           A  Q  K  J  T  9  8  7  6  5  4  3  2    
ranks =     [61,59,53,43,41,37,31,29,23,19,17,13,11,61]

ويتم التعرف على بطاقة فريدة من ألوان عدد أولي * رئيس وعدد رتبة. (على سبيل المثال، اعتبارا من الماس: رئيس الوزراء = 7 * 61)

وهكذا يتم تحديد سطح السفينة فريدة من نوعها entiere أو combinaison رئيس * * رئيس الوزراء رئيس الوزراء * رئيس الوزراء * رئيس الوزراء

وإذا كان هناك تدفق من الماس، يجب يعبي ID سطح السفينة 5 بطاقات من قبل divisble (وزارة الدفاع = 0) بواسطة دافق من ID الماس (7 ^ 5 للون الماس رئيس الوزراء هو 7)

وعن طريق سلسلة لتمثيل ناحية يبدو وكأنه قرار الفقراء. توصيتي سيكون لاستخدام التعداد لتمثيل البدلة وآخر لتمثيل قيمة رقمية من البطاقة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top