manual book

21
1 UNIVERSITAS GUNADARMA PRAKTIKUM PENGANTAR KECERDASAN BUATAN MANUAL BOOK Kuroko Nama : Agung Ginanjar Kusumah NPM : 50412351 Jurusan : Teknik Informatika Fakultas : Teknologi Industri PJ : Ranisa Astria DIAJUKAN GUNA MELENGKAPI SEBAGIAN SYARAT PRAKTIKUM PKB 2014/2015

Upload: agung-ginanjar-k

Post on 12-Apr-2017

177 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Manual book

1

UNIVERSITAS GUNADARMA

PRAKTIKUM PENGANTAR KECERDASAN BUATAN

MANUAL BOOK

“ Kuroko “

Nama : Agung Ginanjar Kusumah

NPM : 50412351 Jurusan : Teknik Informatika Fakultas : Teknologi Industri

PJ : Ranisa Astria

DIAJUKAN GUNA MELENGKAPI

SEBAGIAN SYARAT PRAKTIKUM PKB 2014/2015

Page 2: Manual book

2

Daftar Isi

Daftar Isi ------------------------------------------------------------------ 2

Initial State ------------------------------------------------------------------ 3

Rules ------------------------------------------------------------------ 7 Goals ------------------------------------------------------------------ 8

Konsep AI ------------------------------------------------------------------ 9

Algoritma Yang Dipakai ------------------------------------------------------------------ 9

Listing Program ------------------------------------------------------------------ 10

Daftar Pustaka ------------------------------------------------------------------ 21 Glosarium ------------------------------------------------------------------ 21

Lembar Project ------------------------------------------------------------------ 22

Page 3: Manual book

3

Initial State

Initial state dalam game “Kuroko” yang merupakan game Tick Tack Toe 12x12 yang sudah di kembangkan sedemikian rupa dengan gambar-gambar anime kuroko no basuke dan

tampilan yang lebih menarik dan bersangkutan dengan tokoh anime tetsu dan rivalnya sendiri serta temen seperjuangnya waktu dia berada pada Sekolah Menengah Pertama (SMP) yaitu Akashi. Tentunya dengan interface yang menarik, game ini di tidak hanya untuk anak-anak,

tetapi untuk anak muda yang sangat senang sekali dengan tokoh anime ini serta gambar-gambar yang membuat user di buat seolah olah seperti akan melawan rivalnya sendiri

(Akashi). Seperti halnya kehidupan, ketika seorang Tetsu melangkah maka Akashi akan menghalangi tetsu karena dia yakin bahwa tetsu mempunyai sebuah kemampuan yang tidak dimiliki oleh orang lain. Selain itu, Akashi juga sebagai AI (Artificial Intelligence) yang

membuat Games ini akan semakin bertambah menarik serta menantang. Pertama dijalankan game ini akan menampilkan loading bar, seperti gambar di bawah:

Setelah loading bar mencapai 100% maka akan tampilan Splash Screen seperti ini :

Lalu dalam window ini terdapat 3 button utama yaitu :

Button Play : untuk masuk ke jendela game utama

Button Rules : berisikan aturan dalam memainkan game ini

Page 4: Manual book

4

Tampilan window Rules

Button Exit : untuk keluar dari game ini.

Tampilan window Exit

Dibagian atas juga terdapat toolbar menu dan about, dalam toolbar menu dibagi menjadi 2 pilihan yaitu mulai atau keluar

Mulai : sama seperti tombol play, yaitu digunakan untuk memulai game

Keluar : untuk keluar dari game

About : berisikan informasi tentang identitas pembuat game ini

Tampilan about :

Page 5: Manual book

5

Untuk masuk ke game utama kita bisa klik Play dan di window ke 2 terdapat papan

permainan tic-tac-toe dengan dimensi 12x12 baris dan kolom.

didalam papan permainan ini, user berperan sebagai Tetsu dengan gambar dan juga

komputer dengan AI nya sebagai Akashi dengan gambar . Untuk kembali ke window

menu, kita bisa menggunakan toolbar back yang berada di pojok kiri atas. Jika anda

berkesempatan menang atau hanya tinggal 1 langkah lagi menuju kemenangan, maka akan

tampil pesan sebagai berikut :

Page 6: Manual book

6

Berikut Adalah output level pada game kuroko :

Page 7: Manual book

7

Rules Ada beberapa peraturan didalam permainan ini, antara lain:

Pemain harus menyusun 12 gambar secara horizontal atau vertikal atau diagonal.

Pemain diberikan kesempatan pertama untuk menaruh gambar di salah satu kotak.

Komputer diberikan kesempatan kedua (setelah pemain) untuk meletakkan gambar di salah satu kotak.

Komputer telah dirancang untuk berusaha menghalangi pemain memenangkan permainan ini dan tujuan akhir dari permainan (goal).

