Dalam assignment ini, kita akan menggunakan pengetahuan tentang Enums untuk membuat permainan poker Texas Hold'em! Jika Anda tidak familiar dengan permainan poker Texas Hold'em, Anda dapat membaca artikel tentang generic rules of poker.
Assignment #6 – Fun with Enums
Dalam assignment ini, kita tidak akan mencoba untuk mengimplemenkan semua aspek dari game poker, tetapi hanya beberapa elemen kunci yang dapat digunakan untuk memperluas permainan lainnya. Oleh karena itu, mari kita bicarakan tentang elemen-elemen yang harus diimplemenkan dalam assignment ini.
Membuat Deck of Cards
Kita diminta membuat Deck of Cards yang dapat digunakan dalam permainan poker. Deck harus berupa deck kartu standar terdiri dari 52 kartu, dibagi menjadi 4 suit (diamonds, clubs, hearts, spades) dengan value ranging dari TWO hingga ACE.
Mengadukkan dan Menyebarkan Kartu
Setelah membuat Deck of Cards, kita perlu mengadukkan deck dan menyebarkan kartu ke pemain. Setiap pemain memiliki satu Hand of cards, yang terdiri dari dua kartu unik dari deck.
Menyebarkan Kartu Komunitas
Selain itu, kita juga perlu menyebarkan "community cards". Dalam iterasi ini, kita hanya akan menyebarkan 5 kartu komunitas sekaligus. Saya tidak ingin memasukkan aspek "betting" ke dalam assignment ini.
Menghitung Pemenang
Setelah semua pemain mendapatkan kartu tangan dan kartu komunitas, maka kita perlu menghitung siapa pemain yang memiliki tangan terbaik. Untuk mencapai ini, kita perlu mengetahui tipe tangan apa yang lebih baik dari lainnya, sehingga mari kita bicarakan tentang daftar berikut:
- One pair: Dua kartu dengan nilai sama
- Two pairs: Dua pasang kartu
- Three of a kind: Tiga kartu dengan nilai sama
- Straight: Kartu-kartu yang berurutan ( contohnya, 1-2-3-4-5)
- Flush: Kartu-kartu dengan suit yang sama
- Full house: Dua pasang kartu dan tiga kartu lainnya dengan nilai sama
- Four of a kind: Empat kartu dengan nilai sama
- Straight flush: Kartu-kartu yang berurutan dan memiliki suit yang sama
Menghitung Pemenang
Kita perlu menghitung pemenang berdasarkan tipe tangan yang terbaik. Jika dua pemain memiliki tipe tangan yang sama, maka kita perlu menghitung siapa yang memiliki nilai kartu yang lebih tinggi.
Menampilkan Hasil
Setelah menghitung pemenang, kita perlu menampilkan hasilnya ke console window. Kita juga perlu menampilkan tangan masing-masing pemain dan kartu komunitas. Jika terjadi draw (i.e., dua pemain memiliki tipe tangan yang sama), maka kita perlu menghitung siapa yang memiliki nilai kartu yang lebih tinggi.
Saya Harap Anda Belajar
Dalam assignment ini, saya harap Anda dapat belajar tentang Data Structures, yaitu List dan Map. Setiap solusi akan berbeda, jadi jika Anda tidak menggunakan data structure tersebut, maka tidak masalah. Namun, saya percaya bahwa Anda akan memerlukan mereka untuk membuat hidup Anda lebih mudah.
Kita juga akan belajar bagaimana mengurutkan koleksi, yang sangat penting dalam permainan poker. Solusi saya bahkan menggunakan sedikit Recursion, tetapi apakah Anda ingin melakukannya atau tidak, sepenuhnya tergantung pada Anda.