Wednesday, November 23, 2011

Membuat Game Othelo 12x12 di Strawberry Prolog

% This program is created by Rangga Nugraha
% from Gunadarma University

Deklarasi Windows Awal

?-
set(sit([[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,b,w,n,n,n,n,n],[n,n,n,n,n,w,b,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n]])),
pen(2,rgb(0,0,0)),
window(_,_,win_func(_),"Othello 12x12",100,50,720,750).

newGame:- set(sit([[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,b,w,n,n,n,n,n],[n,n,n,n,n,w,b,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n]])),set(sit([[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,b,w,n,n,n,n,n],[n,n,n,n,n,w,b,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n]])),
update_window(_).

win_func(init):-
G_Depth = 3,
G_Flag is 0,
G_Turn is 0,
G_Color is 0,

Deklarasi Menu

menu(pop_up, _, _, myPopUpGame(_), "&Game"),
menu(pop_up, G_Menu,_,level(_),"&Level"),
menu( right, _, _, menu_help(_), "&Help").

myPopUpGame(init):-
menu(normal,_,_,menu_new(_),"New Game"),
menu(pop_up,_,_,moveFirst(_),"Jalan Pertama"),
menu(normal,_,_,menu_exit(_),"Quit").
menu_new(press):-
newGame.
menu_exit(press):-
close_window(_).

menu_help(press):-
message("Help","Kalahkan Lawan dengan score tertinggi dengan cara memblok/menjepit bidak musuh. Putih=Player|COM=Hitam ",i).


Menu Logika AI/Player Jalan Pertama

moveFirst(init):-
menu(normal,_,_,player(_),"Pemain"),
menu(normal,_,_,computer(_),"Komputer").
computer(press):-
(G_Turn=0 -> G_Turn:=1 else G_Turn:=0),
(G_Flag=0 ->
newGame,
wait(1),
take3(Sit2,n,X2,Y2),
(G_Color=0 ->
insert(X2,Y2,b)
else
insert(X2,Y2,w)),
sit(Sit3),
not(Sit2=Sit3),
win_func(paint)).
player(press):-
newGame.

Menu Level AI/Tingkat Kesulitan

level(init):-
menu(normal,_,_,l2(_),"&Beginner"),
menu(checked,_,_,l3(_),"&Advanced"),
menu(normal,_,_,l4(_),"&Expert").
l2(press):-change_menu(2).
l3(press):-change_menu(3).
l4(press):-change_menu(4).
change_menu(M):-modify_menu(G_Menu,G_Depth- 1,normal,_),
G_Depth:=M, modify_menu(G_Menu,M- 1,checked,_).


Warna Board Papan

win_func(paint):-
brush(rgb(251,96,181)),
rect(50,50,650,650),
for(I,0,11),
X is I * 50 + 50,
line(X,50,X,650),
line(50,X,650,X),
fail.

Warna Musuh/ computer

win_func(paint):-
brush(rgb(0,0,0)),
sit(M),
for(J,0,11),
for(I,0,11),
take(M,Line,J),
take(Line,b,I),
X is I*50 + 55,
Y is J*50 + 55,
X1 is X + 40,
Y1 is Y + 40,
ellipse(X,Y,X1,Y1),
fail.

Warna Kita/ Player

win_func(paint):-
brush(rgb(250,250,250)),

Logika Menang/Kalah

sit(M),
N1 is count_successes(victory(w,M)),
N2 is count_successes(victory(b,M)),
text_out(0, 0, "You: "+print(N1)+", Computer: "+print(N2)),
(N1>N2, N1+N2=:=144 ->
ask1
else (N1=N2, N1+N2=:=144 ->
ask3
else (N1
ask2
))),
(N2=:=0 ->
ask1
else (N1=:=0->
ask3
)),

for(J,0,11),
for(I,0,11),
take(M,Line,J),
take(Line,w,I),
X is I*50 + 55,
Y is J*50 + 55,
X1 is X + 40,
Y1 is Y + 40,
ellipse(X,Y,X1,Y1),
fail.
win_func(paint).