Disamping menghalangi pemain memenangkan permainan ini, komputer juga

dirancang untuk memenangkan permainan dan mencapai tujuan akhir dari permainan(goal).

Page 8: Manual book

8

Goals

Goal atau kemenangan dari permainan “Kuroko” adalah siapa yang pertama dapat menyusun

12 gambar baik horizontal atau vertikal ataupun diagonal baik pemain ataupun komputer.

Tampilan jika menang:

Tampilan jika kalah:

Page 9: Manual book

9

Konsep AI

Kecerdasan Buatan dimunculkan oleh seorang professor dari Massachusetts Institute of Technology (MIT) yang bernama John McCarthy pada tahun 1956 pada saat Dart Mouth

Conference yang dihadiri oleh para peneliti AI. Kecerdasan Buatan (Artificial Intelligence) adalah Teknologi yang mensimulasikan

kecerdasan manusia, yaitu bagaimana mendefinisikan dan mencoba menyelesaikan persoalan menggunakan komputer dengan meniru bagaimana manusia menyelesaikan dengan cepat. Permainan “Kuroko” mengandung konsep AI ( Artificial Intelligence) dimana komputer bisa

berfikir, mempunyai penalaran dan kecerdasan seperti yang dimiliki oleh manusia. Komputer mempunyai kecerdasan buatan yang diambil dari knowledge base dan kemampuan untuk

mengambil keputusan dari inference engine. Dalam permainan “Kuroko” yang berbasic Tic-Tac-Toe (12x12) ini digunakan algoritma minimax. Minimax adalah teknik pelacakan atau pencarian dengan kedalaman terbatas,

semakin banyak level kedalamannya maka langkah yang dibuat akan lebih baik karena komputer dapat lebih mengetahui prediksi langkah kedepan.

Implementasi algoritma minimax dalam permainan ini dapat dilihat dari definisi awal kedalaman yang ada di dalam program. Dalam program, saya mendefinisikan dua variable, yaitu win_deep(0) dan nolose_deep(0). Masing-masing mempunyai nilai nol dikarenakan

jika menggunakan kedalaman lebih dari 0 pada permainan Tic Tac Toe yang berdimensi besar (12x12) maka AI akan terlalu lama mencari langkah selanjutnya ataupun program akan

berhenti. Walaupun sesuai dengan definisi dari algoritma minimax, maka semakin banyak level kedalamannya, maka tingkat kecerdasan dari komputer akan menjadi semakin baik.

Algoritma yang dipakai

Berikut ini adalah algoritma yang dipakai dalam permainan ini :

1. Pemain(user) memiliki kesempatan jalan terlebih dahulu, klik kiri unutuk menaruh gambar kuroko pada salah satu kotak yang ada pada papan permainan

2. Selanjutnya AI akan bergerak untuk menghalangi pemain mencapai goal,serta AI dirancang untuk memanangkan permainan ini

3. game berakhir apabila pemain/ai yang dapat terlebih dahulu menyusun 12 gambar baik horizontal atau vertikal ataupun diagonal akan dinyatakan sebagai pemenang.

Dalam permainan “Kuroko” Algoritma yang digunakan adalah minimax, minimax

merupakan salah satu teknik algoritma dalam permainan yang terkenal. Minimax menggunakan teknik pencarian Depth-First Search dengan kedalaman terbatas, dan fungsi evaluasi yang digunakan adalah fungsi evaluasi statis, dengan mengansumsikan bahwa lawan

akan membuat langkah terbaiknya yang dapat dilakukan, algoritma minimax cocok digunakan untuk permainan Tic-Tac-Toe.

Page 10: Manual book

10

Listing Program

win_deep(0). % You can change this two numbers to make the AI

more clever

nolose_deep(0).

?-

window(G_loading,_,window_awal(_),"Kuroko", 250, 0,800,600).

%window loading

%==========================loading============================

============%

window_awal(init):-

G_batas := 0,

G_X := 205,

G_waktu is set_timer(_,0.02,loading_bar).

loading_bar(end):-

text_out(375,200,print("LOADING")),

text_out(390,220,print(G_batas + "%")),

pen(5,rgb(142,105,68)), %garis pada kotak

brush(rgb(225,225,225)), %warna loading

rect(200,250,609,300), %gambar kotak pada loading

pen(0,rgb(0,0,0)),

brush(rgb(0,0,0)),

rect(205,255,G_X,297),

G_batas := G_batas + 1,

G_X := G_X + 4,

(G_batas >= 101 ->

close_window(G_loading),

window(G_menu, _, daftar_menu(_),"Kuroko", 250, 0, 1080,

607)). %window menu

%=========================menu==============================%

daftar_menu(init):-

menu(pop_up, _,_,menu_bar(_),"Menu"),

menu(normal, _,_,about(_),"About"),

