BAB 2
LANDASAN TEORI
Pada bab ini akan diuraikan dasar perancangan permainan domino gaple pada
platform Android. Landasan teori yang diuraikan meliputi penjelasan mengenai
algoritma Minimax, perkembangan mobile game, dan platform Android.
2.1Domino Gaple
Domino gaple adalah permainan kartu yang dimainkan oleh 4 orang sekaligus. Tujuan
permainan kartu ini adalah menurunkan kartu yang ada di tangan hingga habis.
Permainan domino gaple ini menggunakan kartu domino yang berjumlah 28 lembar.
Masing-masing pemain mendapatkan 7 kartu. Pemain yang memiliki kartu balak nol
diwajibkan mengeluarkan kartu tersebut sebagai awal permainan. Pemain selanjutnya
diharuskan menurunkan kartu yang ada ditangan sesuai dengan angka-angka yang
tersaji di kedua sisi kartu yang ditawarkan. Jika salah satu pemain tidak memiliki
kartu yang ditawarkan, maka pemain selanjutnya berhak untuk melanjutkan
permainan.
2.1.1 Peraturan dan strategi permainan domino gaple
Dalam peraturan umum bermain gaple, pemain yang dinyatakan menang adalah
pemain yang telah menghabiskan seluruh kartu di tangannya. Sedangkan pemain
kedua, ketiga, dan keempat, akan dihitung sisa angka yang masih dipegang. Pemain
yang memegang sisa angka terbesar dianggap sebagai pihak yang kalah. Namun jika
kartu setiap pemain tidak dapat lagi diturunkan, maka pemenangnya adalah yang
memiliki kartu dengan nilai angka terkecil. Tetapi jika terdapat dua atau lebih pemain
memiliki jumlah nilai angka yang sama, maka pemenangnya adalah pemain dengan
jumlah sisa kartu paling sedikit. Apabila dua orang pemain memiliki jumlah nilai
angka yang sama, jumlah sisa kartu sama, maka pemenangnya adalah pemain yang
tidak memiliki kartu balak di tangannya.
Ada beberapa teknik yang biasanya digunakan orang dalam bermain domino
gaple, yaitu hitung kartu, adu kartu, dan tahan balak. Teknik hitung kartu adalah
teknik pemain yang menghapal dan menghitung jumlah kartu yang telah diturunkan
agar dapat menurunkan kartu yang tepat. Selain itu pemain juga harus dapat
menganalisa kartu yang ada di tangan lawannya. Teknik adu kartu adalah teknik
permainan dengan membuat angka kembar di kedua belah sisi, sehingga pemain
selanjutnya mendapatkan kemungkinan kecil untuk melanjutkan permainan. Teknik
tahan balak merupakan teknik menyimpan kartu balak untuk mengendalikan
permainan.
2.1.2 Jenis permainan domino gaple
Selain bermain sendiri-sendiri, variasi lain permainan domino yaitu dengan cara
berpasang-pasangan, atau bermain mandan. Bermain mandan biasa dilakukan oleh
masyarakat Minangkabau, Aceh, dan Bugis. Bermain dengan cara ini, mengharuskan
pemain untuk tidak hanya memperhatikan kartunya sendiri, tapi juga harus
memikirkan kartu mandannya agar bisa memenangkan permainan.
2.2Kecerdasan Buatan
Kecerdasan buatan atau Artificial Intelligence merupakan bagian dari ilmu
pengetahuan komputer yang khusus ditujukan dalam perancangan otomatisasi tingkah
laku cerdas dalam sistem kecerdasan komputer. Sistem memperlihatkan sifat-sifat
khas yang dihubungkan dengan kecerdasan dalam kelakukan atau tindak-tanduk yang
sepenuhnya bisa menirukan beberapa fungsi otak manusia, seperti pengertian bahasa,
pengetahuan, pemikiran, pemecahan masalah dan lain sebagainya (Kristanto, 2004).
Pengertian lain menyebutkan bahwa kecerdasan buatan adalah salah satu
bagian ilmu komputer yang membuat agar mesin (komputer) dapat melakukan
Dari beberapa pengertian di atas, dapat ditarik kesimpulan bahwa kecerdasan
buatan merupakan bagian dari ilmu komputer yang merancang otomatisasi mesin yang
proses berfikirnya dan melakukan pekerjaan menyerupai manusia.
Meskipun kecerdasan buatan dapat berfikir dan melakukan pekerjaan
selayaknya manusia, namun pada dasarnya kecerdasan buatan berbeda dengan
kecerdasan alami yakni kecerdasan manusia. Berikut ini merupakan kelebihan
kecerdasan buatan dan kecerdasan alami.
Tabel 2.1 Kelebihan kecerdasan buatan dan kecerdasan alami. (Sumber: Analisis Dan Implementasi Algoritma Minimax Dengan Optimasi
Alpha Beta Pruning Pada Permainan Five In Row, 2010)
Kelebihan Kecerdasan Buatan Kelebihan Kecerdasan Alami 1. Kecerdasan buatan lebih tahan lama
dan konsisten, bahkan dapat
dikatakan permanen sejauh program
dan sistemnya tidak diubah.
2. Kecerdasan buatan lebih mudah
diduplikasi dan disebarluaskan,
berbeda dengan kecerdasan alami
yang membutuhkan proses belajar
mengajar untuk mentransfer
kecerdasan.
3. Kecerdasan buatan dapat
didokumentasi.
4. Kecerdasan buatan cenderung dapat
mengerjakan perkerjaan lebih baik
dan lebih cepat dibanding dengan
kecerdasan alami.
1. Kecerdasan alami bersifat kreatif.
Kecerdasan alami dapat berkembang
dengan mudah dan dapat
menciptakan kreasi baru.
2. Kecerdasan alami memungkinkan
manusia untuk menggunakan
pengalaman secara langsung.
Sedangkan pada kecerdasan buatan
harus bekerja dengan input-output
simbolik.
3. Manusia dapat memanfaatkan
kecerdasannya secara luas, tanpa
batas. Sedangkan kecerdasan buatan
Seperti kebanyakan bidang sains lainnya, Kecerdasan Buatan dapat dipilah
menjadi sejumlah sub-disiplin. Berikut sejumlah bidang terapan utama terhadap
kecerdasan buatan:
1. Sistem Pakar (Expert System)
Sistem Pakar adalah suatu perangkat lunak yang menyimpan pengetahuan
seorang pakar, dengan demikian komputer tersebut akan memiliki keahlian
layaknya seorang pakar.
2. Pengolahan Bahasa Alami (Natural Language Processing)
Salah satu tujuan jangka panjang kecerdasan buatan adalah membuat program
yang memiliki kemampuan untuk memahami bahasa manusia. Dengan
Pengolahan Bahasa Alami ini, diharapkan dikemudian hari manusia dapat
berkomunikasi dengan komputer dengan menggunakan bahasa sehari-hari.
3. Pengenalan Ucapan (Speech Recognition)
Dengan teknologi ini, diharapkan manusia nantinya dapat berbincang-bincang
dengan komputer.
4. Pemodelan Kinerja Manusia
Teknologi ini merupakan upaya pengenalan citra atau objek visual pada
komputer. Dengan mengunakan alat sensor atau scanner sebagai indra, maka
komputer dapat mengenali objek apa yang ditangkap oleh indranya.
5. Permainan (Game)
Mengembangkan berbagai macam bentuk permainan interaktif yang
cerdas. Diasumsikan dengan teknologi tersebut dapat menarik minat para
penggemar permainan.
2.3Algoritma Minimax
Minimax adalah salah satu algoritma yang sering digunakan untuk game kecerdasan
buatan seperti tik-tak, yang menggunakan teknik Depth First Search (DFS). Algoritma
Minimax akan melakukan pengecekan pada seluruh kemungkinan yang ada, sehingga
Keuntungan penggunaan algoritma Minimax adalah mampu menganalisis
kemungkinan posisi permainan untuk menghasilkan keputusan terbaik dengan
mencari langkah yang akan membuat lawan mengalami kerugian (Jannah, 2010).
Tujuan sebenarnya algoritma Minimax digunakan pada permainan yaitu untuk
memperkirakan kartu apakah yang dapat dikeluarkan pada 1 langkah ke depan
(Kusumadewi, 2003).
Jika pemain memilih suatu langkah, maka pemain akan memilih langkah yang
akan menghasilkan suatu posisi yang bagus. Kita dapat menganggap bahwa pemain
akan memilih langkah yang akan menuntunnya pada posisi terbaik. dengan kata lain,
ketika pemain mendapat giliran bermain maka pemain akan mencoba memaksimalkan
nilainya, perhatikan gambar 2.3.
Gambar 2.3 Langkah pemain pada algoritma minimax (Sumber: Artificial Intelligence for Games, 2006)
Ketika lawan mendapat giliran bermain, pemain akan mengganggap bahwa
lawan akan memilih langkah yang akan memberikan pemain posisi terburuk yang
tersedia. Lawan sedang berusaha meminimalkan nilai dari pemain, perhatikan gambar
2.4.
Dalam pengimplemensian pencarian DFS, Algoritma Minimax melakukan pencarian pada pohon. DFS akan menelusuri simpul terdalam lebih dahulu. Setelah
simpul akar dibangkitkan, algoritma ini akan membangkitkan simpul pada tingkat
Gambar 2.4 Langkah lawan pada algoritma minimax (Sumber: Artificial Intelligence for Games, 2006)
Dalam repersentasi pohon pada algoritma Minimax, terdapat dua jenis node,
yaitu min dan max. Max akan memilih langkah dengan nilai tertinggi dan min akan
memilih langkah dengan nilai terendah. Untuk proses dan cara kerja algoritma yang
lebih jelasnya lagi, dapat dilihat pada gambar 2.5 yang merepresentasikan cara kerja
algoritma Minimax.
Gambar 2.5 Ilustrasi cara kerja algoritma minimax (Sumber: Artificial Intelligence Illuminated, 2004)
Dari gambar 2.5, proses pencarian dimulai dari jalur paling kiri terlebih
dahulu, sehingga DFS akan menelusuri simpul paling kiri bawah yaitu 5. Nilai 5
DFS merunut balik dan menelusuri simpul yang bertetangga dengan simpul 5 yaitu
simpul 2. Karena nilai 5 lebih besar dari nilai 2, maka nilai 2 tidak disimpan. Lalu
DFS akan merunut balik ke tingkat min sehingga nilai 5 yang diperoleh akan disimpan
sebagai nilai minimum sementara. Untuk simpul 1 dan 3, nilai 3 yang akan disimpan
karena merupakan nilai maksimum di tingkat max. Saat mencapai tingkat min, sudah
ada nilai minimum sementara yaitu 5, namun karena nilai 3 lebih kecil daripada nilai
5, maka nilai 5 akan digantikan dengan nilai 3. Nilai 3 akan disimpan sebagai nilai
maksimum sementara di tingkat paling atas karena merupakantingkat max. Lalu
penelusuran jalur kanan akan dilakukan dengan cara yang sama seperti penelusuran
jalur kiri sehingga diperoleh nilai 6. Karena nilai maksimum sementara pada tingkat
paling atas adalah nilai 3, maka nilai 3 akan digantikan dengan nilai 6 karena nilai 6
lebih besar daripada nilai 3. Dengan demikian, jalur yang akan dipilih menggunakan
algoritma Minimax adalah jalur sebelah kanan karena untuk kondisi terburuknya, kita
akan mendapatkan nilai 6 sedangkan jika kita memilih jalur kiri, kita hanya akan
mendapatkan nilai 3.
Berikut garis besar algoritma minimax secara umum :
Cari langkah dengan nilai maksimum
IF langkah tersebut merupakan langkah kemenangan
THEN pilih lagkah tersebut.
ELSE
FOR EACH kemungkinan langkah yang ada
Cari langkah lawan yang bernilai minimum.
RETURN nilai dari langkah tersebut.
2.3.1 Penelitian terdahulu
Tabel 2.2 Penelitian Terdahulu
No. Judul Penelitian Tahun
Penelitian Nama Peneliti Keterangan
1
Waktu pelacakan sangat
lama pada saat kombinasi
Minimax tidak efisien
digunakan secara tunggal
sehingga diperlukan
algoritma lain untuk
mengoptimalkannya.
Minimax tidak efisien
digunakan secara tunggal
sehingga diperlukan
algoritma lain untuk
mengoptimalkannya.
Tingkat kesulitan agen
yang menggunakan
algoritma Backtracking
sampai penelusuran level maksimum 10 adalah sulit
dengan persentase
2.4Mobile Game
Mobile games secara garis besar diartikan sebagai permainan yang dimainkan pada
perangkat mobile seperti telepon genggam, PDA, smartphone, ataupun perangkat
permainan portabel.
Penelitian, pengembangan, dan pengujian terhadap mobile games telah
membawa masalah dan pertanyaan yang tidak bisa diselesaikan oleh model desain
lama. Mobile games mengubah hubungan antara manusia dan komputer yang
berakibat tidak hanya dari cara bermain tetapi desain antarmuka dan juga interaksi
struktur juga berubah. Kegiatan pemain berubah. Pemain tidak duduk di depan
perangkat mereka lagi tetapi benar-benar bisa bergerak bebas sambil bermain (Grueter
et al, 2005).
2.5Sistem Operasi Android
Salah satu sistem operasi yang banyak digunakan untuk telpon pintar saat ini adalah
Android. Hal ini didukung dengan beberapa vendor besar yang mengoperasikan
sistem operasi tersebut pada produk yang mereka produksi, seperti Samsung, HTC,
Sony, LG. Sehingga menjadikan Android lebih cepat populer dibandingkan dengan
sistem operasi telpon pintar lainnya.
Android didesain sebagai platform yang open source untuk perangkat mobile. Android sendiri mencakup sistem operasi, middleware, dan aplikasi. Android sendiri
menyediakan tools dan framework untuk membuat dan mengembangkan aplikasi.
Salah satu contoh tools untuk membuat aplikasi Android adalah Android SDK
(Software Development Kit) yang memungkinkan pengembang aplikasi ber-platform
android membuat aplikasi menggunakan bahasa pemrograman Java. Selain itu ada
Cocos2D yang memungkinkan pengembang aplikasi membuat aplikasi menggunakan
Awalnya, Google Inc. membeli Android Inc., pendatang baru yang membuat
peranti lunak untuk ponsel. Kemudian untuk mengembangkan Android,
dibentuklah Open Handset Alliance, konsorsium dari 34 perusahaan peranti keras,
peranti lunak, dan telekomunikasi, termasuk Google, HTC, Intel, Motorola,
Qualcomm, T-Mobile, dan Nvidia. Pada saat perilisan perdana Android, 5 November
2007, Android bersama Open Handset Alliance menyatakan mendukung
pengembangan standar terbuka pada perangkat seluler. Di lain pihak, Google merilis
kode–kode Android di bawah lisensi Apache, sebuah lisensi perangkat lunak dan
standar terbuka perangkat seluler.
Di dunia ini terdapat dua jenis distributor sistem operasi Android. Pertama
yang mendapat dukungan penuh dari Google atau Google Mail Services (GMS) dan
kedua adalah yang benar–benar bebas distribusinya tanpa dukungan langsung Google
atau dikenal sebagai Open Handset Distribution (OHD).
Smartphone pertama yang menggunakan sistem operasi Android adalah Nexus
One yang menggunakan Android versi 1.0. Produk tersebut diproduksi oleh HTC Corp., diperkenalkan sekitar September 2007 dan mulai dipasarkan pada 5 Januari
2008. Pada tahun 2009 perangkat berbasis Android mengalami perkembangan. Lebih
dari 20 jenis perangkat bergerak menggunakan sistem operasi ini. Sudah banyak versi
Android yang dirilis sejak tahun 2009, antara lain versi 1.0, 1.1, 1.5 dengan kode
nama Cupcake, 1.6 dengan kode nama Donut, 2.0 dan 2.1 dengan kode nama Eclaire,
2.2 dengan kode nama Frozen Yogurt (Froyo), 2.3 dengan kode nama Gingerbread,
3.0, 3.1, dan 3.2 dengan kode nama Honeycomb, 4.0 dengan kode nama Ice Cream
Sandwich, 4.1, 4.2, dan 4.3 dengan kode nama Jelly Bean, dan yang terakir rilis
adalah versi 4.4 dengan kede nama KitKat.
Dari sekian banyak versi Android yang ada dipasaran, Android versi
Honeycomb dirancang khusus untuktablet. Android versi ini mendukung ukuran layar
yang lebih besar. User Interface pada Honeycomb juga berbeda karena sudah didesain
untuk tablet. Honeycomb juga mendukung multi prosesor dan juga akselerasi
perangkat keras (hardware) untuk grafis. Tablet pertama yang dibuat dengan
Sandwich, Jelly Bean dan KitKat didesain untuk dapat dijalankan pada smartphone
maupun tablet. Daftar versi-versi Android yang telah rilis dapat dilihat pada Tabel 2.3.
Tabel 2.3 Versi-versi Android
Dari tabel tersebut dapat dilihat terdapat perubahan API (Application
Programming Interface) level. Setiap API menunjukkan revisi dari framework pada
platform Android. Versi android mendukung tepat satu API level yang mengakibatkan
versi Android terus berubah, namun tetap mendukung API level sebelumnya. API
level ini menentukan suatu aplikasi bisa dijalankan pada suatu platform Android.
Platform Nama Kode API Level Tanggal Rilis
Android 1.0 1 September 2007
Gingerbread 9 6 Desember 2010
Android 2.3.3-2.3.7 10
Ice Cream Sandwich 14 19 Oktober 2011
Android 4.0.3 15
Android 4.1 Jelly Bean 16 27 Juni 2012
Android 4.2 Jelly Bean 17 13 November 2012
Android 4.3 Jelly Bean 18 24 July 2013
2.5.1 Arsitektur android
Sistem operasi Android memiliki 4 lapisan (layer) yang merupakan komponen sistem
Android. Gambar berikut merupakan lapisan arsitektur sistem operasi Android:
Gambar 2.6 Arsitektur android (Sumber: Learning Android, 2011)
1. Linux Kernel
Tumpukan paling bawah pada arsitektur Android ini adalah kernel. Google menggunakan kernel Linux versi 2.6 untuk membangun sistem Android, yang mencakup manajemen memori, pengaturan keamanan, manajemen power, dan beberapa driver hardware. Kernel berperan sebagai lapisan abstraksi antara piranti keras dan keseluruhan piranti lunak. Sebagai contoh, HTC GI dilengkapi dengan kamera. Kernel Android terdapat driver kamera yang memungkinkan pengguna mengirimkan perintah kepada piranti keras kamera. Android dibangun di atas kernel Linux 2.6. Namun secara keseluruhan android bukanlah linux, karena dalam android tidak terdapat paket standar yang dimiliki oleh linux lainnya. Linux merupakan sistem operasi terbuka yang handal dalam manajemen memori dan proses. Oleh karenanya pada android hanya terdapat beberapa servis yang diperlukan seperti keamanan, manajemen memori, manajemen proses, jaringan dan driver. Kernel linux menyediakan
driver layar, kamera, tombol, WiFi, Flash Memory, audio, dan IPC (Interprocess Communication) untuk mengatur aplikasi dan lubang keamanan.
2. Android Runtime
Lapisan setelah Kernel Linux adalah Android Runtime. Android Runtime ini berisi Core Libraries dan Dalvik Virtual Machine. Core Libraries mencakup serangkaian inti library Java, artinya Android menyertakan satu set library
dasar yang menyediakan sebagian besar fungsi-fungsi yang ada pada library
dasar bahasa pemrograman Java. Dalvik adalah Java Virtual Machine yang memberi kekuatan pada sistem Android. Dalvik VM ini dioptimalkan untuk telepon seluler. Setiap aplikasi yang berjalan pada Android berjalan pada prosesnya sendiri, dengan instansi dari Dalvik Virtual Machine. Dalvik telah dibuat sehingga sebuah piranti yang memakainya dapat menjalankan multi Virtual Machine dengan efisien.
3. Libraries
Bertempat di level yang sama dengan Android Runtime. Android menyertakan satu set library dalam bahasa C/C++ yang digunakan oleh berbagai komponen yang ada pada sistem Android. Kemampuan ini dapat diakses oleh programmer melewati aplikasi framework Android. Sebagai contoh Android mendukung pemutaran format audio, video, dan gambar. Berikut ini beberapa
a. System C library,
diturunkan dari implementasi standard C system library (libc) milik BSD, dioptimasi untuk piranti yang tertanam berbasis Linux.
b. Media Libraries,
berdasarkan Packet Video‟s Open CORE; library ini mendukung
playback dan recording dari berbagai format audio and video populer, meliputi MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG.
c. Surface Manager,
mengatur akses pada layar dan lapisan komposit 2D and grafis 3D dari berbagai aplikasi.
d. LibWebCore,
web browser engine modern yang mendukung browser Android maupun web view yang tertanam.
e. SGL,
Mesin grafis 2 dimensi.
f. 3D libraries,
implementasi berdasarkan OpenGL ES 1.0 APIs; library ini menggunakan hardware 3D acceleration dan highly optimized 3D software rasterizer.
g. FreeType,
Perender bitmap dan vector font.
h. SQLite untuk dukungan database.
Library tersebut bukanlah aplikasi yang berjalan sendiri, namun hanya dapat digunakan oleh program yang berada di level atasnya. Sejak versi Android 1.5, pengembang dapat membuat dan menggunakan pustaka sendiri menggunakan Native Development Toolkit (NDK).
4. Application Framework
smartphone. Kerangka kerja aplikasi merupakan serangkaian tool dasar seperti alokasi resource smartphone, aplikasi telepon, pergantian antar – proses atau program, dan pelacakan lokasi fisik telepon. Para pengembang aplikasi memiliki aplikasi penuh kepada tool dasar tersebut, dan memanfaatkannya untuk menciptakan aplikasi yang lebih kompleks. Di dalam semua aplikasi terdapat servis dan sistem yang meliputi :
a. Satu set Views yang dapat digunakan untuk membangun aplikasi meliputi lists, grids, text boxes, buttons, dan embeddable web browser. b. Content Providers yang memungkinkan aplikasi untuk mengakses data dari aplikasi lain (misalnya kontak), atau untuk membagi data yang dimilikinya.
c. Resource Manager, menyediakan akses ke non-code resources
misalnya localized strings, grafis, dan layout files.
d. Notification Manager yang memungkinkan semua aplikasi untuk menampilkan custom alerts pada bar status.
e. Activity Manager yang mengelola life cycle dari dari aplikasi dan menyediakan navigasi backstack.
5. Application
Berada padai lapisan. Di lapisan ini ditemukan fungsi-fungsi dasar smartphone