MANUAL BOOK

UNIVERSITAS GUNADARMA

 PENGANTAR TEKNOLOGI GAME

MANUAL BOOK

“THE CRAZY SYMBOL TIC TAC TOE 8 x 8”

 

Nama              : Syifa Darul Khodidjah

NPM               : 57412266

Jurusan          : Teknik Informatika

Fakultas         : Teknologi Industri

 

INITIAL STATE

Game the crazy symbol ini merupakan permainan tic – tac – toe 8×8 yang terdiri dari 64 petak kosong yang tersusun oleh 8 baris dan 8 kolom yang nantinya akan digunakan dalam permainan. Permainan ini menggunakan 2 karakter yaitu karakter gambar orang yang digunakan untuk user dan karakter simbol yang digunakan oleh komputer. Permainan ini dimainkan oleh 1 user, sedangkan komputer bertindak sebagai lawan. Pada tampilan awal permainan ini, user akan melihat kotak game dan bisa langsung memulai permainan dengan mengklik salah satu kotak yang ada di dalam permainan ini. Pada permainan tampilan awal permainan ini, terdapat tampilan menu yang bertujuan untuk membantu user. Tampilan menu tersebut berisi NewGame, back , exit dan help. Newgame berfungsi untuk melakukan kembali permainan ke awal permainan jika user telah selesai melakukan permainan atau ditengah-tengah jalan user sudah menyerah, back digunakan untuk kembali ke menu awal sebelumnya, exit digunakan untuk keluar dari permainan dan help digunakan untuk petunjuk permainan.

 

Tampilan Awal Permainan

a

Tampilan Ketika User Menang

b

 

Tampilan Ketika User Kalah

c

 Tampilan Splash Screen

d

 Tampilan Menu Awal

e

Tampilan Menu AboutMe

f

Tampilan Menu Help

g

Tampilan Menu Exit

h
 

RULES

Aturan main (rule) pada the crazy symbol adalah sebagai berikut:

  1. Pada awal permainan user menentukan letak objek yang akan dimainkan dengan cara mengklik ke area yang diinginkan didalam area permainan.
  2.  Komputer diberi pembelajaran untuk menghalangi jalan user untuk mencapai Goal (Tujuan).
  3.  Komputer juga diberi pembelajaran untuk mencapai Goal (tujuan).
  4. Jika tempat sudah diisikan karakter, maka tidak dapat menaruh kembali ke tempat yang sama.
  5. Jika papan permainan sudah terisi penuh maka pemain harus mulai dari awal lagi yaitu dengan cara mengklik new game.

GOALS

Game ini akan berakhir dengan sebuah goal yang harus dicapai dalam setiap permainannya. Goal dalam game ini adalah pemain (manusia dan computer) diharuskan agar membentuk garis lurus dari karakter-karakter. Karakter gambar orang untuk pemain dan karakter symbol untuk computer. Garis yang terbentuk terdiri dari 4 karakter secara horizontal, vertical , diagonal dan 6 baris diagonal. Untuk garis diagonal, diharuskan membentuk garis hingga ujung, tidak boleh ada kotak kosong atau terisi karakter lain didepannya. Jika user menang dalam permainan, maka akan keluar pesan “KAMU MENANG!!! SELAMAT!!”. Jika user kalah dan komputer yang menang maka akan keluar pesan “kalah ya? Kasian…”. Jika pemain terdesak dan tidak memungkinkan untuk menang maka akan keluar pesan “permainan seri,silahkan coba

 

 KONSEP  AI

Game the crazy symbol ini adalah sebuah game yang berbasis AI (Artificial Intelliginece) atau kecerdasan buatan. Kecerdasan buatan dapat diterapkan atau dimplementasikan kedalam berbagai bentuk aplikasi. Bentuk implementasi yang paling mudah untuk diukur tingkat keberhasilan dan cukup digemari oleh sebagain besar publik yaitu pada games atau permainan. Game ini dibuat berfikir layaknya seorang manusia hingga dapat dikatakan cerdas.

 

Algoritma yang dipakai

