مكتبة تقييم يد بوكر بايثون خالصة
[ 3 ❤ ] , [ 3 ♠ ]
$ pip install treys
Treys هو منفذ Python 3 من Deuces. معظم العمل مأخوذ من شوكة مساعدون.
تمت كتابة Treys (في الأصل Deuces) بواسطة Will Drevo لمسابقة MIT Pokerbots. إنه خفيف الوزن وسريع. تتم جميع عمليات البحث باستخدام عمليات البحث الحسابية والقاموسية. ومع ذلك، لن تتفوق Treys على تنفيذ لغة C (~ 250 ألف تقييم/ثانية) ولكنها مفيدة في المواقف التي تتطلب لغة Python أو حيث يتم تخصيص وقت تفكير معقول للروبوتات (مقياس زمني بشري).
يتعامل Treys مع عمليات البحث اليدوية للبطاقات 5 و6 و7. يتم إجراء عمليات البحث عن البطاقات رقم 6 و7 من خلال التقييم التجميعي لاختيارات البطاقات الخمسة.
Treys سهل الإعداد والاستخدام.
>> > from treys import Card
>> > card = Card . new ( 'Qh' )
يتم تمثيل كائنات البطاقة كأعداد صحيحة للحفاظ على أداء Treys وخفيف الوزن.
لنقم الآن بإنشاء اللوحة ومثال على توزيع ورق Texas Hold'em:
>> > board = [
>> > Card . new ( 'Ah' ),
>> > Card . new ( 'Kd' ),
>> > Card . new ( 'Jc' )
>> > ]
>> > hand = [
>> > Card . new ( 'Qs' ),
>> > Card . new ( 'Th' )
>> > ]
طباعة جميلة للأعداد الصحيحة للبطاقة الطرفية:
>>> Card.print_pretty_cards(board + hand)
[ A ❤ ] , [ K ♦ ] , [ J ♣ ] , [ Q ♠ ] , [ T ❤ ]
إذا قمت بتثبيت termacolor
، فسيتم تلوينها أيضًا.
بخلاف ذلك، انتقل مباشرةً إلى تقييم قوة يدك:
>> > from treys import Evaluator
>> > evaluator = Evaluator ()
>> > print ( evaluator . evaluate ( board , hand ))
1600
يتم تقييم قوة اليد على مقياس من 1 إلى 7462، حيث 1 هو Royal Flush و7462 غير مناسب 7-5-4-3-2، حيث لا يوجد سوى 7642 توزيع ورق مصنف بشكل واضح في البوكر. مرة أخرى، ارجع إلى منشور مدونتي للحصول على شرح رياضي أكثر اكتمالًا لسبب حدوث ذلك.
إذا كنت تريد توزيع البطاقات بشكل عشوائي من مجموعة أوراق اللعب، فيمكنك أيضًا القيام بذلك باستخدام Treys:
>> > from treys import Deck
>> > deck = Deck ()
>> > board = deck . draw ( 5 )
>> > player1_hand = deck . draw ( 2 )
>> > player2_hand = deck . draw ( 2 )
وطباعتها:
>>> Card.print_pretty_cards(board)
[ 4 ♣ ] , [ A ♠ ] , [ 5 ♦ ] , [ K ♣ ] , [ 2 ♠ ]
>>> Card.print_pretty_cards(player1_hand)
[ 6 ♣ ] , [ 7 ❤ ]
>>> Card.print_pretty_cards(player2_hand)
[ A ♣ ] , [ 3 ❤ ]
دعونا نقيم قوة كلتا اليدين، ثم نصنفهم في فئات، واحدة لكل نوع يد (بطاقة عالية، زوج، إلخ)
>> > p1_score = evaluator . evaluate ( board , player1_hand )
>> > p2_score = evaluator . evaluate ( board , player2_hand )
>> > p1_class = evaluator . get_rank_class ( p1_score )
>> > p2_class = evaluator . get_rank_class ( p2_score )
أو احصل على سلسلة سهلة الاستخدام لوصف النتيجة،
>>> print("Player 1 hand rank = %d (%s)n" % (p1_score, evaluator.class_to_string(p1_class)))
Player 1 hand rank = 6330 (High Card)
>>> print("Player 2 hand rank = %d (%s)n" % (p2_score, evaluator.class_to_string(p2_class)))
Player 2 hand rank = 1609 (Straight)
أو، الأروع من ذلك كله، الحصول على تحليل تفصيلي لمراحل اللعبة فيما يتعلق بقوة اليد:
>>> hands = [player1_hand, player2_hand]
>>> evaluator.hand_summary(board, hands)
========== FLOP ==========
Player 1 hand = High Card, percentage rank among all hands = 0.893192
Player 2 hand = Pair, percentage rank among all hands = 0.474672
Player 2 hand is currently winning.
========== TURN ==========
Player 1 hand = High Card, percentage rank among all hands = 0.848298
Player 2 hand = Pair, percentage rank among all hands = 0.452292
Player 2 hand is currently winning.
========== RIVER ==========
Player 1 hand = High Card, percentage rank among all hands = 0.848298
Player 2 hand = Straight, percentage rank among all hands = 0.215626
========== HAND OVER ==========
Player 2 is the winner with a Straight
حقوق الطبع والنشر (ج) 2013 ويل دريفو
يُمنح الإذن مجانًا لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة به ("البرنامج")، للتعامل في البرنامج دون قيود، بما في ذلك، على سبيل المثال لا الحصر، حقوق الاستخدام والنسخ والتعديل والدمج. ونشر و/أو توزيع وترخيص من الباطن و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين تم توفير البرنامج لهم بالقيام بذلك، وفقًا للشروط التالية:
يجب تضمين إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الكبيرة من البرنامج.
يتم توفير البرنامج "كما هو"، دون أي ضمان من أي نوع، صريحًا أو ضمنيًا، بما في ذلك، على سبيل المثال لا الحصر، ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. لا يتحمل المؤلفون أو أصحاب حقوق الطبع والنشر بأي حال من الأحوال المسؤولية عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في إجراء العقد أو الضرر أو غير ذلك، الناشئة عن أو خارج أو فيما يتعلق بالبرنامج أو الاستخدام أو المعاملات الأخرى في برمجة.