TA : Kecerdasan Komputer Pada Permainan Tic Tac Toe Dengan Metode Game Tree.

(1)

FAKULTAS TEKNOLOGI DAN INFORMATIKA

INSTITUT BISNIS DAN INFORMATIKA STIKOM SURABAYA 2016

KECERDASAN KOMPUTER PADA PERMAINAN TIC TAC TOE DENGAN METODE GAME TREE

TUGAS AKHIR

Program Studi S1 Sistem Komputer Fakultas

Teknologi dan Informatika

Oleh :

RENDY ARIF HIDAYAT 11.41020.0085


(2)

x

HALAMAN JUDUL ... i

HALAMAN SYARAT ... ii

MOTTO ... iii

HALAMAN PERSEMBAHAN ... iv

HALAMAN PENGESAHAN ... v

HALAMAN PERNYATAAN ... vi

ABSTRAK ... vii

KATA PENGANTAR………..viii

DAFTAR ISI ... x

DAFTAR GAMBAR ………...xiii

DAFTAR TABEL ... iv

BAB I PENDAHULUAN ... 1

1.1 Latar Belakang ... 1

1.2 Perumusan Masalah ... 3

1.3 Batasan Masalah ... 4

1.4 Tujuan ... 5

1.5 Sistematika Laporan ... 5

BAB II LANDASAN TEORI ... 6

2.1 Game Komputer ... 6

2.2 Tic Tac Toe ... 9

2.3 Game Tree ... 10


(3)

2.4.1 Sejarah C++ ... 11

2.4.2 Perkembangan C++ ... 12

2.5 Pointer ... 13

2.5.1 Operator Alamat (Address operator (&)) ... 11

2.5.2 Operator Reference(*) ... 11

2.5.3 Macam-Macam Pointer ... 15

2.6 Link List (sumber : Moh,Sjukani,2012) ... 16

2.6.1 Single Linked List ... 18

2.7 Binary Tree ... 19

BAB III METODE PENELITIAN... 21

3.1 Rancangan Penelitian ... 21

3.2 Flowchart ... 22

3.3 Alat Penelitian ... 24

3.4 Rules (Aturan) ... 24

3.4.1 Kondisi Menang ... 24

3.4.2 Kondisi Kalah ... 24

3.4.3 Komdisi Seri ... 24

3.5 Perancangan Program ... 25

3.5.1 Membuat Main Program ... 25

3.5.2 Membuat Sub Program Manusia ... 26

3.5.3 Sub Program Kondisi ... 28

3.5.4 Sub Program Komputer ... 29


(4)

3.6 Percobaan Metode Game Tree ... 32

3.7 Percobaan Metode Game Tree Lanjut... 33

BAB IV HASIL DAN PENGUJIAN ... 35

4.1 Pengujian Perangkat Lunak ... 36

4.1.1 Pengujian Tic Tac Toe Game Tree ... 36

4.1.2 Pengujian Memilih Nilai Terkecil ... 39

4.2 Pengujian Kecerdasan Komputer ... 42

BAB V PENUTUP ... 44

5.1 Kesimpulan ... 45

5.2 Saran ... 45

DAFTAR PUSTAKA ... 46

Lampiran1. Keseluruhan Source Code ... 47


(5)

1 1.1Latar Belakang Masalah

