PHP Texas Hold'em Hand Evaluator: Evaluating Poker Hands with Prime Numbers

PHP Texas Hold’em Hand Evaluator: Evaluating Poker Hands with Prime Numbers

Dalam permainan kartu, evaluasi tangan poker adalah salah satu bagian yang paling penting. Dalam kasus ini, kami memiliki paket PHP yang dapat membantu Anda dalam melakukan evaluasi tangan poker dengan menggunakan prime numbers (bilangan prima). Pada artikel ini, kita akan melihat bagaimana paket ini bekerja dan bagaimana Anda dapat menggunakannya untuk menentukan rank tangan poker.

Getting Started

Untuk memulai, Anda perlu menginstall paket ini dengan menggunakan composer seperti berikut:

composer require si2k63/php-texas-hold-em-evaluator

Overview

Paket PHP Texas Hold'em Hand Evaluator adalah evaluasi tangan poker yang cepat dan mudah digunakan. Anda dapat membuat kartu dari deck factory class (atau menginisialisasi kelas-kelas tersebut secara eksplisit) dan melewati kartu-kartu ke kelas evaluate untuk menentukan rank tangan dalam bentuk integer atau deskripsi penuh.

Deck Class

Kelas Deck adalah factory class yang akan menghasilkan, membagi, dan menawarkan deck kartu 52. Anda dapat menginisialisasi kelas ini dengan cara berikut:

$deck = new Deck();

Shuffling deck:

$deck->shuffle();

Menggambar kartu:

$card = $deck->draw();

Menggambar kartu spesifik:

$card = $deck->draw(Rank::Ace, Suit::Diamonds);

Mengetahui apakah kartu ada di deck:

if ($deck->contains(new Card(Rank::Ace, Suit::Diamonds))) {
 echo "The Ad is in the deck.";
} else {
 echo "The Ad is not in the deck.";
}

Card Class

Kelas Kartu adalah kelas yang akan menginisialisasi kartu dengan menggunakan rank dan suit. Anda dapat menginisialisasi kelas ini dengan cara berikut:

$card = new Card(Rank::Ace, Suit::Hearts);

Mengambil nilai unik kartu:

echo $card->getUniqueValue();

Evaluator Class

Kelas Evaluator adalah kelas abstrak yang akan menerima iterator hand melalui metode add iterator. Saat ini, kelas HighCardEvaluator adalah kelas yang mengextend kelas ini dan melewati iterator classes melalui konstruktor.

Menginisialisasi kelas high card:

$evaluator = new HighCardEvaluator();

Menentukan rank koleksi kartu:

$hand = Hand::fromArray([
 new Card(Rank::Ace, Suit::Clubs),
 new Card(Rank::Ace, Suit::Spades),
 new Card(Rank::Ace, Suit::Diamonds),
 new Card(Rank::King, Suit::Clubs),
 new Card(Rank::Jack, Suit::Hearts)
]);

$evaluator = new HighCardEvaluator();
$result = $evaluator->evaluate($hand);

echo "Rank: " . $result->getRanking() . PHP_EOL;
echo "Name: $name" . $result->getName() . PHP_EOL;

Extending the Evaluator Class

Anda dapat mengextend kelas evaluator dan membuat evaluator Anda sendiri (misalnya, low card hand evaluator untuk permainan seperti 2-7 Triple Draw). Anda harus menginisialisasi kelas iterator tangan Anda, yang akan melewati tangan-tangan low card dalam urutan rank (tertinggi ke terendah) ke kelas Anda.

Additional Examples

Direktori contoh berisi dua skrip contoh bagaimana evaluator hand ini dapat digunakan. Contoh 1 – hand.php: Menggambar dua tangan kartu lima-card secara acak dan membandingkan mereka untuk menentukan tangan yang paling tinggi. Contoh 2 – equity.php: Membandingkan dua tangan awal dari Texas Hold'em dan menggambar semua papan-papan untuk menentukan persentase waktu masing-masing tangan menang.

Requirements

PHP 8.1 (Karena enums digunakan untuk Ranks dan Suits)
Composer

How It Works

Paket ini bekerja dengan menggunakan prime numbers untuk menghitung rank tangan poker. Dalam cara kerja, paket ini membagi deck kartu menjadi beberapa bagian dan mencatat rank tangan yang sesuai dengan masing-masing bagian. Saat Anda ingin menentukan rank tangan, paket ini akan mencari key dari integer dalam array ranking yang telah dihitung sebelumnya.

References

Leave a comment