Dalam artikel ini, kita akan mempelajari cara membuat permainan poker di Unity. Sebelumnya, kita harus mengetahui aturan dasar dari permainan poker. Dalam permainan poker, setiap pemain dapat melakukan dua tindakan: call (menanggap) atau fold (melewati). Jika seseorang fold, maka ia tidak ikut serta dalam pertandingan saat ini dan menunggu pertandingan berikutnya.
Membuat Deck Kartu
Di Unity, kita dapat mewakili deck kartu menggunakan daftar. Setiap objek kartu memiliki properti seperti suit (Clubs, Diamonds, Hearts, Spades) dan rank (Two, Three, Four, dst., hingga Ace). Mari mulai dengan membuat kelas untuk Card dan metode untuk membuat deck kartu yang terdiri dari 52 kartu unik.
Kita akan menggunakan script bernama "DeckManager" dan menambahkan dua kelas ke dalamnya. Salah satu adalah kelas DeckManager yang turunan dari MonoBehaviour, dan lainnya adalah kelas Card yang berisi properti-properti kartu. Kita akan menggunakan kelas DeckManager untuk menghasilkan daftar objek kartu. Berikut cara melakukannya.
using UnityEngine;
using System.Collections.Generic;
public class Card
{
public string suit;
public string rank;
}
public class DeckManager : MonoBehaviour
{
private List<Card> deck = new List<Card>();
public void CreateDeck()
{
string[] suits = { "Clubs", "Diamonds", "Hearts", "Spades" };
string[] ranks = { "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King", "Ace" };
foreach (string suit in suits)
{
foreach (string rank in ranks)
{
Card newCard = new Card();
newCard.suit = suit;
newCard.rank = rank;
deck.Add(newCard);
}
}
}
}
Mengacak Deck
Setelah deck kartu dibuat, langkah berikutnya adalah mengacak deck. Mengacak deck berarti mengacaukan urutan kartu. Algoritma Fisher-Yates shuffle adalah metode populer untuk mengacak daftar. Kita akan membuat metode bernama "ShuffleDeck" yang mengambil deck kartu dan mengacasinya menggunakan algoritma Fisher-Yates.
public void ShuffleDeck()
{
int n = deck.Count;
while (n > 1)
{
n--;
int k = Random.Range(0, n + 1);
Card temp = deck[k];
deck[k] = deck[n];
deck[n] = temp;
}
}
Menyebar Kartu ke Pemain
Menyebar kartu berarti mendistribusikan kartu ke pemain. Dalam sebagian besar permainan poker, setiap pemain menerima 5 kartu. Kita akan membuat metode bernama "DealCards" yang mengambil deck dan jumlah pemain sebagai input dan mengembalikan daftar tangan untuk setiap pemain. Setiap tangan akan diwakili sebagai daftar kartu.
Kita akan membuat metode bernama "DealCards" yang mengembalikan daftar kartu dan mengambil parameter integer untuk jumlah pemain.
public List<List<Card>> DealCards(int numberOfPlayers)
{
List<List<Card>> hands = new List<List<Card>>();
for (int i = 0; i < numberOfPlayers; i++)
{
List<Card> hand = new List<Card>();
for (int j = 0; j < 5; j++) // Menyebar 5 kartu ke setiap pemain
{
hand.Add(deck[0]);
deck.RemoveAt(0);
}
hands.Add(hand);
}
return hands;
}
Dalam kode di atas, kita menambahkan 5 kartu pertama dari daftar kartu ke daftar tangan dan menghapusnya dari daftar kartu. Kita lakukan hal ini untuk setiap pemain, sehingga mendistribusikan kartu.
Sekarang kita telah berhasil membuat deck, mengacaknya, dan menyebar kartu ke pemain. Dalam artikel berikutnya, kita akan melihat cara mengimplemenakan round taruhan dan menentukan pemenang. Jika Anda memiliki pertanyaan sebelum ini, Anda dapat meninggalkannya di kotak komentar di bawah.