Tic Tac Toe adalah permainan kertas dan pensil untuk dua pemain, X dan O, yang bergiliran menandai ruang dalam kotak berukuran 3 × 3. Pemain yang berhasil menempatkan tiga simbol mereka dalam baris horisontal, vertikal, atau diagonal memenangkan permainan. Pada proses permainan tiap langkah dari tiap pemain nantinya akan diberikan nilai/point. Gambar berikut menjelaskan 3 posisi tanda dan prediksi penempatan tiga simbol di horisontal, vertikal, atau diagonal yang bisa digunakan untuk pemain . (sumber: https://en.wikipedia.org/wiki/Tic-tac-toe)

Gambar 1.1 Prediksi Posisi Kemenangan

Selanjutntya komputer akan menjadi pemain melawan pemain manusia, sehingga komputer harus diberi kecerdasan. Komputer akan mencari beberapa langkah langkah kedepan yang terbaik untuk memilih nilai/point yang tertinggi


(6)

dan mengetahui apa yang akan dilakukan apabila lawan akan mendapatkan kemenangan. Tiap langkah komputer akan memilih nilai/point yang tertinggi dari 9 kotak yang ada dan memaksa pemain kedua memilih nilai/point yang lebih kecil dari pilihan komputer guna memberikan keuntungan bagi komputer. Gambar berikut menjelaskan tiap tiap nilai/point pada 9 kotak.

Gambar 1.2 Nilai/Point

Model dari Game Tree dilakukan pada permainan yang memiliki hanya dua pemain. Setiap node yang menyerupai pohon mewakili posisi dalam permainan. Kedua pemain tersebut diberi label sebagai Max dan Min. Dimana Max bergerak dari node persegi,sementara Min bergerak dari node lingkaran (Wim Pijls and Arie de Bruin,1999) . Berdasarkan pada pilihan langkah pemain yang membentuk node dari tree. Node dari tree tersebut merupakan papan posisi langkah pemain. Pada setiap node memiliki cabang yang menandakan posisi selanjutnya. Pada permainan Tic Tac Toe termasuk dalam kriteria pada Game Tree yang memerlukan dua pemain untuk memainkan Tic Tac Toe.


(7)

Gambar 1.3 Game Tree

Dengan memberikan kecerdasan pada komputer dalam permainan Tic Tac Toe ini akan membuat komputer tidak dapat kalah dan dapat memberikan perlawanan yang sengit untuk pemain manusia

1.2 Rumusan Masalah

Berdasarkan latar belakang masalah diatas di dapat rumusan masalah sebagai berikut :

1. Bagaimana Tic Tac Toe agar bisa dimainkan pada PC.

2. Bagaimana cara memberikan kecerdasan pada komputer dengan metode Game Tree.


(8)

3. Bagaimana cara memberikan nilai/point agar komputer dapat memilih langkah yang dianggap nilai/point nya lebih besar.

1.3 Batasan Masalah

Dalam perancangan dan pembuatan sistem ini terdapat beberapa batasan masalah antara lain :

1. Untuk menentukan langkah saat ini, komputer akan mendeteksi sampai 2 langkah ke depan, dimana :

a. Satu langkah ke depan merupakan langkah pemain manusia. b. Dua langkah ke depan merupakan langkah pemain komputer. 2. Kecerdasan komputer memakai metode Game Tree.

3. Game ini di buat dengan aplikasi Code::Blocks

1.4 Tujuan

Memberi kecerdasan untuk komputer dalam permainan Tic Tac Toe agar komputer tidak pernah kalah.

1.5 Manfaat

Mengaplikasikan metode game tree pada permainan Tic Tac Toe untuk langkah komputer.

1.6 Sistematika Penulisan

Pembahasan Tugas Akhir ini secara garis besar tersusun dari 5 (lima) bab, yaitu diuraikan sebagai berikut:


(9)

1. BAB I PENDAHULUAN

Pada bab ini akan dibahas mengenai latar belakang masalah, batasan masalah, tujuan penulisan, dan sistematika penulisan.

2. BAB II LANDASAN TEORI

Pada bab ini akan dibahas teori penunjang dari permasalahan, yaitu Game komputer, Tic Tac Toe, Game Tree, Linked List, Binary Tree

3. BAB III METODE PENELITIAN DAN PERANCANGAN SISTEM

Pada bab ini dibahas tentang perancangan pernagkat lunak dengan metode game tree. Di jelaskan proses pembuatan dengan sub sub program dan percobaan perangkat lunak dengan metode yang di pakai. Kemudian akan di periksa hasil keberhasilan dari metode yang di ambil apakah komputer dapat berjalan sesuai dengan yang diharapkan.

4. BAB IV HASIL DAN PEMBAHASAN

Pada bab ini akan dibahas mengenai hasil dari percobaan perangkat lunak dengan mengumpulkan partisisan sebanyak 20 orang untuk mencoba bermain melawan komputer dengan anggapan komputer tidak pernah kalah melawan manusia.

5. BAB V KESIMPULAN DAN SARAN

Berisi kesimpulan yang didapat dari hasil penelitian berdasarkan rumusan masalah serta saran untuk perkembangan penelitian selanjutnya.


(10)

6 2.1 Game Komputer

Mendefinisikan apakah yang dimaksud dengan game, tidak cukup dengan hanya melihat kamus bahasa. Terdapat banyak makna dalam kata ‘game’. Yang jelas game secara naluri adalah merupakan bagian dari kehidupan manusia. Makna sekilas dari game memberikan pengertian bahwa game merupakan suatu aktifitas yang tidak dilakukan dengan sungguh-sungguh. Untuk mengetahui apa yang sesungguhnya disebut dengan game, maka paling tidak kita dapat memahaminya dari adanya sejumlah pengertian game yang biasa kita alami dalam kehidupan.

Terdapat 5 kategori istilah game, yaitu :

1. Board Games (Permainan Papan) Game pada katagori ini membutuhkan suatu papan yang terbagi dalam sektor-sektor tertentu (dengan garis-garis) dan didalamnya terdapat sejumlah alat main yang dapat digerakkan. Termasuk dalam katagori ini adalah catur.Dua buah pemain akan berhadapan dan saling mengadu strategi sesuai dengan aturan untuk mencapai daerah lawan atau mempertahankan daerahnya sendiri, mengalahkan bidak musuh, mengumpulkan sesuatu. Pemain pada board games ini akan berusaha menganalisis hubungan-hubungan geometri yang ada pada papan dan bidak. 2. Card Games (Permainan Kartu) Games ini akan memanfaatkan simbol dari

52 kartu yang terbagi dalam dua faktor : suit (4 nilai) dan rank (13 nilai). Permainan akan dilakukan sekitar bagaimana membuat kombinasi dari 52


(11)

kartu tersebut. Sejumlah ketentuan dibuat untuk mengatur bagaimana cara-cara untuk membuat kombinasi tersebut. Permainan kartu bridge/truf termasuk kelompok games ini.

3. Athletic Games (Permainan Atletik) Permainan games jenis ini lebih cenderung pada penggunaan fisik daripada mental. Aturan game dibuat dengan keharusan pemain untuk melakukan sejumlah aksi tertentu. Hal yang terkait dengan kekuatan badan, kecepatan, ketepatan dan kerjasama menjadi bagian utama dari game atletik. Dalam hal ini harus dibedakan antara game dengan kompetisi. Kompetisi tidak mengharuskan adanya kerjasama dan pemain bekerja secara individu. Dua orang yang beradu lari bukanlah termasuk game tetapi kompetisi. Perbedaan utama antara game dan kompetisi adalah dalam hal interaksi diantara peserta. Pada kompetisi tidak terjadi interaksi diantara pemain, kompetisi yang membolehkan adanya interaksi diantara pemainnya termasuk game.

4. Children Games (Permainan Anak) Aktifitas seperti berlari, sembunyi, melempar dan menangkap adalah menjadi ciri utama game anak-anak. Umumnya game ini menekankan pada aktifitas kelompok sebagai latihan untuk berkehidupan sosial. Walaupun dalam game ini terdapat juga upaya untuk saling mengalahkan secara mental atau fisik namun tujuan utamanya bukanlah untuk meraih kemenangan satu diatas yang lain tetapi sebagai ilustrasi kerjasama dalam kehidupan manusia. Penggunaan sejumlah alat untuk membantu ilustrasi dapat meningkatkan improvisasi game dan meningkatkan keterlibatan yang lebih baik dari pemain.


(12)

5. Computer Games (Permainan Komputer) Game ini dimainkan lewat bantuan alat komputer. Terdapat 5 alat yang dapat dikategorikan sebagai komputer, yaitu :

a. Expensive dedicated machine, mesin yang dioperasikan dengan koin untuk memainkankannya.

b. Inexpensive dedicated machine, disebut juga dengan hand held machine. Alat game watch termasuk dalam katagori ini.

c. Multiprogram home, mesin seperti Atari,Nintendo termasuk dalam kelompok komputer ini.

d. Personal computer

e. Mainframe computer

Computer game berbeda dengan jenis game yang lain karena tidak ada pergerakan secara fisik atau interaksi langsung dengan object kecuali lewat perantaraan komputer. Software yang dibuat harus dapat menangkap reaksi yang cepat dari interaksi yang dihasilkan dengan pemain. Karena itu software untuk computer games harus bersifat real time. Kompleksitas game adalah bergantung dari kemampuan merepresentasikan aturan dan lingkungan game dalam program yang dibuat. Diantara sekian banyak definisi game, maka definisi yang umum untuk computer game adalah :

Game Komputer adalah sebuah program software dimana satu atau lebih pemain berusaha untuk membuat keputusan lewat kontrol terhadap object dan resource guna memenuhi satu tujuan tertentu. (Sumber : prayudi,2008)


(13)

2.2 Tic Tac Toe

Tic Tac Toe adalah permainan untuk dua pemain dimana masing-masing pemain mengambil giliran dengan menandai ruang pada kotak 3x3. Biasanya ruang tersebut ditandai dengan simbol X dan O. X merupakan pemain satu dan O sebagai pemain dua atau sebaliknya. Ada tiga jenis dari hasil hasil permainan Tic Tac Toe yaitu menang, kalah atau imbang. Dinyatakan menang dalam permainan Tic Tac Toe apabila salah satu pemain berhasil mengisi simbol pada tiga ruang di horisontal, vertikal, atau diagonal. Beberapa aturan yang sudah di tentukan dalam permainan Tic Tac Toe , berikut aturan tersebut :

a) Pemain dengan simbol X mempunyai satu lebih banyak atau sama dengan jumlah dari simbol O dengan asumsi pemain pertama dimainkan pertama b) Kedua pemain tidak ada yang bergerak jika sudah ada pemain yang menang.