button(_,_,mulai(_),"Play",235,430,120,40),

button(_,_,cara_main(_),"Rules",465,350,120,40),

button(_,_,keluar(_),"Exit",680,430,120,40).

daftar_menu(paint):-

draw_bitmap(0,0,bitmap_image("Pictures//KNB.bmp",_),_,_),

fail.

menu_bar(init):-

menu(normal,_,_,mulai(_),"Mulai"),

menu(normal,_,_,keluar(_),"Keluar").

about(press):-

message("About", "

Page 11: Manual book

11

Kuroko

Dikembangkan oleh :

Nama : Agung Ginanjar Kusumah

NPM : 50412351

Kelas : 3IA12"

,n).

menu_back(press):-

close_window(G_main),

execute("Audio\\taskill.bat"),

window(G_menu, _, daftar_menu(_),"Kuroko", 250, 0, 1080,

607).

menu_level(init) :-

menu( normal, _, _, menu_easy(_), "& Easy"),

menu( normal, _, _, menu_hard(_), "& Hard").

menu_easy(press) :-

message("Time","kamu memiliki waktu 60 detik untuk memenangkan

pertandingan ini",i),

update_window(_),

G_M := 60,

G_waktu is set_timer(_,1,time_func).

menu_hard(press) :-

message("waktu","kamu memiliki waktu 30 detik untuk

memenangkan pertandingan ini",i),

update_window(_),

G_M := 30,

G_waktu is set_timer(_,1,time_func).

time_func(end):-

(G_M=:=10 ->

pen(5,rgb(255,255,255)),

rect(49,10,70,25)),

(G_M=:=0 ->

kill_timer(_,G_waktu),

message("Waktu Habis, Anda tidak bisa memenangkan

pertandingan ini",!),

close_window(_)

else

Angka is print(G_N),

font(20,70,"Arial"),

G_M <>= G_M-1),

T is printq(G_M),

text_out(670,10,T).

cara_main(press):-

message("Rules","Deretkan gambar berjumlah 12 secara

horizontal, vertikal atau diagonal maka kamu akan menang",n).

Page 12: Manual book

12

mulai(press):-

close_window(G_menu),

execute("Audio\\lagu.exe"),

set(pos([[f,f,f,f,f,f,f,f,f,f,f,f],

[f,f,f,f,f,f,f,f,f,f,f,f], [f,f,f,f,f,f,f,f,f,f,f,f],

[f,f,f,f,f,f,f,f,f,f,f,f],[f,f,f,f,f,f,f,f,f,f,f,f],

[f,f,f,f,f,f,f,f,f,f,f,f], [f,f,f,f,f,f,f,f,f,f,f,f],

[f,f,f,f,f,f,f,f,f,f,f,f],[f,f,f,f,f,f,f,f,f,f,f,f],

[f,f,f,f,f,f,f,f,f,f,f,f], [f,f,f,f,f,f,f,f,f,f,f,f],

[f,f,f,f,f,f,f,f,f,f,f,f]])),

set(lose_flag(false)),

brush(system_color(window)),

window(G_main, _, win_func(_), "Kuroko", 250, 0, 1100,

666), %window saat bermain

update_window(_).

keluar(press):-

yes_no("Exit", "Are You Sure ?",?),

execute("Audio\\taskill.bat"),

close_window(G_menu).

win_func(init):-

menu(normal,_,_,menu_back(_),"Back"),

menu(pop_up,_,_,menu_level(_),"Level").

%===========================gambar

bidak======================%

put_mark(Mark) :-

pos(Current_Pos),

member(Current_Pos, L, Y),

member(L, Mark, X),

X1 is 40 + 45*X, Y1 is 40 + 45*Y, X2 is X1 + 30, Y2 is Y1

+30,

write_mark(Mark, X1, Y1, X2, Y2),

fail.

put_mark(_).

write_mark(x, X1, Y1, X2, Y2) :-

draw_bitmap(X1,Y1,bitmap_image("Pictures\\pemain.bmp",_),_,_).

write_mark(o, X1, Y1, X2, Y2) :-

draw_bitmap(X1,Y1,bitmap_image("Pictures\\komputer.bmp",_),_,_

).

win_func(paint) :-

draw_bitmap(0,0,bitmap_image("Pictures\\background1.bmp",_),_,

_),

fail.

Page 13: Manual book

13

%================papan permainan===============%

win_func(paint) :-

pen(3, rgb(0, 0, 0)),

line(30, 30, 30, 570), %kiri

line(30, 570, 570, 570), %bawah

line(570, 570, 570, 30), %kanan

line(570, 30, 30, 30), %atas

line(75, 30, 75, 570),

line(120, 30, 120, 570),

line(165, 30, 165, 570),

line(210, 30, 210, 570),

line(255, 30, 255, 570),

line(300, 30, 300, 570),

line(345, 30, 345, 570),

line(390, 30, 390, 570),

line(435, 30, 435, 570),

line(480, 30, 480, 570),

line(525, 30, 525, 570),

line(570, 30, 570, 570),

line(30, 75, 570, 75),

line(30, 120, 570, 120),

line(30, 165, 570, 165),

line(30, 210, 570, 210),

line(30, 255, 570, 255),

line(30, 300, 570, 300),

line(30, 345, 570, 345),

line(30, 390, 570, 390),

line(30, 435, 570, 435),

line(30, 480, 570, 480),

line(30, 525, 570, 525),

line(30, 570, 570, 570),

put_mark(x),

put_mark(o),

fail.

win_func(mouse_click(X, Y)) :-

lose_flag(false),

X>30, Y>30,

X<1800, Y<1800,

X1 is (X - 30)//45,

Y1 is (Y - 30)//45,

pos(Current_Pos),

member(Current_Pos, L, Y1),

member(L, f, X1),

!,

replace(L2, L, x, X1),

Page 14: Manual book

14

replace(Current_Pos2, Current_Pos, L2, Y1),

set(pos(Current_Pos2)),

not(win_func(paint)),

beep("audio//Sound1.wav"),

think(Current_Pos2).

win_func(mouse_click(X, Y)) :-

beep.

think(Pos) :-

victory(x, Pos), !,

set(lose_flag(true)),

message("Amazing","Kamu adalah Pemenang.",!),

close_window(G_main),

window(G_menu, _, daftar_menu(_),"Kuroko", 250, 0, 1080,

607),

update_window(_).

think(Pos) :-

try_to_win(Pos), !.

think(Pos) :-

retractall(last_good_move(_)), try_nolose(Pos).

think(_) :-

last_good_move(Sit2), !,

set(pos(Sit2)),

not(win_func(paint)),

beep("Audio\\laser.wav").

think(Pos) :-

message("Selamat", "Kamu memiliki beberapa kesempatan dalam

pertandingan ini.", n),

move(o, Pos, Sit2),

nolose(x, Sit2, 0), !, % Tries to make the lose farther

set(pos(Sit2)),

not(win_func(paint)),

beep("Audio\\laser.wav").

think(Pos) :-

move(o, Pos, Sit2),

set(pos(Sit2)),

not(win_func(paint)),

beep("Audio\\sound2.wav").

try_nolose(Pos) :-

move(o, Pos, Sit2),

nolose_deep(Deep),

nolose(x, Sit2, Deep),

set(last_good_move(Sit2)),

Page 15: Manual book

15

random(3)=:=0, !, fail. % this makes the game more

interesting

try_to_win(Pos) :-

move(o, Pos, Sit2),

is_it_win(Sit2).

is_it_win(Sit2) :-

victory(o, Sit2),

set(pos(Sit2)),

not(win_func(paint)),

beep("Audio\\Wind.wav"),

set(lose_flag(true)),

message("Sorry My Friend","You cannot win against the

AI.",s),

close_window(G_main),

window(G_menu, _, daftar_menu(_),"Kuroko", 250, 0, 1080,

607).

is_it_win(Sit2) :-

win_deep(Deep),

win(x, Sit2, Deep),

set(pos(Sit2)),

not(win_func(paint)),

beep("Audio\\sound2.wav"),

message("Advice","Give up. Don't lose my time.",i).

member([Element, _, _, _, _, _, _, _, _, _, _, _], Element,

0).

member([_, Element, _, _, _, _, _, _, _, _, _, _], Element,

1).

member([_, _, Element, _, _, _, _, _, _, _, _, _], Element,

2).

member([_, _, _, Element, _, _, _, _, _, _, _, _], Element,

3).

member([_, _, _, _, Element, _, _, _, _, _, _, _], Element,

4).

member([_, _, _, _, _, Element, _, _, _, _, _, _], Element,

5).

member([_, _, _, _, _, _, Element, _, _, _, _, _], Element,

6).

member([_, _, _, _, _, _, _, Element, _, _, _, _], Element,

7).

member([_, _, _, _, _, _, _, _, Element, _, _, _], Element,

8).

member([_, _, _, _, _, _, _, _, _, Element, _, _], Element,

9).

member([_, _, _, _, _, _, _, _, _, _, Element, _], Element,

10).

member([_, _, _, _, _, _, _, _, _, _, _, Element], Element,

11).

Page 16: Manual book

16

replace([Element, A, B, C, D, E, F, G, H, I, J, K], [_, A, B,

C, D, E, F, G, H, I, J, K], Element, 0).

replace([A, Element, B, C, D, E, F, G, H, I, J, K], [A, _, B,

C, D, E, F, G, H, I, J, K], Element, 1).

replace([A, B, Element, C, D, E, F, G, H, I, J, K], [A, B, _,

C, D, E, F, G, H, I, J, K], Element, 2).

replace([A, B, C, Element, D, E, F, G, H, I, J, K], [A, B, C,

_, D, E, F, G, H, I, J, K], Element, 3).

replace([A, B, C, D, Element, E, F, G, H, I, J, K], [A, B, C,

D, _, E, F, G, H, I, J, K], Element, 4).

replace([A, B, C, D, E, Element, F, G, H, I, J, K], [A, B, C,

D, E, _, F, G, H, I, J, K], Element, 5).

replace([A, B, C, D, E, F, Element, G, H, I, J, K], [A, B, C,

D, E, F, _, G, H, I, J, K], Element, 6).

replace([A, B, C, D, E, F, G, Element, H, I, J, K], [A, B, C,

D, E, F, G, _, H, I, J, K], Element, 7).

replace([A, B, C, D, E, F, G, H, Element, I, J, K], [A, B, C,

D, E, F, G, H, _, I, J, K], Element, 8).

replace([A, B, C, D, E, F, G, H, I, Element, J, K], [A, B, C,

D, E, F, G, H, I, _, J, K], Element, 9).

replace([A, B, C, D, E, F, G, H, I, J, Element, K], [A, B, C,

D, E, F, G, H, I, J, _, K], Element, 10).

replace([A, B, C, D, E, F, G, H, I, J, K, Element], [A, B, C,

D, E, F, G, H, I, J, K, _], Element, 11).

% kondisi menang horizontal

victory(Who,

[[Who,Who,Who,Who,Who,Who,Who,Who,Who,Who,Who,Who],[_,_,_,_,_,

_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,

_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,

_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,

_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_]

,[_,_,_,_,_,_,_,_,_,_,_,_]]).

victory(Who,

[[_,_,_,_,_,_,_,_,_,_,_,_],[Who,Who,Who,Who,Who,Who,Who,Who,Wh

o,Who,Who,Who],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,

_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,

_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,

_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_]

,[_,_,_,_,_,_,_,_,_,_,_,_]]).

victory(Who,

[[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[Who,Who,

Who,Who,Who,Who,Who,Who,Who,Who,Who,Who],[_,_,_,_,_,_,_,_,_,_,

_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,

_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,

_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_]

,[_,_,_,_,_,_,_,_,_,_,_,_]]).

victory(Who,

[[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,

Page 17: Manual book

17

_,_,_,_,_,_,_,_],[Who,Who,Who,Who,Who,Who,Who,Who,Who,Who,Who,

Who],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,

_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,

_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_]

,[_,_,_,_,_,_,_,_,_,_,_,_]]).

victory(Who,

[[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,

_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[Who,Who,Who,Who,Wh

o,Who,Who,Who,Who,Who,Who,Who],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,

_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,

_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_]

,[_,_,_,_,_,_,_,_,_,_,_,_]]).

victory(Who,

[[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,

_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,

_,_,_],[Who,Who,Who,Who,Who,Who,Who,Who,Who,Who,Who,Who],[_,_,

_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,

_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_]

,[_,_,_,_,_,_,_,_,_,_,_,_]]).

victory(Who,

[[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,

_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,

_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[Who,Who,Who,Who,Who,Who,Who,

Who,Who,Who,Who,Who],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,

_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_]

,[_,_,_,_,_,_,_,_,_,_,_,_]]).

victory(Who,

[[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,

_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,

_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[Wh

o,Who,Who,Who,Who,Who,Who,Who,Who,Who,Who,Who],[_,_,_,_,_,_,_,

_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_]

,[_,_,_,_,_,_,_,_,_,_,_,_]]).

victory(Who,

[[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,

_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,

_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,

_,_,_,_,_,_,_,_,_,_,_],[Who,Who,Who,Who,Who,Who,Who,Who,Who,Wh

o,Who,Who],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_]

,[_,_,_,_,_,_,_,_,_,_,_,_]]).

victory(Who,

[[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,

_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,

_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,

_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[Who,Who,Who,

Who,Who,Who,Who,Who,Who,Who,Who,Who],[_,_,_,_,_,_,_,_,_,_,_,_]

,[_,_,_,_,_,_,_,_,_,_,_,_]]).

victory(Who,

[[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,

_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,

_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,

Page 18: Manual book

18

_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,

_,_,_,_,_,_],[Who,Who,Who,Who,Who,Who,Who,Who,Who,Who,Who,Who]

,[_,_,_,_,_,_,_,_,_,_,_,_]]).

victory(Who,

[[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,

_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,

_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,

_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,

_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_],[Who,Who,Who,Who,Who,Wh

o,Who,Who,Who,Who,Who,Who]]).

%kondisi menang diagonal

victory(Who,

[[Who,_,_,_,_,_,_,_,_,_,_,_],[Who,_,_,_,_,_,_,_,_,_,_,_],[Who,

_,_,_,_,_,_,_,_,_,_,_],[Who,_,_,_,_,_,_,_,_,_,_,_],[Who,_,_,_,

_,_,_,_,_,_,_,_],[Who,_,_,_,_,_,_,_,_,_,_,_],[Who,_,_,_,_,_,_,

_,_,_,_,_],[Who,_,_,_,_,_,_,_,_,_,_,_],[Who,_,_,_,_,_,_,_,_,_,

_,_],[Who,_,_,_,_,_,_,_,_,_,_,_],[Who,_,_,_,_,_,_,_,_,_,_,_],[

Who,_,_,_,_,_,_,_,_,_,_,_]]).

victory(Who,

[[_,Who,_,_,_,_,_,_,_,_,_,_],[_,Who,_,_,_,_,_,_,_,_,_,_],[_,Wh

o,_,_,_,_,_,_,_,_,_,_],[_,Who,_,_,_,_,_,_,_,_,_,_],[_,Who,_,_,

_,_,_,_,_,_,_,_],[_,Who,_,_,_,_,_,_,_,_,_,_],[_,Who,_,_,_,_,_,

_,_,_,_,_],[_,Who,_,_,_,_,_,_,_,_,_,_],[_,Who,_,_,_,_,_,_,_,_,

_,_],[_,Who,_,_,_,_,_,_,_,_,_,_],[_,Who,_,_,_,_,_,_,_,_,_,_],[

_,Who,_,_,_,_,_,_,_,_,_,_]]).

victory(Who,

[[_,_,Who,_,_,_,_,_,_,_,_,_],[_,_,Who,_,_,_,_,_,_,_,_,_],[_,_,

Who,_,_,_,_,_,_,_,_,_],[_,_,Who,_,_,_,_,_,_,_,_,_],[_,_,Who,_,

_,_,_,_,_,_,_,_],[_,_,Who,_,_,_,_,_,_,_,_,_],[_,_,Who,_,_,_,_,

_,_,_,_,_],[_,_,Who,_,_,_,_,_,_,_,_,_],[_,_,Who,_,_,_,_,_,_,_,

_,_],[_,_,Who,_,_,_,_,_,_,_,_,_],[_,_,Who,_,_,_,_,_,_,_,_,_],[

_,_,Who,_,_,_,_,_,_,_,_,_]]).

victory(Who,

[[_,_,_,Who,_,_,_,_,_,_,_,_],[_,_,_,Who,_,_,_,_,_,_,_,_],[_,_,

_,Who,_,_,_,_,_,_,_,_],[_,_,_,Who,_,_,_,_,_,_,_,_],[_,_,_,Who,

_,_,_,_,_,_,_,_],[_,_,_,Who,_,_,_,_,_,_,_,_],[_,_,_,Who,_,_,_,

_,_,_,_,_],[_,_,_,Who,_,_,_,_,_,_,_,_],[_,_,_,Who,_,_,_,_,_,_,

_,_],[_,_,_,Who,_,_,_,_,_,_,_,_],[_,_,_,Who,_,_,_,_,_,_,_,_],[

_,_,_,Who,_,_,_,_,_,_,_,_]]).

victory(Who,

[[_,_,_,_,Who,_,_,_,_,_,_,_],[_,_,_,_,Who,_,_,_,_,_,_,_],[_,_,

_,_,Who,_,_,_,_,_,_,_],[_,_,_,_,Who,_,_,_,_,_,_,_],[_,_,_,_,Wh

o,_,_,_,_,_,_,_],[_,_,_,_,Who,_,_,_,_,_,_,_],[_,_,_,_,Who,_,_,

_,_,_,_,_],[_,_,_,_,Who,_,_,_,_,_,_,_],[_,_,_,_,Who,_,_,_,_,_,

_,_],[_,_,_,_,Who,_,_,_,_,_,_,_],[_,_,_,_,Who,_,_,_,_,_,_,_],[

_,_,_,_,Who,_,_,_,_,_,_,_]]).

victory(Who,

[[_,_,_,_,_,Who,_,_,_,_,_,_],[_,_,_,_,_,Who,_,_,_,_,_,_],[_,_,

_,_,_,Who,_,_,_,_,_,_],[_,_,_,_,_,Who,_,_,_,_,_,_],[_,_,_,_,_,

Who,_,_,_,_,_,_],[_,_,_,_,_,Who,_,_,_,_,_,_],[_,_,_,_,_,Who,_,

Page 19: Manual book

19

_,_,_,_,_],[_,_,_,_,_,Who,_,_,_,_,_,_],[_,_,_,_,_,Who,_,_,_,_,

_,_],[_,_,_,_,_,Who,_,_,_,_,_,_],[_,_,_,_,_,Who,_,_,_,_,_,_],[

_,_,_,_,_,Who,_,_,_,_,_,_]]).

victory(Who,

[[_,_,_,_,_,_,Who,_,_,_,_,_],[_,_,_,_,_,_,Who,_,_,_,_,_],[_,_,

_,_,_,_,Who,_,_,_,_,_],[_,_,_,_,_,_,Who,_,_,_,_,_],[_,_,_,_,_,

_,Who,_,_,_,_,_],[_,_,_,_,_,_,Who,_,_,_,_,_],[_,_,_,_,_,_,Who,

_,_,_,_,_],[_,_,_,_,_,_,Who,_,_,_,_,_],[_,_,_,_,_,_,Who,_,_,_,

_,_],[_,_,_,_,_,_,Who,_,_,_,_,_],[_,_,_,_,_,_,Who,_,_,_,_,_],[

_,_,_,_,_,_,Who,_,_,_,_,_]]).

victory(Who,

[[_,_,_,_,_,_,_,Who,_,_,_,_],[_,_,_,_,_,_,_,Who,_,_,_,_],[_,_,

_,_,_,_,_,Who,_,_,_,_],[_,_,_,_,_,_,_,Who,_,_,_,_],[_,_,_,_,_,

_,_,Who,_,_,_,_],[_,_,_,_,_,_,_,Who,_,_,_,_],[_,_,_,_,_,_,_,Wh

o,_,_,_,_],[_,_,_,_,_,_,_,Who,_,_,_,_],[_,_,_,_,_,_,_,Who,_,_,

_,_],[_,_,_,_,_,_,_,Who,_,_,_,_],[_,_,_,_,_,_,_,Who,_,_,_,_],[

_,_,_,_,_,_,_,Who,_,_,_,_]]).

victory(Who,

[[_,_,_,_,_,_,_,_,Who,_,_,_],[_,_,_,_,_,_,_,_,Who,_,_,_],[_,_,

_,_,_,_,_,_,Who,_,_,_],[_,_,_,_,_,_,_,_,Who,_,_,_],[_,_,_,_,_,

_,_,_,Who,_,_,_],[_,_,_,_,_,_,_,_,Who,_,_,_],[_,_,_,_,_,_,_,_,

Who,_,_,_],[_,_,_,_,_,_,_,_,Who,_,_,_],[_,_,_,_,_,_,_,_,Who,_,

_,_],[_,_,_,_,_,_,_,_,Who,_,_,_],[_,_,_,_,_,_,_,_,Who,_,_,_],[

_,_,_,_,_,_,_,_,Who,_,_,_]]).

victory(Who,

[[_,_,_,_,_,_,_,_,_,Who,_,_],[_,_,_,_,_,_,_,_,_,Who,_,_],[_,_,

_,_,_,_,_,_,_,Who,_,_],[_,_,_,_,_,_,_,_,_,Who,_,_],[_,_,_,_,_,

_,_,_,_,Who,_,_],[_,_,_,_,_,_,_,_,_,Who,_,_],[_,_,_,_,_,_,_,_,

_,Who,_,_],[_,_,_,_,_,_,_,_,_,Who,_,_],[_,_,_,_,_,_,_,_,_,Who,

_,_],[_,_,_,_,_,_,_,_,_,Who,_,_],[_,_,_,_,_,_,_,_,_,Who,_,_],[

_,_,_,_,_,_,_,_,_,Who,_,_]]).

victory(Who,

[[_,_,_,_,_,_,_,_,_,_,Who,_],[_,_,_,_,_,_,_,_,_,_,Who,_],[_,_,

_,_,_,_,_,_,_,_,Who,_],[_,_,_,_,_,_,_,_,_,_,Who,_],[_,_,_,_,_,

_,_,_,_,_,Who,_],[_,_,_,_,_,_,_,_,_,_,Who,_],[_,_,_,_,_,_,_,_,

_,_,Who,_],[_,_,_,_,_,_,_,_,_,_,Who,_],[_,_,_,_,_,_,_,_,_,_,Wh

o,_],[_,_,_,_,_,_,_,_,_,_,Who,_],[_,_,_,_,_,_,_,_,_,_,Who,_],[

_,_,_,_,_,_,_,_,_,_,Who,_]]).

victory(Who,

[[_,_,_,_,_,_,_,_,_,_,_,Who],[_,_,_,_,_,_,_,_,_,_,_,Who],[_,_,

_,_,_,_,_,_,_,_,_,Who],[_,_,_,_,_,_,_,_,_,_,_,Who],[_,_,_,_,_,

_,_,_,_,_,_,Who],[_,_,_,_,_,_,_,_,_,_,_,Who],[_,_,_,_,_,_,_,_,

_,_,_,Who],[_,_,_,_,_,_,_,_,_,_,_,Who],[_,_,_,_,_,_,_,_,_,_,_,

Who],[_,_,_,_,_,_,_,_,_,_,_,Who],[_,_,_,_,_,_,_,_,_,_,_,Who],[

_,_,_,_,_,_,_,_,_,_,_,Who]]).

%kondisi menang vertikal

victory(Who,

[[Who,_,_,_,_,_,_,_,_,_,_,_],[_,Who,_,_,_,_,_,_,_,_,_,_],[_,_,

Who,_,_,_,_,_,_,_,_,_],[_,_,_,Who,_,_,_,_,_,_,_,_],[_,_,_,_,Wh

o,_,_,_,_,_,_,_],[_,_,_,_,_,Who,_,_,_,_,_,_],[_,_,_,_,_,_,Who,

Page 20: Manual book

20

_,_,_,_,_],[_,_,_,_,_,_,_,Who,_,_,_,_],[_,_,_,_,_,_,_,_,Who,_,

_,_],[_,_,_,_,_,_,_,_,_,Who,_,_],[_,_,_,_,_,_,_,_,_,_,Who,_],[

_,_,_,_,_,_,_,_,_,_,_,Who]]).

victory(Who,

[[_,_,_,_,_,_,_,_,_,_,_,Who],[_,_,_,_,_,_,_,_,_,_,Who,_],[_,_,

_,_,_,_,_,_,_,Who,_,_],[_,_,_,_,_,_,_,_,Who,_,_,_],[_,_,_,_,_,

_,_,Who,_,_,_,_],[_,_,_,_,_,_,Who,_,_,_,_,_],[_,_,_,_,_,Who,_,

_,_,_,_,_],[_,_,_,_,_,Who,_,_,_,_,_,_],[_,_,_,Who,_,_,_,_,_,_,

_,_],[_,_,Who,_,_,_,_,_,_,_,_,_],[_,Who,_,_,_,_,_,_,_,_,_,_],[

Who,_,_,_,_,_,_,_,_,_,_,_]]).

win( o, Sit, Deep) :- move(o, Sit, Sit2), win(x, Sit2, Deep).

win( x, Sit, _) :- victory(o, Sit).

win( x, Sit, 0) :- !, fail.

win( x, Sit, Deep) :- Deep1 is Deep - 1, not(nowin( x, Sit,

Deep1)).

nowin(x, Sit, _) :- not(move(Sit)). % the last move belongs to

O

nowin(x, Sit, Deep) :- move(x, Sit, Sit2), nowin(o, Sit2,

Deep).

nowin( o, Sit, _) :- victory(x, Sit).

nowin(o, Sit, Deep) :- not(win(o, Sit, Deep)).

lose( x, Sit, Deep) :- move(x, Sit, Sit2), lose(o, Sit2,

Deep).

lose( o, Sit, _) :- victory(x, Sit).

lose( o, Sit, 0) :- !, fail.

lose( o, Sit, Deep) :- Deep1 is Deep - 1, not(nolose( o, Sit,

Deep1)).

nolose(o, Sit, Deep) :- move(o, Sit, Sit2), nolose(x, Sit2,

Deep).

nolose( x, Sit, _) :- victory(o, Sit).

nolose(x, Sit, _) :- not(move(Sit)). % the last move belongs

to O

nolose(x, Sit, Deep) :- not(lose(x, Sit, Deep)).

move(P, Sit, Sit2) :-

member(Sit, L, Y),

member(L, f, X),

replace(L2, L, P, X),

replace(Sit2, Sit, L2, Y).

move(Sit) :-

member(Sit, L, _),

member(L, f, _).

Page 21: Manual book

21

Daftar Pustaka

1. http://id.wikipedia.org/wiki/Minimax

2. http://en.wikipedia.org/wiki/Tic-tac-toe

Glousarium

1. Win_func():- = membuat fungsi dengan nama

2. Is bitmap_image() = mendeklarasikan variable gambar (.bmp)

3. window(_,_,win_func(_)) = membuat jendela window

4. message(_,_,!) = membuat kotak pesan 5. draw_bitmap(_,_,_) = mendeklarasikan gambar 6. write(_) = mencetak

7. for(_,_,_) = perulangan 8. beep() = mendekrasikan suara (.wav)

9. execute = menampilkan file yg dipanggil 10. win_func(paint):- = fungsi menggambar diwindow 11. win_func(init) :- = fungsi proses diwindow

12. % = komentar 13. Wait(_) = proses tunggu

14. Fail. = menghentikan proses sementara 15. Close_window(_) = menutup window 16. Update_window(_) = memperbarui window

17. win_func(press) = proses tekan pada mouse dan keyboard 18. font(_) = bentuk huruf

19. text_out(_) = mencetak huruf di window 20. button(_,_) = membuat button (tombol) 21. is shell_execute = mendeklarasikan variable file(.exe)

22. kill_timer = menghentikan waktu