Program AI Dalam Game Ini

win_func(mouse_click(X,Y)):-
X1 is (X - 40) // 50,
Y1 is (Y - 40) // 50,
X1 >= 0,
X1 =< 11,
Y1 >= 0,
Y1 =< 11,
sit(Sit1),
insert(X1,Y1,w),
sit(Sit2),
not(Sit1=Sit2),
win_func(paint),
wait(1),
take3(Sit2,n,X2,Y2),
insert(X2,Y2,b),
sit(Sit3),
not(Sit2=Sit3),
win_func(paint).

insert(X,Y,Who):-%trace,
sit(Sit),
take2(Sit,n,X,Y),
opposit(Who,NewWho),
for(WayX,-1,1),
for(WayY,-1,1),
sit(Sit2),
neighbour(NewWho,X,Y,Sit2,WayX,WayY),
jump(NewWho,X,Y,Sit2,WayX,WayY,NewX,NewY),
replace3(Result,Sit2,Who,X,Y,NewX,NewY,WayX,WayY),
set(sit(Result)),
fail.
insert(X,Y,Who).

neighbour(Who,X,Y,Sit,WayX,WayY):-
X1 is X+ WayX,
Y1 is Y+ WayY,
take2(Sit,Who,X1,Y1).

jump(Who,X,Y,Sit,WayX,WayY,X2,Y2):-
X1 is X+ WayX,
Y1 is Y+ WayY,
opposit(Who,NewWho),
neighbour(NewWho,X1,Y1,Sit,WayX,WayY),
X2 is X1+ WayX,
Y2 is Y1+ WayY.

jump(Who,X,Y,Sit,WayX,WayY,NewX,NewY):-
X1 is X+ WayX,
Y1 is Y+ WayY,
neighbour(Who,X1,Y1,Sit,WayX,WayY),
jump(Who,X1,Y1,Sit,WayX,WayY,NewX,NewY).

take3(Sit,El,0,0):-
take2(Sit,El,0,0).

take3(Sit,El,0,11):-
take2(Sit,El,0,11).

take3(Sit,El,11,0):-
take2(Sit,El,11,0).

take3(Sit,El,11,11):-
take2(Sit,El,11,11).

take3(Sit,El,1,1):-
take2(Sit,El,1,1).

take3(Sit,El,1,2):-
take2(Sit,El,1,2).

take3(Sit,El,1,3):-
take2(Sit,El,1,3).

take3(Sit,El,1,4):-
take2(Sit,El,1,5).

take3(Sit,El,4,1):-
take2(Sit,El,4,1).

take3(Sit,El,4,2):-
take2(Sit,El,4,2).

take3(Sit,El,4,3):-
take2(Sit,El,4,3).

take3(Sit,El,4,4):-
take2(Sit,El,4,4).

take3(Sit,El,2,1):-
take2(Sit,El,2,1).

take3(Sit,El,3,1):-
take2(Sit,El,3,1).

take3(Sit,El,2,4):-
take2(Sit,El,2,4).

take3(Sit,El,3,4):-
take2(Sit,El,3,4).

take3(Sit,El,2,0):-
take2(Sit,El,2,0).

take3(Sit,El,3,0):-
take2(Sit,El,3,0).

take3(Sit,El,5,2):-
take2(Sit,El,5,2).

take3(Sit,El,5,3):-
take2(Sit,El,5,3).

take3(Sit,El,2,5):-
take2(Sit,El,2,5).

take3(Sit,El,3,5):-
take2(Sit,El,3,5).

take3(Sit,El,X,Y):-
take2(Sit,El,X,Y).

take2(Sit,El,X,Y):-
take(Sit,Row,Y),
take(Row,El,X).