(Sriram,Vijayarr, Raghuras, Xyuan,2009)

Gambar 2.1 Game Tic Tac Toe

(Sumber:https://en.wikipedia.org/wiki/Tic-tac-toe) Pada gambar di atas pemain dengan simbol O dinyatakan menang karena telah berhasil mengisi simbol O pada tiga ruang pada posisi diagonal.


(14)

2.3 Game Tree

Sebuah model permainan berbentuk pohon yang dimainkan oleh 2 (dua) pemain : manusia dan komputer. Para pemain saling bergantian melangkah . kedua pemain sama-sama memiliki akses pada informasi yang lengkap tentang keadaan permainan, sehingga tidak ada informasi yang tertutup bagi lawan mainnya. ( 2005, gunawan)

Para pemain diberi label Max dan Min. Max bergerak dari node berbentuk persegi dan Min pergerakannya dari node berbentuk node lingkaran. Diberi nilai dalam posisi setiap pergerakan sesuai dengan properti minimax.

Gambar 2.2 Game Tree pada Tic Tac Toe


(15)

Lebih jelas dapat ditunjukkan dari tabel 2.1 berikut :

Tabel 2.1. Jumlah Kemungkinan Langkah

Langkah Kemungkinan Total

1 9 9

2 9x8 72

3 9x8x7 504

4 9x8x7x6 3024

5 9x8x7x6x5 15120

6 9x8x7x6x5x4 60480

7 9x8x7x6x5x4x3 181440

8 9x8x7x6x5x4x3x2 362880

2.4 C++

2.4.1 Sejarah C++

Tahun 1978, Brian W. Kerninghan & Dennis M. Ritchie dari AT & T Laboratories mengembangkan bahasa B menjadi bahasa C. Bahasa B yang diciptakan oleh Ken Thompson sebenarnya merupakan pengembangan dari bahasa BCPL ( Basic Combined Programming Language ) yang diciptakan oleh Martin Richard. Sejak tahun 1980, bahasa C banyak digunakan pemrogram di Eropa yang sebelumnya menggunakan bahasa B dan BCPL. Dalam perkembangannya, bahasa C menjadi bahasa paling populer diantara bahasa lainnya, seperti PASCAL, BASIC, FORTRAN. Tahun 1989, dunia pemrograman C


(16)

mengalami peristiwa penting dengan dikeluarkannya standar bahasa C oleh American National Standards Institute (ANSI). Bahasa C yang diciptakan Kerninghan & Ritchie kemudian dikenal dengan nama ANSI C. Mulai awal tahun 1980, Bjarne Stroustrup dari AT & T Bell Laboratories mulai mengembangkan bahasa C. Pada tahun 1983, lahirlah secara resmi bahasa baru hasil pengembangan C yang dikenal dengan nama C++. Bahasa ini bersifat kompatibel dengan bahasa pendahulunya yaitu C.Pada mulanya C++ disebut dengan “a better C”. Nama C++ sendiri diberikan oleh Rick Mascitti pada musin panas 1983.

(Sumber : http://prita.staff.gunadarma.ac.id)

2.4.2 Perkembangan C++

Pada tahun 1990, Referensi The Annotated C++ dirilis. Pada tahun yang sama, Turbo c++ menambahkan kebanyakan library tambahan yang akan memiliki dampak yang besar terhadap yang besar terhadap pengembangan C++‟s. Meskipun terakhir rilis stabil Turbo C++‟s pada tahun 2006, compiler masih banyak digunakan.

Pada tahun 1998, panitia C++ menetapkan standar internasional yang pertama untuk C++ ISO/IEC 14882: 1998 yang dikenal sebagai C++ 98. Referensi beranotasi C++ memiliki pengaruh besar dalam pengembangan standar C++. Pada tahun 2003 panitia C++ menanggapi beberapa permasalahan yang dilaporkan dari standar 1998 dan merevisi sesusai permsalahan yang ada. Hasil dari revisi tersebut dijuluki C++ 03.

Pada tahun 2005, panitia C++ merilis laporan teknis (dijuluki TR1) secara rinci dari berbagai fitur untuk menambah standar terbaru C++. Standar baru


(17)

itu dijuluki C++ 0x yang rencananya dapat dirilissebelum akhir dekade pertama. Nmaun, standar baru tersebut tidak akan dirilis sampai pertengahan tahun 2011.

Pada tahun 2011, C++ standar baru telah dirilis (dijuluki C++ 11). Proyek meningkatkan library membuat dampak yang cukup besar pada standar baru. Beberapa fitur baru terdapat penunjang ekspersi reguler, sebuah library pengancakan yang komperhensif, Sebuah library waktu C++ terbaru, sebuah penunjang atomics, sebuah library rangkaian standar, sebuah syntax perulangan FOR baru yang menyediakan fungsi mirip dengan perulangan foreach di dalam bahasa lain. (sumber : http://www.cplusplus.com/info/history)

2.5 Pointer

Variabel merupakan suatu nilai yang disimpan dalam memory yang dapat diakses dengan identifier. Variabel ini sesunggunhnya disimpan pada suatu alamat didalam memory. Dimana setiap alamat memory akan berbeda dengan yang lainnya (unik).

Arti pointer dalam bahasa sehari-hari adalah putunjuk atau bisa di bilang penentu atau pointer secara sederhana bisa diartikan sebagai tipe data yang nilainya mengarah pada nilai yang terdapat pada sebuah area memori (alamat memori).namun dalam Dalam bahasa C, Pointer bisa berfungsi sebagai variabel array berarti pointer sebagai penunjuk elemen array ke-0 dalam variabel C.

2.5.1 Operator Alamat (Address operator (&))

Pada saat pendeklarasian variable, user tidak diharuskan menentukan lokasi sesungguhnya pada memory, hal ini akan dilakukan secara otomatis oleh


(18)

kompiler dan operating sysem pada saat run-time. Jika ingin mengetahui dimana suatu variable akan disimpan, dapat dilakukan dengan memberikan tanda ampersand (&) didepan variable , yang berarti address of.

Contoh : ted = &andy

Akan memberikan variable ted alamat dari variable andy, karena variable andy diberi awalan karakter ampersand (&), maka yang menjadi pokok disini adalah alamat dalam memory, bukan isi variable. Misalkan andy diletakkan pada alamat 1776 kemudian dituliskan instruksi sbb :

andy = 25, fred = andy dan ted = &andy. Berikut hasil dari intruksi tersebut :

Gambar 2.3 Hasil Intruksi Pointer Operator Alamat

2.5.2 Operator Reference(*)

Dengan menggunakan pointer, kita dapat mengakses nilai yang tersimpan secara langsung dengan memberikan awalan operator asterisk (*) pada identifier pointer, yang berarti "value pointed by". Contoh :


(19)

(dapat dikatakan:"beth sama dengan nilai yang ditunjuk oleh ted") beth = 25, karena ted dialamat 1776, dan nilai yang berada pada alamat 1776 adalah 25.

Gambar 2.4 Hasil Intruksi Pointer Operator Operance

(Sumber : http://prita.staff.gunadarma.ac.id) 2.5.3 Macam–macam Pointer

a. Pointer Bertiper Void

Pada C++ terdapat pointer yang dapat menunjuk ke tipe data apapun, pointer semacam ini dideklarasikan dengan tipe void sehingga sering dikenal dengan istilah Void Pointer. Berikut ini contoh listing program yang menggunakan void pointer.

b. Pointer Bertiper Void

Elemen-elemen array biasanya diakses melalui indeksnya, sebenarnya ada cara lain yang lebih efisien, yaitu dengan menggunakan pointer. Pointer semacam ini disebut dengan istilah pointer aritmetika. Konsep dasar dari pointer aritmetika ini adalah melakukan operasi aritmetika terhadap variabel yang bertipe pointer.

c. Pointer NULL

Pada saat program dijalankan, pointer akan menunjuk ke alamat acak pada memori, sehingga diperlukan inisialisasi agar hal tersebut tidak terjadi.


(20)

Dalam C++ terdapat sebuah cara untuk membuat pointer tidak menunjuk ke alamat manapun, yaitu dengan mengisikan ponter tersebut dengan nilai NULL. Karena hal inilah maka pointer tersebut sering dinamakan pointer NULL (NULL Pointer).Sebagai contoh kita mempunyai pointer p, dan kita ingin melakukan inisialisasi pada pointer tersebut dengan nilai NULL.

(Sumber : http://prita.staff.gunadarma.ac.id)

2.6 Linked List

Link List adalah sejumlah objek yang di link atau dihubungkan satu dengan yang lainnya sehingga membentuk suatu list. Sedangkan objek itu sendiri adalah gabungan beberapa elemen data(variabel) yang dijadikan satu kelompok atau structure atau record yang dibentuk dengan perintah struct. Tiap-tiap elemen dapat memiliki tipe data tersendiri yang berbeda denga tipe data elemen lain. Untuk menyambungkan objek satu dengan objek lainnya, diperlukan paling tidak sebuah variabel yang „bertipe‟ pointer. Variabel pointer tersebut merupakan salah satu variabel dalam struktur objek. (sumber : Moh,Sjukani,2012)

Secara teori linked list adalah sejumlah node yang dihubungkan secara linier dengan bantuan pointer. Dikatakan single (singly) linked apabila hanya ada satu pointer yang menghubungkan setiap node. Single artinya field pointer nya hanya satu buah saja dan satu arah. Senarai berkait adalah struktur data yang paling dasar. Senarai berkait terdiri atas sejumlah unsur-unsur dikelompokkan, atau terhubung, bersama-sama di suatu deret yang spesifik. Senarai berkait bermanfaat di dalam memelihara koleksi-koleksi data, yang serupa dengan array/larik yang sering digunakan. Bagaimanapun juga, senarai berkait memberikan


(21)

keuntungan-keuntungan penting yang melebihi array/larik dalam banyak hal. Secara rinci,senarai berkait lebih efisien di dalam melaksanakan penyisipan-penyisipan dan penghapusan-penghapusan. Senarai berkait juga menggunakan alokasi penyimpanan secara dinamis, yang merupakan penyimpanan yang dialokasikan pada runtime. Karena di dalam banyak aplikasi,ukuran dari data itu tidak diketahui pada saat kompile, hal ini bisa merupakan suatu atribut yang baik juga. Setiap node akan berbentuk struct dan memiliki satu buah field bertipe struct yang sama, yang berfungsi sebagai pointer Dalam menghubungkan setiap node, kita dapat menggunakan cara first-create-first-access ataupun first-create-last-access. Yang berbeda dengan deklarasi struct sebelumnya adalah satu field bernama next , yang bertipe struct tnode. Hal ini sekilas dapat membingungkan. Namun, satu hal yang jelas, variabel next ini akan menghubungkan kita dengan node di sebelah kita, yang juga bertipe struct tnode. Hal inilah yang menyebabkan next harus bertipe struct tnode.

Bentuk Umum Link List : Typdef struct telmtlist {

Infotype info; Addres next; } elmtist;

Infotype : Sebuah tipe terdefinisi yang menyimpan nformasi sebuah elemen list. Next : Alamat dari emelen berikutnya(suksesor).

(sumber : https://id.scribd.com/doc/28723767/Modul-Linked-List-c (Teknik Elektro– Universitas Negeri Malang – 2010))


(22)

2.6.1 Single Linked List

Senarai berkait yang paling sederhana, di mana unsur-unsur terhubung oleh suatu pointer.Struktur ini mengizinkan senarai dilintasi dari elemen pertama sampai elemen terakhir.

Abstraksi Tipe Data Single Linked List Non Circular

Pembuatan struct bernama tnode berisi 2 field, yaitu field data bertipe integer dan field next yang bertipe pointer dari tnode.

Deklarasi Node SLL : Struct tnode

{

Int data;

Struct tnode *next; }

2.5 Sebuah Node pada SLL

Seperti yang diungkapkan sebelumnya, bahwa akan dibuat Single Linked List (SLL) dengan cara first-create-first-access. Dengan cara ini, node yang dibuat pertama akan menjadi head. Node-node yang dibuat setelahnya akan menjadi node-node pengikut. Untuk mempermudah pengingatan, ingatlah gambar anak panah yang mengarah ke


(23)

kanan. Headakan berada pada pangkal anak panah, dan node-node berikutnya akan berbaris ke arah bagian anak panah yang tajam.

(sumber: https://id.scribd.com/doc/28723767/Modul-Linked-List-c (Teknik Elektro– Universitas Negeri Malang – 2010))

2.6 Single Link List

(sumber : https://id.scribd.com/doc/28723767/Modul-Linked-List-c ( Teknik Elektro– Universitas Negeri Malang – 2010)

2.7 Binary Tree

Binary Tree adalah struktur data yang hampir mirip juga dengan Linked List untuk menyimpan koleksi dari data. Linked List dapat dianalogikan sebagai rantai linier sedangkan Binary Tree bisa digambarkan sebagai rantai tidak linier. Binary Tree dikelompokkan menjadi unordered Binary Tree (tree yang tidak berurut) dan ordered Binary Tree (tree yang terurut). Binary Tree dapat digambarkan berdasarkan kondisinya, sebagai berikut:


(24)

2.7 Binary Tree

2.8 Gambaran dari Binary Tree yang Terdiri dari 3 (tiga) Node


(25)

21 3.1 Rancangan Langkah Penelitian

Berikut langkah-langkah yang dilakukan dalam penelitian ini : 1. Studi Literatur

Bertujuan untuk mencari teori mengenai permainan Tic Tac Toe dan metode Game Tree sehingga membantu dalam pembuatan program. Langkah ini dilakukan dengan metode wawancara dengan dosen, membaca literatur dari internet dan buku-buku penunjang yang ada.

2. Menjalankan Game Komputer Tic Tac Toe

Langkah ini bertujuan untuk memperdalam pemahaman tentang game Tic Tac Toe. Dengan bermain dan mempelajari teknik yang ada untuk Tic Tac Toe.

3. Mendesain cara pemberian nilai/point pada suatu permainan Tic Tac Toe Memberi nilai/point pada tiap kotak untuk membantu komputer dalam mencari langkah yang terbaik.

4. Mengaplikasikan struktur data dinamis Tree untuk Game Tree

a. Merancang struktur data yang bisa digunakan untuk mengakomodasi kebutuhan Game Tree.

b. Merancang aplikasi Tic Tac Toe dengan komputer sebagai salah satu playernya, dimana kecerdasan komputer diperoleh dari metode Game Tree. Pemilihan langkah terbaik berdasarkan pada hasil penilaian yang telah didesain pada langkah 3.


(26)

5. Membuat program Tic Tac Toe

Proses pembuatan program game Tic Tac Toe dengan aplikasi code::blocks berbasis C++.

6. Pengujian untuk membuktikan bahwa player komputer tidak pernah kalah. Untuk tahap pengujian dengan cara mencoba program dengan bermain melawan player komputer.

3.2 Flowchart

Program akan insialisasi pemain untuk menentukan pemain pertama dan akan

mendapat simbol ‘X’. Kemudian pada percabangan apabila komputer melangkah maka

komputer akan mencari langkah terbaik. Pada sub algoritma berisi Game Tree sampai 2 langkah ke depan untuk komputer. Apabila komputer tidak melangkah maka player manusia yang melangkah. Kemudian untuk memeriksa permainan telah berakhir atau tidak akan di deteksi dari sub algoritma yang bertugas mencari tahu apakah permainan telah berakhir atau tidak dan menentukan pemenang dari permainan apakah pemain satu atau dua menang, kalah atau imbang. Apabila permainan berakhir maka hasil akan di tampilkan.


(27)

Berikut Flowchart dari peneletian :


(28)

3.3 Alat Penelitian

Alat yang digunakan untuk membuat penelitian ini adalah Personal Computer(PC)/Laptop. Pada alat tersebut terdapat Software/Aplikasi Code::Blocks.

3.4 Rules(Aturan)

Dalam setiap permainan selalu mempunyai peraturan masing-masing. Maka dalam permainan Tic Tac Toe dengan ukuran kotak 3x3 mempunyai aturan sebagai berikut :

1. Pemain Manusia dapat memilih kesempatan bermain terlebih dahulu dengan memilih symbol O atau X.

2. Komputer akan memulai permainan setelah pemain manusia bermain terlebih dulu atau memulai sebelum pemain manusia apabila pemain manusia memilih melangkah setelah komputer.

3. Pemain manusia atau komputer harus satu garis lurus(Horizontal, Vertikal, atau Diagonal) untuk dapat memenangkan permainan ini.

3.4.1 Kondisi Menang

Kondisi ini terjadi apabila pemain manusia atau komputer berhasil membuat satu garis lurus sesuai simbol yang dimiliki secara Horizontal, Vertikal, atau Diagonal terlebih dahulu.

3.4.2 Kondisi Kalah

Kondisi ini terjadi apabila salah satu dari pemain berhasil membuat satu garis lurus sesuai simbol yang dimiliki secara Horizontal, Vertikan, atau Diagonal terlebih dahulu. 3.4.3 Kondisi Seri

Kondisi ini terjadi apabila semua kotak telah terisi penuh tanpa ada pemain yang berhasil membuat garis lurus sesuai simbol yang dimiliki secara Horizontal, Vertikal, atau Diagonal terlebih dahulu.


(29)

3.5 Perancangan Program

Perancangan program dibagi menjadi beberapa bagian pengerjaan yaitu sebagai berikut :

3.5.1 Membuat Main Program

Pada tahap ini adalah awalan program Tic Tac Toe yang dibuat, dimana pemain manusia memilih giliran bermain. Apabila pemain manusia memilih pertama maka simbol yang dimiliki pemain manusia ‘O’, sedangkan pemain komputer dengan simbol ‘X’. Kemudian akan dilanjutkan pada sub program ‘manusia’ dimana terdapat proses permainan mulai awal hingga permainan berakhir. Apabila pemain manusia memilih giliran bermain kedua maka simbol yang dimiliki pemain manusia ‘X’, sedangkan pemain komputer dengan

simbol ‘O’. Kemudian akan dilanjutkan pada sub program ‘komputer’ dimana terdapat proses

pemain komputer memilih langkah untuk dipilih kemudian bergantian dengan pemain manusia. Gambaran umum untuk main program dengan flowchart:


(30)

3.5.2 Membuat Sub Progam Manusia

Sub program manusia bertugas untuk bagian melangkah manusia. Pilihan langkah manusia pada papan permainan di periksa kesamaannya dengan kondisi papan permainan terbaru. Terdapat pilihan 1 sampai dengan 9 yang disajikan untuk dipilih manusia, berikut penjelasan menu yang sudah ditetapkan :

a. Menu 1 : Baris 1, kolom 1. b. Menu 2 : Baris 1, kolom 2. c. Menu 3 : Baris 1, kolom 3. d. Menu 4 : Baris 2, kolom 1. e. Menu 5 : Baris 2, kolom 2. f. Menu 6 : Baris 2, kolom 3. g. Menu 7 : Baris 3, kolom 1. h. Menu 8 : Baris 3, kolom 2. i. Menu 9 : Baris 3, kolom 3.


(31)

Apabila kotak yang telah dipilih sudah terisi maka manusia akan diminta untuk memilih langkah lain. Setelah manusia selesai memilih, selanjutnya program akan dilanjutkan pada sub program untuk komputer. Berikut gambaran umum untuk sub program komputer dengan flowchart:

Gambar 3.4 Flowchart manusia

3.5.3 Sub Program Kondisi

Sub program kondisi berfungsi untuk melihat keadaan permainan atau sebagai pemeriksaan dimana salah satu pemain telah memiliki tiga simbol yang menyatakan pemain tersebut menang. Sub program kondisi disini juga untuk melihat keadaan papan permainan apabila semua kotak yang bisa di isi atau masih kosong sudah tidak ada. Dengan kata lain papan permainan telah terisi semua maka permainan berakhir seri atau tidak ada pemain yang berhasil menang. Sub ini bertujuan untuk memeriksa permainan setiap giliran manusia memilih. Berikut gambaran umum untuk sub program manusia dengan flowchart :


(32)

Gambar 3.5 Flowchart kondisi

3.5.4 Sub Program Komputer

Pada sub algoritma komputer mempunyai tugas untuk membangun game tree dengan struct yang sudah dibangun. Kondisi papn permainan terbaru sebagai acuan untuk membangun game tree dimana komputer akan memprediksi 2 langkah kedepan pada permainan. Langkah 1 untuk kemungkinan langkah komputer selanjutnya, kemudian komputer mmprediksi kemungkinan langkah pada kotak permainan yang masih kosong untuk manusia. Langkah yang diprediksi ini sebagai pendukung kecerdasan komputer dalam bermain Tic Tac Toe sehingga komputer tidak pernah kalah dengan manusia.


(33)

Gambar 3.6 Flowchart computer

3.5.5 Sub Program Metode Game Tree

Game tree berfungsi untuk meneliti pergerakan langkah pemain dan pengambilan keputusan langkah yang optimal untuk computer dan meneliti kemungkinan dari 2 langkah kedepan dari permainan. Membangun node pertama sebagai akar atau root yang mempunyai data berisi papan permainan terbaru dan tingkatan untuk akar pada level 0. Selanjutnya akar akan membuat anak atau child sebanyak jumlah kotak yang belum terisis pada papan permainan. Pada setiap child berisi tiap-tiap langkah kemungkinan computer mulai dari awal kotak sampai akhir kotak yang kosong dimana child mempunyai tingkatan level 1. Pada child yang pertama setelah terisi data papan permainan dengan tambahan kemungkinan langkah komputer dibentuk kemudian membentuk sebuah daun atau leaf dengan berisi data kemungkinan manusia melangkah yang diambil setelah komputer memilih.


(34)

Leaf yang terletak pada level 3 ini nantinya yang akan menentukan langkah komputer yang akan dipilih. Dengan menghitung jumlah nilai dari letak posisi bidak manusia kemudian menelusuri nilai yang paling terkecil. Leaf yang mempunyai nilai yang paling terkecil ini nantinya akan memanggil atau kembali pada child. Child yang telah terpilih ini yang akan digunakan untuk mengambil keputusan langkah komputer selanjutnya. Proses game tree dapat di jelaskan pada gambar berikut :

Gambar 3.7 Game Tree

Gambar di atas adalah proses membuat game tree untuk langkah komputer dalam menentukan langkah. Game tree akan dimulai pada saat komputer mendapat giliran bermain,


(35)

dengan meneliti kondisi permainan hingga 2 langkah kedepan dimana pada level 0 adalah kondisi papan permainan yang terbaru, level 1 kemungkinan komputer untuk melangkah di bagian kotak yang kosong sedangkan untuk level 2 kemungkinan manusia melangkah setelah komputer memilih.

3.5.6 Sub Program Nilai

Proses mencari nilai yang paling terkecil berguna untuk menentukan langkah komputer setelah game tree di buat. Hanya pada level 2 atau kemungkinan langkah manusia yang akan di hitung jumlah nilai yang dimiliki manusia. Berikut proses penentuan nilai pada setiap kotak :

Gambar 3.8 Nilai/Point

Seluruh nilai yang berada pada leaf node di jumlahkan dan di bandingkan dengan leaf node yang lain untuk mencari nilai yang terkecil. Leaf node yang memiliki nilai paling terkecil kembali kepada parent, parent tersebut berisi data yang akan dipakai untuk langkah komputer selanjutnya. Untuk mengunjungi antar node dengan memakai algorithm preorder, dengan awalan mengunjungi akar/root kemudian mengunjungi satu persatu child nodes dari pertama hingga akhir. Pencarian nilai dijelaskan pada gambar berikut :


(36)

Gambar 3.9 Pencarian Nilai Terkecil

3.6 Percobaan Metode Game Tree

Percobaan metode game tree bertujuan untuk memastikan komputer dapat menentukan langkah terbaik dengan cara meneliti langkah-langkah manusia dan mencari nilai paling terkecil yang dimiliki manusia seperti pada gambar 3.9. Dengan awal permainan dimana komputer mendapat giliran pertama. Ketika kondisi papan permainan masih belum ada yang terisi maka komputer memilih posisi tengah kotak permainan sesuai dengan nilai yang paling terkecil yang dimiliki manusia. Pada gambar berikut bukti untuk ke akuratan keberhasilan metode game tree untuk memberi kecerdasan komputer dalam memilih langkah


(37)

terbaik dalam permainan Tic Tac Toe. Berikut gambar hasil pecobaan langkah komputer ketika mendapat giliran bermain yang pertama dengan metode game tree.

Gambar 3.10 Hasil Percobaan pertama

3.7 Percobaan Metode Game Tree lanjut

Percobaan selanjutnya bertujuan bertujuan untuk memastikan komputer dapat menentukan langkah terbaik dengan cara meneliti langkah-langkah manusia dan mencari nilai paling terkecil yang dimiliki manusia. Dalam percobaan lanjut ini komputer mendapat giliran bermain kedua setelah manusia melangkah. Dalam menentukan langkah komputer ketika menjadi pemain kedua juga dengan metode game tree dengan mencari nilai terkecil yang dimiliki manusia. Disini terdapat nilai terkecil yang memiliki kesamaan, komputer akan memilih angka terkecil terakhir untuk melangkah. Berikut gambaran proses metode game tree dengan nilai keseluruhan yang dipilih paling terkecil dari manusia :


(38)

Gambar 3.11 Pencarian Nilai Terkecil lanjut

Keberhasilan dari percobaan lanjut ini dapat dilihat pada gambar berikut :


(39)

35

Perangkat lunak terdiri dari 2 bagian utama, yaitu game tree untuk memberi kecerdasan bagi komputer.dan pencarian nilai terkecil bagi manusia. Langkah pertama sebelum menuju ke bagian utama adalah mencari kemungkinan langkah untuk komputer dan manusia pada posisi kotak berukuran 3x3 yang belum terisi. Hasil dari kemungkinan melangkah manusia dan komputer akan dimasukkan ke dalam metode game tree. Hal ini membuat komputer dapat melihat kondisi permainan untuk 2 langkah kedepan.

Pengujian perangkat lunak yang dibuat secara keseluruhan adalah pengujian terhadap metode game tree, pencarian nilai terkecil dengan cara memainkan permainan Tic Tac Toe untuk 20 orang yang berbeda. Dengan tujuan memastikan tingkat keberhasilan pada komputer yang tidak pernah kalah atau seri terhadap manusia . Tiap orang mencoba bermain sebanyak 2 kali permainan.


(40)

4.1 Pengujian Perangkat Lunak

Dalam mengetahui perangkat lunak yang dibuat bias sesua dengan metode yang dipakai maka dilakukan pengujian terhadap masing-masing komponen perangkat. Alat dan bahan yang digunakan sebelum memulai pengujian:

1. Laptop

2. Software Code::Blocks

4.1.1 Pengujian Tic Tac Toe Game Tree A. Tujuan

Pengujian bertujuan untuk mengetahui apakah komputer yang melihat 2 langkah kedepan dapat menang atau bermain imbang dengan manusia.

B. Prosedur Pengujian

1. Klik Project Code::Blocks.

2. Run Program.

3. Kemudian memulai permainan dengan memilih menu yang tersedia.

4. Pilih kotak yang ingin di isi dengan menyesuaikan pada pilihan pada menu yang tersedia.

5. Mainkan permainan sampai selesai.


(41)

C. Hasil Pengujian

Gambar 4.1 Manusia Memilih Kotak Nomor 2

Gambar 4.2 Komputer Memilih Kotak Nomor 5


(42)

Gambar 4.4 Komputer Memilih Kotak Nomor 9

Hasil pengujian dari metode game tree menunjukkan bahwa komputer memilih kotak tengah karena peluang untuk menang lebih banyak daripada kotak yang lain. Selanjutnya nilai terkecil yang dimiliki manusia memiliki 4 kesamaan, maka komputer memilih nilai yang terakhir untuk melangkah seperti pada gambar 4.2 tersebut. Dengan hasil yang didapat , metode game tree yang dibuat sudah berhasil. Penentuan keberhasilan yang dijelaskan pada BAB III bahwa proses metode game tree meneliti kemungkinan 2 langkah permainan. Jadi ketika giliran komputer bermain maka game tree ini baru akan dibuat. Dengan papan permainan terbaru akan dilihat untuk 2 langkah kedepan dimana langkah pertama untuk kemungkinan melangkah komputer sedangkan untuk langkah kedua untuk kemungkinan melangkah bagi manusia.


(43)

4.1.2 Pengujian Memilih Nilai Terkecil A. Tujuan

Pengujian dimaksudkan untuk pengambilan keputusan langkah bagi komputer dengan mencari nilai yang paling kecil untuk manusia.

B. Prosedur Pengujian

1. Klik Project Code::Blocks.

2. Run Program.

3. Kemudian memulai permainan dengan memilih menu yang tersedia.

4. Pilih kotak yang ingin di isi dengan menyesuaikan pada pilihan pada menu yang tersedia.

5. Mainkan permainan sampai selesai.


(44)

C. Hasil Pengujian


(45)

Gambar 4.6 Hasil Pengujian Nilai 2

Hasil pengujian menunjukkan bahwa dari beberapa nilai yang ada terdapat nilai yang paling kecil, nilai tersebut yang akan di ambil sebagai langkah yang paling merugikan bagi manusia apabila komputer mengambil langkah tersebut. Dengan ini menunjukkan bahwa pengujian mencari nilai terkecil untuk manusia telah memenuhi target.


(46)

4.2 Pengujian Kecerdasan Komputer A. Tujuan

Pengujian kecerdasan komputer adalah pengujian terhadap komputer dalam melawan manusia untuk mengetahui hasil akhir dari permainan apakah komputer selalu menang melawan manusia

B. Prosedur Pengujian

1. Komputer bermain dengan 20 orang yang berbeda.

2. Tiap orang bermain sebanyak 2 kali permainan

C. Hasil Pengujian

Tabel 4.1 Hasil Permainan Dari Partisian

Permainan1 Permainan2

No Manusia Komputer Manusia Komputer

1 Kalah Menang Seri Seri

2 Seri Seri Seri Seri

3 Seri Seri Seri Seri

4 Seri Seri Seri Seri

5 Kalah Menang Seri Seri

6 Kalah Menang Kalah Menang

7 Kalah Menang Seri Seri

8 Kalah Menang Seri Seri


(47)

10 Kalah Menang Kalah Menang

11 Kalah Menang Kalah Menang

12 Seri Seri Seri Seri

13 Kalah Menang Seri Seri

14 Kalah Menang Seri Seri

15 Kalah Menang Seri Seri

16 Seri Seri Seri Seri

17 Seri Seri Seri Seri

18 Kalah Menang Seri Seri

19 Kalah Menang Seri Seri

20 Seri Seri Seri Seri

Hasil pengujian terlihat pada tabel 4.1 dimana komputer tidak pernah kalah dengan manusia. Hasil seri banyak didapat karena metode game tree yang dipakai hanya melihat untuk 2 langkah kedepan. Dengan hasil tersebut telah sesuai dengan target yang diharapkan. Dengan asumsi bahwa kecerdasan komputer yang dibuat membuat komputer tidak bisa kalah atau imbang melawan manusia.


(48)

44

BAB V PENUTUP

Berdasarkan hasil pengujian pada perangkat lunak yang dipergunakan dalam permainan Tic Tac Toe dengan metode game tree, maka dapat diambil beberapa kesimpulan dan saran sebagai berikut.

5.1 Kesimpulan

Berdasarkan maslah yang telah dirumuskan sebelumnya dapat diambil kesimpulan berikut:

1. Permainan Tic Tac Toe dapat dimainkan pada PC dengan aplikasi Code::Blocks yang berbasis bahasa C.

2. Berdasarkan sub bab 4.2 komputer bias bermain Tic Tac Toe menggunakan metode game tree dan tidak pernah kalah dengan manusia.

3. Pemberian nilai pada masing-masing kotak game tree telah diberikan seperti gambar 3.8 dan terbukti efektif dengan tidak pernah kalah terhadap manusia.


(49)

5.2 Saran

Saran yang dapat diberikan untuk mengembangkan sistem ini sebagai berikut :

1. Perangkat lunak dikembangkan untuk kotak lebih dari 3x3.

2. Sebaiknya ditambahkan langkah komputer untuk permainan dengan jumlah kotak yang lebih besar.

3. Perangkat lunak dapat dikembangkan menjadi aplikasi android guna memperbaiki visualisasi perangkat lunak dan mudah di mainkan melalui handphone


(50)

(51)

(52)

46

DAFTAR PUSTAKA

Abidin, Taufik.F 2015, Binary Tree,

http://www.informatika.unsyiah.ac.i/tfa/ds/bst.pdf (Diakses Tanggal 03 Februari 2016)

Aryo Danang https, 2010, Modul Linked List c++, 2 Maret 2010, URL: https://id.scribd.com/doc/28723767/Modul-Linked-List-c (Diakses Tanggal 15 Februari 2016)

Pijls Wim and Arie de Bruin, 1999 “Game Tree Algorithms and Solution Trees” https://www.researchgate.net/profile/Wim_Pijls/publication/222850726_Ga me_tree_algorithms_and_solution_trees. (Diakses Tanggal 02 Februari 2016)

Sjukani, Moh. 2013, Algoritma(Algoritma dan Struktur Data 1) dengan C, C++, dan Java, Mitra Wacana Media, Jakarta.

Sjukani, Moh. 2012, Algoritma(Algoritma dan Struktur Data 2) dengan C, C++, dan Java, Mitra Wacana Media, Jakarta.

Wikipedia, Tic Tac Toe. 2016 https://en.wikipedia.org/wiki/Tic-tac-toe. (Diakses Tanggal 02 Februari 2016)


(1)

10 Kalah Menang Kalah Menang

11 Kalah Menang Kalah Menang

12 Seri Seri Seri Seri

13 Kalah Menang Seri Seri

14 Kalah Menang Seri Seri

15 Kalah Menang Seri Seri

16 Seri Seri Seri Seri

17 Seri Seri Seri Seri

18 Kalah Menang Seri Seri

19 Kalah Menang Seri Seri

20 Seri Seri Seri Seri

Hasil pengujian terlihat pada tabel 4.1 dimana komputer tidak pernah kalah dengan manusia. Hasil seri banyak didapat karena metode game tree yang dipakai hanya melihat untuk 2 langkah kedepan. Dengan hasil tersebut telah sesuai dengan target yang diharapkan. Dengan asumsi bahwa kecerdasan komputer yang dibuat membuat komputer tidak bisa kalah atau imbang melawan manusia.


(2)

44 BAB V PENUTUP

Berdasarkan hasil pengujian pada perangkat lunak yang dipergunakan dalam permainan Tic Tac Toe dengan metode game tree, maka dapat diambil beberapa kesimpulan dan saran sebagai berikut.

5.1 Kesimpulan

Berdasarkan maslah yang telah dirumuskan sebelumnya dapat diambil kesimpulan berikut:

1. Permainan Tic Tac Toe dapat dimainkan pada PC dengan aplikasi Code::Blocks yang berbasis bahasa C.

2. Berdasarkan sub bab 4.2 komputer bias bermain Tic Tac Toe menggunakan metode game tree dan tidak pernah kalah dengan manusia.

3. Pemberian nilai pada masing-masing kotak game tree telah diberikan seperti gambar 3.8 dan terbukti efektif dengan tidak pernah kalah terhadap manusia.


(3)

5.2 Saran

Saran yang dapat diberikan untuk mengembangkan sistem ini sebagai berikut :

1. Perangkat lunak dikembangkan untuk kotak lebih dari 3x3.

2. Sebaiknya ditambahkan langkah komputer untuk permainan dengan jumlah kotak yang lebih besar.

3. Perangkat lunak dapat dikembangkan menjadi aplikasi android guna memperbaiki visualisasi perangkat lunak dan mudah di mainkan melalui handphone


(4)

(5)

(6)

46

DAFTAR PUSTAKA

Abidin, Taufik.F 2015, Binary Tree,

http://www.informatika.unsyiah.ac.i/tfa/ds/bst.pdf (Diakses Tanggal 03 Februari 2016)

Aryo Danang https, 2010, Modul Linked List c++, 2 Maret 2010, URL: https://id.scribd.com/doc/28723767/Modul-Linked-List-c (Diakses Tanggal 15 Februari 2016)

Pijls Wim and Arie de Bruin, 1999 “Game Tree Algorithms and Solution Trees” https://www.researchgate.net/profile/Wim_Pijls/publication/222850726_Ga me_tree_algorithms_and_solution_trees. (Diakses Tanggal 02 Februari 2016)

Sjukani, Moh. 2013, Algoritma(Algoritma dan Struktur Data 1) dengan C, C++, dan Java, Mitra Wacana Media, Jakarta.

Sjukani, Moh. 2012, Algoritma(Algoritma dan Struktur Data 2) dengan C, C++, dan Java, Mitra Wacana Media, Jakarta.

Wikipedia, Tic Tac Toe. 2016 https://en.wikipedia.org/wiki/Tic-tac-toe. (Diakses Tanggal 02 Februari 2016)