Jurnal Pendidikan Matematika dan Matematika
PERMAINAN KARTU BLACKJACK BERBASIS ANDROID MENGGUNAKAN ALGORITMA GREEDY
Yasin Efendi1*),Yoli Prastika Koto 2),Sari Palestina 3)
1,2,3)Fakultas Ilmu Pendidikan, Universitas Muhammadiyah Jakarta, Jl. K.H. Ahmad
Dahlan, Cireundeu, Kec. Ciputat Tim., Kota Tangerang Selatan, Banten 15419 [email protected]
ABSTRAK
Salah satu permainan kartu yang digemari oleh masyarakat internasional adalah permainan kartu Blackjack. Tujuan permainan kartu Blackjack adalah mengumpulkan jumlah nilai atau yang terdekat dengan 21 (dua puluh satu) tetapi tidak lebih dari 21 (dua puluh satu). Permainan ini akan menjadi lebih menarik, memasyarakat dan akan lebih empati saat dimainkan di lingkungan masyarakat Indonesia beserta daerah apabila bahasa pengantar dalam aplikasi permainan kartu Blackjack ini dibuat dalam bahasa Indonesia dan bahasa daerah yaitu bahasa Jawa dan bahasa Sunda dalam bentuk aplikasi permainan pada gadget Android yang telah umum digunakan oleh masyarakat.
Dalam pengimplementasian permainan kartu Blackjack dibutuhkan algoritma yang dapat menunjang terbentuknya aplikasi sesuai dengan kebutuhan permainan untuk ditanamkan pada Artificial Intelligent dalam Bandar sebagai lawan pemain.
Pemanfaatan algoritma Greedy sesuai dengan konsep permainan kartu Blackjack karena akan menemukan kemungkinan untuk memutuskan akan menambah kartu atau tidak pada setiap langkah. Diharapkan dengan mengambil solusi optimal lokal akan mendapatkan hasil optimal pada permainan (keseluruhan langkah).
Kata kunci: algoritma greedy; kartu blackjack, gadget Android.
PENDAHULUAN
Permainan kartu adalah salah satu permainan praktis yang dapat dimainkan dimana saja dan oleh siapa saja sehingga menyenangkan untuk menghabiskan waktu senggang. Permainan kartu memiliki berbagai macam jenis dan tipe permainan yang dapat dimainkan oleh masyarakat umum. Setiap negara bahkan wilayah suatu negara memiliki jenis permainannya sendiri. Di negara Indonesia permainan kartu yang banyak dikenal diantaranya adalah ; permainan kartu 41 (empat puluh satu), Cangkulan,
Song, dan sebagainya. Namun, yang populer di banyak negara antara lain Poker, Canasta, Blackjack, Solitaire, Bridge dengan jumlah pemain dan peraturan permainan yang berbeda-beda.
Di lingkungan masyarakat luas pada umumnya satu Deck kartu remi berisi 54 (lima puluh empat) lembar kartu.
Apakah yang dimaksud dengan Deck ? Deck adalah sekumpulan kartu yang dipakai dalam permainan kartu. Gambar kartu dibagi menjadi empat motif yang berbeda yaitu Sekop (♠), Hati (♥), Wajik (♦), dan Keriting (♣) yang masing- masing terdiri dari 13 (tiga belas) kartu
yakni As, 2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen dan King. Dan kartu tambahan berupa dua kartu Joker, yaitu kartu Joker Hitam dan kartu Joker Merah.
Karena sifatnya sangat menyenangkan, praktis untuk dimainkan, dan tidak dibatasi baik oleh waktu, tempat, usia, berbagai kalangan dan suku bangsa, dalam perkembangannya, permainan kartu ini mengalami perubahan terutama pada bidang teknologi maka jenis permainan ini dapat diimplementasikan menjadi sebuah game permainan untuk gadget berbasis Android.
Salah satu permainan yang digemari oleh masyarakat internasional adalah permainan kartu Blackjack. Blackjack atau lebih dikenal dengan Twenty - One, Vingt - et - un (bahasa Perancis untuk Twenty - One atau Pontoon) merupakan salah satu dari sebuah permainan kartu terbesar yang biasanya dimainkan di Kasino sebagai ajang untuk mengadu peruntungan.
Tetapi masyarakat pada umumnya memainkan permainan kartu ini sebagai sarana hiburan. Permainan ini dimainkan menggunakan kartu remi dengan 52 (lima puluh dua) kartu dan biasanya dimainkan oleh dua pemain atau lebih dengan tujuan mengumpulkan jumlah nilai atau mendekati 21 (dua puluh satu) tetapi tidak lebih dari nilai 21 (dua puluh satu). Oleh karena itu permainan kartu ini disebut dengan Twenty - One.
TEORI DASAR
Rekayasa Perangkat Lunak
Sebuah disiplin ilmu yang mencakup segala hal yang berhubungan dengan proses pengembangan perangkat lunak sejak dari tahap perancangan hingga tahapan implementasi serta pasca implementasi sehingga siklus hidup perangkat lunak dapat berlangsung secara efisien dan terukur.
Algoritma Greedy
Algoritma Greedy adalah algoritma yang membentuk solusi langkah per langkah.
Pada setiap langkah tersebut akan dipilih keputusan yang paling optimal.
Keputusan tersebut tidak perlu memperhatikan keputusan selanjutnya yang akan diambil, dan keputusan tersebut tidak dapat diubah lagi pada langkah selanjutnya. Prinsip utama Algoritma Greedy adalah ”Take what you can get now !”.
Maksud dari prinsip tersebut adalah sebagai berikut : pada setiap langkah dalam Algoritma Greedy, diambil keputusan yang paling optimal untuk langkah tersebut tanpa memperhatikan konsekuensi pada langkah selanjutnya.
Dinamakan solusi tersebut dengan optimum lokal. Kemudian saat pengambilan nilai optimum local pada setiap langkah, diharapkan tercapai optimum global, yaitu tercapainya solusi optimum yang melibatkan keseluruhan langkah dari awal sampai akhir.
Blackjack
Permainan Blackjack (atau dikenal juga dengan nama lain Twenty-one, Vingt-et- un, atau Pontoon) merupakan permainan kartu yang paling sering dimainkan di kasino. Perpaduan antara permainan mengadu untung, keahlian, dan rumor tentang memenangkan permainan ini dengan ilmu hitungan peluang membuatnya menjadi permainan yang digemari para pengunjung kasino.
Peraturan permainan Blackjack :
Blackjack adalah permainan kartu yang menggunakan pack kartu remi standar (terdiri dari 52 kartu : As, 2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen dan King dalam 4
tipe yaitu : Wajik, Sekop, Hati, Keriting).
Dalam tiap permainan selalu terdapat seorang Dealer (Bandar) dan minimal satu orang pemain. Bandar adalah individu yang paling penting dalam permainan ini karena para pemain berusaha mengalahkan bandar dan bukan saling bersaing dengan pemain lainnya.
Pada permainan Blackjack, kartu mendapat nilai:
a. 2 - 10 : sesuai nilai yang tertera pada kartu
b. Jack, King dan Queen : 10 poin c. As : kartu spesial, dapat bernilai 1
atau 11 poin.
Deskripsi Permainan dan Parameter Keberhasilan
Pemain dan Bandar mengkombinasikan nilai kedua kartu yang telah didapatkan dari Bandar. Kombinasi nilai yang tertinggi tanpa melebihi nilai 21 (dua puluh satu) atau kombinasi nilai yang menghasilkan Blackjack akan memenangkan permainan.
Nilai setiap kartu adalah sebagai berikut:
Gambar Nilai Pada Kartu Spesifikasi Sistem
Berdasarkan dari analisis kebutuhan sistem dan ditambah dengan deskripsi sistem yang sudah dijelaskan di atas, maka selanjutnya dibuat spesifikasi sistem seperti penjelasan berikut :
1. Input
Input atau masukan pada aplikasi ini adalah fungsi-fungsi yang sudah diterapkan pada tombol-tombol yang tersedia yang kemudian digunakan oleh pemain berdasarkan fungsinya masing-masing.
2. Proses
Ketika aplikasi dijalankan, maka akan muncul halaman utama dari permainan. Di halaman tersebut untuk memulai permainan Pemain memilih pilihan bahasa terlebih dahulu. Setelah memilih bahasa, pemain akan langsung dapat memulai permainan sesuai dengan pilihan bahasa pengantar yang telah dipilih. Selama permainan berlangsung, sistem akan secara otomatis secara berulang menjalankan perintah-perintah yang sudah ditetapkan berdasarkan tindakan yang dilakukan oleh Pemain berdasarkan konsep permainan Blackjack.
3.Output
Output atau keluaran dari sistem ini adalah pemenang permainan dengan jumlah nilai kartu yang lebih besar tanpa melebihi nilai 21 (dua puluh satu).
Penerapan Algoritma Greedy
Berikut rancangan skema algoritma greedy dalam aplikasi permainan kartu Blackjack ini :
ArrKartu [1..52] of Boolean ; {Himpunan kartu, ArrKartu[i]
(1<=i<=52) true bila kartu yang bersesuaian masih mungkin terambil
(belum terbuka)}
MyKartu [] of integer; {Jumlah nilai kartu yang dimiliki}
PROCEDURE greedy() Kamus :
Stop : Boolean ; Nilai : Integer ; Algoritma : stop = false;
AwalMain(); {Menginisialisasi permainan, membagi kartu secara acak}
while (not (stop)) do if (isAmbil()) then
{predikat (fungsi) seleksi,true jika kemungkinan keberadaan kartu yang menyebabkan jumlah nilai kartu yang akan dimiliki melebihi angka 21 lebih kecil
daripada yang tidak, jika true maka ambil sebuah kartu}
Ambil();
endif if (not (isLayak())) then
{predikat (fungsi) kelayakan, false jika kartu yang diambil bersama-sama dengan kartu yang telah dimiliki jumlah nilainya melebihi angka 21, jika tidak layak maka himpunan kandidat kartu yang tersisa akan diabaikan karena memutuskan untuk tidak akan pernah mengambil kartu lagi}
stop = true;
endif endwhile nilai = solusi();
output(nilai); {mengeluarkan nilai solusi}
endprocedure
Penerapan algoritma tersebut dalam permainan kartu Blackjack ini adalah sebagai berikut :
public void btnStandClick() {
// Computer Play here do {
// Opening 1 Card of Dealer
dealerCall();
calculateDealerScore();
// Aces count as 1
if (_dealerScore > 21) { for (int i = 0; i < 5; i++) {
if
(_dealerCardArray[i] == 'A'
&& _dealerScoreCount[i] == 11) {
_dealerScoreCount[i] = 1;
break;
} }
calculateDealerScore();
}
} while (_dealerScore < 17 &&
_dealerScore <= _playerScore
&&
_dealerCardNumber < 5);
if (_dealerScore > 21) { youWon();
} else {
checkWin();
}
if (_dealerCardNumber >= 5) { checkWin();
} }
public void checkWin() { if (_dealerScore > _playerScore) {
youLose();
} else if (_playerScore > _dealerScore){
youWon();
} else {
Toast.makeText(MainActivity.this,
"Seri!!!",
Toast.LENGTH_SHORT).show();
} }
Flowchart
Flowchart dalam aplikasi ini berguna untuk mendesain dan mempresentasikan aplikasi permainan. Flowchart juga berfungsi untuk memberikan gambaran aliran permainan yang akan diterapkan ke dalam sistem.
Flowchart aplikasi permainan Blackjack dimulai dengan sistem menampilkan halaman awal. Dalam halaman awal untuk memulai permainan, Pemain akan memilih bahasa pengantar permainan terlebih dahulu. Setelah Pemain memilih bahasa, permainan dimulai dan Bandar akan langsung membagikan kartu.
Gambar Flowchart Permainan Kartu Blackjack
Pengujian
Pengujian aplikasi ini menggunakan dua metode pengujian yaitu black box dan white box. Pengujian black box yaitu pengujian yang berfokus pada persyaratan fungsional perangkat lunak.
Sedangkan pengujian dengan metode white box adalah pengujian yang dilakukan berdasarkan fungsi-fungsi yang ada di dalam setiap form.
a. Graph Matriks
Metode selanjutnya yang dipakai untuk melakukan testing adalah menggunakan metode graf matriks, dimana pengisian nilai-nilai di dalam matriks didasarkan pada hubungan antar node yang ada di dalam flowgraph. Jika ada hubungan antara node maka diberikan nilai 1, dan jika tidak ada hubungan maka diberi nilai 0 (nol). Hasil akhir dari metode graf matriks ini adalah penjumlahan dari hubungan antar node tersebut, hal ini dapat dilihat dalam tabel berikut : Ketika kondisi gabungan ditemukan, maka penggambaran flow graph akan menjadi lebih rumit. Kondisi gabungan biasanya muncul jika satu atau lebih operator boolean (OR, AND, NAND, NOR) ditemukan dalam perintah, seperti terlihat pada gambar dibawah ini :
Gambar Flowgraph Artificial Intelligent a. Cyclomatic Complexity
Cyclomatic Complexity merupakan suatu sistem pengukuran yang menyediakan menyediakan ukuran kuantitatif dari kompleksitas logika suatu program. Pada basis path testing, hasil dari cyclomatic complexity menentukan banyaknya independent path. Independent path adalah sebuah kondisi pada program yang menghubungkan node awal dengan node akhir.
START
PEMAIN MEMILIH BAHASA
MEMULAI PERMAINAN
KARTU DIBAGIKAN
BERTAHAN
MAIN LAGI ?
TAMPILKAN MENANG
END MENANG ?
TAMPILKAN PEMAIN KALAH Y
Y TAMBAH KARTU ? TAMPILKAN SCORE
N
N N
Y
Independent path adalah adalah sebuah kondisi pada program yang menghubungkan node awal dengan node akhir.
Dari flowgraph di atas terlihat bahwa kode-kode yang telah dinotasikan dalam bentuk node memiliki 9 node, 11 edge dan 3 predicate, adapun susunannya adalah sebagai berikut :
i. Node = 1; 2; 3; 4; 5; 6; 7; 8; 9 ii. Edge = 1→2; 2→3; 3→4; 4→5;
4→3; 5→6; 5→; 6→8; 6→7;
7→9; 8→3
iii. Predicate = 3
Dari hasil flowgraph diatas, maka dapat dilakukan penghitungan kompleksitas siklomatis dengan 2 persamaan yang digunakan yaitu :
1) Penghitungan berdasarkan lintasan dalam flowgraph atau path (p) dihasilkan :
P1 = 1→2→3→4→5→6→7→8→9
P2 =
1→2→3→4→5→6→8→3→4→5→6
→7→9
P3 = 1→2→3→4→3→4→5→6→7→9 P4 = 1→2→3→4→5→7→9
2) Penghitungan berdasarkan pada rumus V(G) = E-N+2, dimana E menyatakan Edge dan N menyatakan Node, dihasilkan : V(G) = E – N + 2
= 11 – 9 + 2 = 4
3) Penghitungan berdasarkan rumus V(G)= P+1 menyatakan predicate, dihasilkan :
V(G) = P + 1
= 3 + 1
= 4
Graph Matriks
Metode selanjutnya yang dipakai untuk melakukan testing adalah menggunakan metode graf matriks, dimana pengisian
nilai-nilai di dalam matriks didasarkan pada hubungan antar node yang ada di dalam flowgraph. Jika ada hubungan antara node maka diberikan nilai 1, dan jika tidak ada hubungan maka diberi nilai 0 (nol). Hasil akhir dari metode graf matriks ini adalah penjumlahan dari hubungan antar node tersebut, hal ini dapat dilihat dalam tabel berikut :
Tabel 12 Graph Matriks Artificial Intelligent
1 2 3 4 5 6 7 8 9
1 1 1 – 1 = 0
2 1 1 – 1 = 0
3 1 1 – 1 = 0
4 1 1 2 – 1 = 1
5 1 1 2 – 1 = 1
6 1 1 2 – 1 = 1
7 1 1 – 1 = 0
8 1 1 – 1 = 0
9
3 + 1
= 4
Basis Path Testing
Dalam melakukan pengujian ini, digunakan metode graph. Dimana langkah awal dari metode ini dibuatkan flowchart dari penggalan baris kode diats, adapun flowchart-nya adalah sebagai berikut :
Gambar Flowchart Artificial Intelligent Pada Bandar
Pada setiap rancangan prosedural dapat diterjemahkan ke dalam flow graph.
Dibawah ini merupakan bagian dari PDL (Program Design Language) dan flowgraph-nya.
Ketika kondisi gabungan ditemukan, maka penggambaran flow graph akan menjadi lebih rumit. Kondisi gabungan biasanya muncul jika satu atau lebih operator boolean (OR, AND, NAND, NOR) ditemukan dalam perintah, seperti terlihat pada gambar dibawah ini :
Gambar Flowgraph Artificial Intelligent Evaluasi Hasil Pengujian
Berdasarkan hasil pengujian diatas maka didapatkan beberapa kesimpulan sebagai berikut :
1. Aplikasi permainan ini dapat menjalankan fungsinya dengan baik dan benar sesuai dengan kebutuhan sistem permainan 2. Fungsi-fungsi utama dan fungsi
tombol yang berkaitan dengan konsep permainan Blackjack dapat berjalan dengan baik 3. Proses pengecekan parameter
keberhasilan dan sistem skoring berjalan dengan baik hingga permainan berakhir.
Kesimpulan
Dari hasil pelaksanaan Tugas Akhir ini, dapat disimpulkan mengenai beberapa hal sebagai berikut :
1. Aplikasi permainan kartu Blackjack ini dapat dibuat dengan memanfaatkan Algoritma Greedy sebagai dasar pembuatan permainan.
Algoritma Greedy sebagai dasar dari sistem yang akan menjadi pengambil keputusan selama permainan berlangsung.
2. Aplikasi permainan kartu Blackjack ini dapat dimainkan oleh 1 (satu) orang pemain melawan komputer dengan memanfaatkan kecerdasan buatan (Artificial Intelligent).
3. Dari sisi Pemain dalam memainkan permainan kartu Blackjack ini, faktor
keberuntungan juga
mempengaruhi hasil akhir permainan.
4. Permainan kartu Blackjack yang telah terkenal dalam skala internasional dapat diperkenalkan kepada masyarakat Indonesia yang belum familiar dengan permainan ini dengan menggunakan bahasa Indonesia,
Jawa dan Sunda sebagai bahasa pengantar.
Saran
Dari hasil pelaksanaan tugas akhir ini, diberikan beberapa saran sebagai berikut:
1. Ditambahkan pilihan Multiplayer (dapat dimainkan bersama-sama dengan pemain lain). Hal ini dibuat apabila pemain ingin memainkan permainan kartu Blackjack melawan user lain yang nantinya akan terkoneksi melalui jaringan lokal.
2. Untuk pengembangan selanjutnya, aplikasi ini sebaiknya ditambahkan efek animasi yang lebih menarik agar tidak monoton.
3. Game dapat dibuat menjadi cross-platform (dapat dimainkan di platform selain android).
DAFTAR PUSTAKA
Hidayatullah, A. Taufiq. 2009.
Pemrograman Java : Dasar-Dasar Pengenalan dan Pemahaman, Yogyakarta : Andi Publisher.
Munawar. 2005. Pemodelan Visual dengan UML. Yogyakarta : Graha Ilmu.
Petri, Jurgen. 2010. Netbeans Platform 6.9 Developer’s Guide, Packt Publishing Ltd., Birmingham, B27 6PA, UK
Pressman, Roger S. 2010. Rekayasa Perangkat Lunak Pendekatan, Yogyakarta : Andi.
Satyaputra, Alfa, M.Sc, Aritonang, Eva Maulina, S.Kom. 2014. Beginning Android Programming with ADT
Bundle. Jakarta : Elex Media Komputindo.
Shalahuddin, M, Rosa A.S. 2010. Modul Pembelajaran Algoritma dan Pemrograman. Bandung : Informatika.
Wolf, Mark J.P & Perron, Bernard, eds.
2003. The Video Game Theory, Reader. Routledge.