Pada game ini,kita menggunakan algoritma minimax, algoritma minimax itu sendiri merupakan algoritma yang digunakan untuk menentukan pilihan agar memperkecil kemungkinan kehilangan nilai maksimal. Algoitma ini diterapkan dalam permainan yang melibatkan dua pemain seperti halnya the crazy symbol ini. Aplikasi algoritma minimax pada games ini adalah komputer dapat menyerang user dimana komputer bisa berpikir kapan komputer menyerang user dan kapan komputer bertahan. Diharapkan akan hasil game yang interaktif dengan menerapkan algoritma minimax ini sebagai pondasi suatu kecerdasan buatan pada permainan. Maksud dari menyerang user adalah komputer dapat memenangkan permainan ini atau dengan kata lain mencapai goal(tujuan). Kemudian maksud dari bertahan adalah berusaha menggagalkan kesempatan untuk menang yang diraih oleh user. Oleh sebab itu, langkah komputer(lawan) menyerang disebut juga maximizing player dan langkah komputer(lawan) bertahan disebut juga minimizing player. Algoritma minimax merupakan basis dari semua permainan berbasis Artificial Intelligence, dimana algoritma ini akan melakukan pengecekan pada seluruh kemungkinan yang ada sampai akhir permainan dilakukan. Pengecekan tersebut akan menghasilkan pohon permainan yang berisi semua kemungkinan tersebut.

 

Listing Program

%==Nama :     Syifa Darul Khodidjah     ==============================================%

%==Kelas:     3IA07                     ==============================================%

%==NPM  :     57412266                  ==============================================%

win_deep(0).  % semakin besar kedua nilai ini semakin pintar AI%

nolose_deep(0).

?-

%========= DEKLARASI GAMBAR ==========%

G_background is bitmap_image(“kok.bmp”,_),

G_splash is bitmap_image(“x.bmp”,_),

G_cover is bitmap_image(“kai.bmp”,_),

G_x is bitmap_image(“lu.bmp”,_),

G_o is bitmap_image(“s.bmp”,_),

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]])),

set(lose_flag(false)),

brush(system_color(window)),

 

window(G_tvt, _, window_pertama(_), ” LOADING ….. “, 400, 200, 500, 500).

 

%========================== FUNGSI TIMER ===================================%

window_pertama(paint):-

draw_bitmap(0,0,G_splash,_,_),

G_batas := 1,

G_waktu is set_timer(_,0.01,fungsi_timer).

 

fungsi_timer(end):-

text_out(230,160,print(G_batas + “%”)),

G_batas := G_batas + 1,

(G_batas = 100 -> close_window(G_tvt),

beep(“xo.wav”),

window(G_tbt,_,window_kedua(_),” SELAMAT DATANG DI PERMAINAN TIC TAC TOE 8×8 “,400,200,600,450)).

%============================== MENU AWAL ============================%

window_kedua(paint):-

draw_bitmap(0,0,G_background,_,_),

button(_,_,start(_),” START GAME “,400,30,130,35),

button(_,_,about(_),” ABOUT ME”,400,80,130,35),

button(_,_,exit(_),” EXIT “,400,130,130,35).

 

start(press):-

close_window(G_tbt),

window(G_menutama,_,window_ketiga(_),” THE CRAZY SYMBOL TIC TAC TOE 8×8 “,400,200,950,620),

beep(“o.wav”).

 

about(press):-

beep(“jagi.wav”),

message(“about”,”THE CRAZY SYMBOL Tic Tac Toe 8 X 8

My Name IS Syifa Darul Khodidjah

3IA07

57412266

LABORATORIUM TEKNIK INFORMATIKA

UNIVERSITAS GUNADARMA

2014″,i).

 

exit(press):-

close_window(G_tbt),

fail.

%======= WINDOW START GAME ==========%

window_ketiga(init) :-

menu(normal, _, _, menu_new(_), “&New Game”),  %untuk membuat menu%

menu(normal,_,_,menu_help(_),”Help”),

menu(normal, _, _, menu_back(_), “&back”),

menu(normal, _, _, menu_exit(_), “&Exit”).

 

menu_new(press) :-

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]])),

set(lose_flag(false)),

update_window(_).

 

window_ketiga(close):-  %—-> isi menu keluar

ask.

ask:-

yes_no( “Exit”,” YAKIN MAU KELUAR “, ?),

!,message(“Yes”, ” NE, ARASSO! GOMAWOYO “,!),

end.

ask:-

message(“No”, ” AYOOO, MAIN lAGI ! “, s).

 

menu_help(press):-

beep(“bogo.wav”),