replace2(Result,Sit,El,X,Y):-
take(Sit,Line,Y),
replace(NewLine,Line,El,X),
replace(Result,Sit,NewLine,Y).

replace3(Result,Result,Who,X,Y,X,Y,WayX,WayY).
replace3(Result,Sit,Who,X,Y,ToX,ToY,WayX,WayY):-
replace2(ResultP,Sit,Who,X,Y),
X1 is X + WayX,
Y1 is Y + WayY,
replace3(Result,ResultP,Who,X1,Y1,ToX,ToY,WayX,WayY).

replace([New,B,C,D,E,F,G,H,K,L,M,N],[_,B,C,D,E,F,G,H,K,L,M,N],New,0).
replace([A,New,C,D,E,F,G,H,K,L,M,N],[A,_,C,D,E,F,G,H,K,L,M,N],New,1).
replace([A,B,New,D,E,F,G,H,K,L,M,N],[A,B,_,D,E,F,G,H,K,L,M,N],New,2).
replace([A,B,C,New,E,F,G,H,K,L,M,N],[A,B,C,_,E,F,G,H,K,L,M,N],New,3).
replace([A,B,C,D,New,F,G,H,K,L,M,N],[A,B,C,D,_,F,G,H,K,L,M,N],New,4).
replace([A,B,C,D,E,New,G,H,K,L,M,N],[A,B,C,D,E,_,G,H,K,L,M,N],New,5).
replace([A,B,C,D,E,F,New,H,K,L,M,N],[A,B,C,D,E,F,_,H,K,L,M,N],New,6).
replace([A,B,C,D,E,F,G,New,K,L,M,N],[A,B,C,D,E,F,G,_,K,L,M,N],New,7).
replace([A,B,C,D,E,F,G,H,New,L,M,N],[A,B,C,D,E,F,G,H,_,L,M,N],New,8).
replace([A,B,C,D,E,F,G,H,K,New,M,N],[A,B,C,D,E,F,G,H,K,_,M,N],New,9).
replace([A,B,C,D,E,F,G,H,K,L,New,N],[A,B,C,D,E,F,G,H,K,L,_,N],New,10).
replace([A,B,C,D,E,F,G,H,K,L,M,New],[A,B,C,D,E,F,G,H,K,L,M,_],New,11).

take([El,_,_,_,_,_,_,_,_,_,_,_],El,0).
take([_,El,_,_,_,_,_,_,_,_,_,_],El,1).
take([_,_,El,_,_,_,_,_,_,_,_,_],El,2).
take([_,_,_,El,_,_,_,_,_,_,_,_],El,3).
take([_,_,_,_,El,_,_,_,_,_,_,_],El,4).
take([_,_,_,_,_,El,_,_,_,_,_,_],El,5).
take([_,_,_,_,_,_,El,_,_,_,_,_],El,6).
take([_,_,_,_,_,_,_,El,_,_,_,_],El,7).
take([_,_,_,_,_,_,_,_,El,_,_,_],El,8).
take([_,_,_,_,_,_,_,_,_,El,_,_],El,9).
take([_,_,_,_,_,_,_,_,_,_,El,_],El,10).
take([_,_,_,_,_,_,_,_,_,_,_,El],El,11).

Syarat Menang/Kalah


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


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

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



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

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

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

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

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

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

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

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

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


new_game:-
set(sit([[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,b,w,n,n,n,n,n],[n,n,n,n,n,w,b,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n],[n,n,n,n,n,n,n,n,n,n,n,n]])),
pen(2,rgb(0,0,0)),
update_window(_).

ask1:-
yes_no("Game over","You are the winner."+"Play again?",!) -> new_game; (!,close_window(_)).

ask2:-
yes_no("Game over","You lost this time."+"Play again?",!) -> new_game; (!,close_window(_)).

ask3:-
yes_no("Game over","This game is equal."+"Play again?",!) -> new_game; (!,close_window(_)).

opposit(b,w).
opposit(w,b).

0 comments:

Post a Comment