message(“Help”,” Tempatkan ikon dengan cara meng-klik di salah satu kotak.Susun hingga membentuk sebuah garis terdiri dari 8 simbol secara vertikal, horizontal ataupun diagonal.”,i).

 

menu_back(press) :-

close_window(G_kedua),

window(G_tbt,_,window_kedua(_),”Window Splash Screen”,400,200,720,450).

 

%=========== WINDOW EXIT =============%

menu_exit(press) :-

close_window(G_menutama),

close_window(_).

 

put_mark(Mark) :-

pos(Current_Pos),

member(Current_Pos, L, Y),

member(L, Mark, X),

X1 is 35 + 60*X, Y1 is 35 + 60*Y, X2 is X1 + 40, Y2 is Y1 +40,  %untuk ngepasin ikon di dalam kotak%

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

fail.

put_mark(_).

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

draw_bitmap(X1, Y1,G_x,_,_).

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

draw_bitmap(X1, Y1,G_o,_,_).

%======= WINDOW PAPAN PERMAINAN ======%

window_ketiga(paint) :-

draw_bitmap(0,0,G_cover,_,_),

pen(4, rgb(255, 0, 0)),

%garisvertikal

line(30, 30, 30, 500),

line(30, 30, 510, 30),

line(510, 500, 510, 30),

line(510, 500, 30, 500),

line(90, 30, 90, 500),

line(150, 30, 150, 500),

line(210, 30, 210, 500),

line(270, 30, 270, 500),

line(330, 30, 330, 500),

line(390, 30, 390, 500),

line(450, 30, 450, 500),

%garishorizontal

pen(5,rgb(250,0,0)),

line(30,90,510,90),

line(30,150,510,150),

line(30,210,510,210),

line(30,260,510,260),

line(30,320,510,320),

line(30,380,510,380),

line(30,440,510,440),

pen(4, rgb(255, 128, 192)),

put_mark(x),

pen(4, rgb(0, 128, 255)),

put_mark(o),

fail.

 

window_ketiga(mouse_click(X, Y)) :-

beep(“a.wav”),

lose_flag(false),

X>35, Y>35,

X<510, Y<510,           %untuk menampilkan ikon pada 8 kotak%

X1 is (X – 30)//60,

Y1 is (Y – 30)//60,

pos(Current_Pos),

member(Current_Pos, L, Y1),

member(L, f, X1),

!,

replace(L2, L, x, X1),

replace(Current_Pos2, Current_Pos, L2, Y1),

set(pos(Current_Pos2)),

not(window_ketiga(paint)),

think(Current_Pos2).

window_ketiga(mouse_click(X, Y)) :-

beep.

think(Pos) :-

victory(x, Pos), !,

set(lose_flag(true)),

beep(“o.wav”),

message(“Unbelievable”,”Horee ! ! Menang.”,!).

think(Pos) :-

try_to_win(Pos), !.

think(Pos) :-

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

think(_) :-

last_good_move(Sit2), !,

set(pos(Sit2)),

not(window_ketiga(paint)).

think(Pos) :-

message(“Congratulations”, “Ayo kamu pasti menang.”, n),

move(o, Pos, Sit2),

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

set(pos(Sit2)),

not(window_ketiga(paint)).

think(Pos) :-

move(o, Pos, Sit2),

set(pos(Sit2)),

not(window_ketiga(paint)).

 

try_nolose(Pos) :-

move(o, Pos, Sit2),

nolose_deep(Deep),

nolose(x, Sit2, Deep),

set(last_good_move(Sit2)),

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(window_ketiga(paint)),

set(lose_flag(true)),

beep(“selau.wav”),

message(“Sorry”,”Yah kalah.”,s).

is_it_win(Sit2) :-

win_deep(Deep),

win(x, Sit2, Deep),

set(pos(Sit2)),

not(window_ketiga(paint)),

message(“Advice”,”Cepetan dong jalan.”,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).

 

replace([Element, A, B, C, D, E, F, G], [_, A, B, C, D, E, F, G], Element, 0).

replace([A, Element, B, C, D, E, F, G], [A, _, B, C, D, E, F, G], Element, 1).

replace([A, B, Element, C, D, E, F, G], [A, B, _, C, D, E, F, G], Element, 2).

replace([A, B, C, Element, D, E, F, G], [A, B, C, _, D, E, F, G], Element, 3).

replace([A, B, C, D, Element, E, F, G], [A, B, C, D, _, E, F, G], Element, 4).

replace([A, B, C, D, E, Element, F, G], [A, B, C, D, E, _, F, G], Element, 5).

replace([A, B, C, D, E, F, Element, G], [A, B, C, D, E, F, _, G], Element, 6).

replace([A, B, C, D, E, F, G, Element], [A, B, C, D, E, F, G, _], Element, 7).

%====== kondisi menang horizontal ======%

victory( Who, [[Who, Who, Who, Who, Who, Who, Who, Who], %==1==%

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

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

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

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

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

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

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

victory( Who, [[_, _, _, _, _, _, _, _],

[Who, Who, Who, Who, Who, Who, Who, Who], %==2==%

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

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

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

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

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

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

victory( Who, [[_, _, _, _, _, _, _, _],

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

[Who, Who, Who, Who, Who, Who, Who, Who], %==3==%

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

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

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

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

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

victory( Who, [[_, _, _, _, _, _, _, _],

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

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

[Who, Who, Who, Who, Who, Who, Who, Who], %==4==%

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

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

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

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

victory( Who, [[_, _, _, _, _, _, _, _],

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

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

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

[Who, Who, Who, Who, Who, Who, Who, Who], %==5==%

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

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

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

victory( Who, [[_, _, _, _, _, _, _, _],

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

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

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

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

[Who, Who, Who, Who, Who, Who, Who, Who], %==6==%

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

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

victory( Who, [[_, _, _, _, _, _, _, _],

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

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

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

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

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

[Who, Who, Who, Who, Who, Who, Who, Who], %==7==%

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

 

victory( Who, [[_, _, _, _, _, _, _, _],

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

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

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

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

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

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

[Who, Who, Who, Who, Who, Who, Who, Who]]). %==8==%

%========= kondisi menang vertikal =======%

victory( Who, [[Who, _, _, _, _, _, _, _],   %1%

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

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

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

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

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

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

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

victory( Who, [[_, Who, _, _, _, _, _, _],   %2%

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

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

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

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

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

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

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

victory( Who, [[_, _, Who, _, _, _, _, _],   %3%

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

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

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

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

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

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

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

victory( Who, [[_, _, _, Who, _, _, _, _],   %4%

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

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

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

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

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

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

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

victory( Who, [[_, _, _, _, Who, _, _, _],   %5%

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

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

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

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

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

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

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

victory( Who, [[_, _, _, _, _, Who, _, _],    %6%

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

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

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

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

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

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

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

victory( Who, [[_, _, _, _, _, _, Who, _],   %7%

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

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

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

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

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

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

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

victory( Who, [[_, _, _, _, _, _, _, Who],   %8%

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

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

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

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

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

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

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

%===== kondisi menang diagonal 8 kotak ====%

 

victory( Who, [[Who, _, _, _, _, _, _, _], [Who, _, _, _, _, _, _, _], [Who, _, _, _, _, _, _, _], [Who, _, _, _, _, _, _, _], [Who, _, _, _, _, _, _, _], [Who, _, _, _, _, _, _, _], [Who, _, _, _, _, _, _, _], [Who, _, _, _, _, _, _, _]]).

victory( Who, [[_, Who, _, _, _, _, _, _], [_, Who, _, _, _, _, _, _], [_, Who, _, _, _, _, _, _], [_, Who, _, _, _, _, _, _], [_, Who, _, _, _, _, _, _], [_, Who, _, _, _, _, _, _], [_, Who, _, _, _, _, _, _], [_, Who, _, _, _, _, _, _]]).

victory( Who, [[_, _, Who, _, _, _, _, _], [_, _, Who, _, _, _, _, _], [_, _, Who, _, _, _, _, _], [_, _, Who, _, _, _, _, _], [_, _, Who, _, _, _, _, _], [_, _, Who, _, _, _, _, _], [_, _, Who, _, _, _, _, _], [_, _, Who, _, _, _, _, _]]).

victory( Who, [[_, _, _, Who, _, _, _, _], [_, _, _, Who, _, _, _, _], [_, _, _, Who, _, _, _, _], [_, _, _, Who, _, _, _, _], [_, _, _, Who, _, _, _, _], [_, _, _, Who, _, _, _, _], [_, _, _, Who, _, _, _, _], [_, _, _, Who, _, _, _, _]]).

victory( Who, [[_, _, _, _, Who, _, _, _], [_, _, _, _, Who, _, _, _], [_, _, _, _, Who, _, _, _], [_, _, _, _, Who, _, _, _], [_, _, _, _, Who, _, _, _], [_, _, _, _, Who, _, _, _], [_, _, _, _, Who, _, _, _], [_, _, _, _, Who, _, _, _]]).

victory( Who, [[_, _, _, _, _, Who, _, _], [_, _, _, _, _, Who, _, _], [_, _, _, _, _, Who, _, _], [_, _, _, _, _, Who, _, _], [_, _, _, _, _, Who, _, _], [_, _, _, _, _, Who, _, _], [_, _, _, _, _, Who, _, _], [_, _, _, _, _, Who, _, _]]).

victory( Who, [[_, _, _, _, _, _, Who, _], [_, _, _, _, _, _, Who, _], [_, _, _, _, _, _, Who, _], [_, _, _, _, _, _, Who, _], [_, _, _, _, _, _, Who, _], [_, _, _, _, _, _, Who, _], [_, _, _, _, _, _, Who, _], [_, _, _, _, _, _, Who, _]]).

victory( Who, [[_, _, _, _, _, _, _, Who], [_, _, _, _, _, _, _, Who], [_, _, _, _, _, _, _, Who], [_, _, _, _, _, _, _, Who], [_, _, _, _, _, _, _, Who], [_, _, _, _, _, _, _, Who], [_, _, _, _, _, _, _, Who], [_, _, _, _, _, _, _, Who]]).

 

victory( Who, [[Who, _, _, _, _, _, _, _], [_, Who, _, _, _, _, _, _], [_, _, Who, _, _, _, _, _], [_, _, _, Who, _, _, _, _], [_, _, _, _, Who, _, _, _], [_, _, _, _, _, Who, _, _], [_, _, _, _, _, _, Who, _], [_, _, _, _, _, _, _, Who]]).

victory( Who, [[_, _, _, _, _, _, _, Who], [_, _, _, _, _, _, Who, _], [_, _, _, _, _, Who, _, _], [_, _, _, _, Who, _, _, _], [_, _, _, Who, _, _, _, _], [_, _, Who, _, _, _, _, _], [_, Who, _, _, _, _, _, _], [Who, _, _, _, _, _, _, _]]).

 

victory( Who, [[_, _, _, _, _, _, Who, _], [_, _, _, _, _, Who, _, _], [_, _, _, _, Who, _, _, _], [_, _, _, Who, _, _, _, _], [_, _, Who, _, _, _, _, _], [_, Who, _, _, _, _, _, _], [Who, _, _, _, _, _, _, _], [_, _, _, _, _, _, _, _]]).

victory( Who, [[_, Who, _, _, _, _, _, _], [_, _, Who, _, _, _, _, _], [_, _, _, Who, _, _, _, _], [_, _, _, _, Who, _, _, _], [_, _, _, _, _, Who, _, _], [_, _, _, _, _, _, Who, _], [_, _, _, _, _, _, _, Who], [_, _, _, _, _, _, _, _]]).

 

victory( Who, [[_, _, _, _, _, _, _, _], [_, Who, _, _, _, _, _, _], [_, _, Who, _, _, _, _, _], [_, _, _, Who, _, _, _, _], [_, _, _, _, Who, _, _, _], [_, _, _, _, _, Who, _, _], [_, _, _, _, _, _, Who, _], [_, _, _, _, _, _, _, Who]]).

victory( 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, _).

 

 DAFTAR PUSTAKA

 Glousarium:

  1. Win_func():- =  membuat fungsi dengan nama win_func.
  2. Is bitmap_image()  = mendeklarasikan variabel gambar (.bmp)
  3. window(_,_,win_func(_)) = membuat jendela window
  4. message(_,_,!) = membuat kotak pesan
  5. draw_bitmap(_,_,_) = mendeklarasikan gambar
  6. write(_) = mencetak
  7. beep() = mendekrasikan suara
  8. win_func(paint):-  = fungsi menggambar diwindow
  9. win_func(init) :- = fungsi proses diwindow
  10. %    = komentar
  11. Close_window(_) = menutup window
  12. mouse_click(X,Y) = proses klik pada mouse
  13. win_func(press) = proses tekan pada mouse dan keyboard
  14. font(_) = bentuk huruf
  15. text_out(_) = mencetak huruf di window