ini adalah source code game Tick- Toe 8x8
ini untuk bahasa prolog di strawberry prolog.
win_deep(0). % You can change this two numbers to make the AI more clever
nolose_deep(0).
?-
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)),
% G_opening is bitmap_image("gambar\\LOL.bmp",_),
window( _, _, win_func(_), "Tick-Tack-Toe 8x8(LOL)", 650, 650, 650, 650).
put_mark(Mark) :-
pos(Current_Pos),
member(Current_Pos, L, Y),
member(L, Mark, X),
X1 is 40 + 60*X, Y1 is 40 + 60*Y, X2 is X1 + 40, Y2 is Y1 +40,
write_mark(Mark, X1, Y1, X2, Y2),
fail.
put_mark(_).
write_mark(x, X1, Y1, X2, Y2) :-
line(X1, Y1, X1, Y2),
line(X2, Y2, X1, Y2).
write_mark(o, X1, Y1, X2, Y2) :-
ellipse(X1, Y1, X2, Y2).
win_func(paint):-
% draw_bitmap(0,0,G_opening,_,_),
fail.
win_func(paint) :-
pen(5, rgb(25, 25, 112)), % blue
line(30, 30, 30, 510),
line(30, 270, 510, 270),
line(30,330,510,330),
line(30,390,510,390),
line(30,450,510,450),
line(30,510,510,510),
line(270, 510, 270, 30),
line(330,510,330,30),
line(390,510,390,30),
line(450,510,450,30),
line(510,510,510,30),
line(510, 30, 30, 30),
line(90, 30, 90, 510),
line(150, 30, 150, 510),
line(210, 30, 210, 510),
line(30, 90, 510, 90),
line(30, 150, 510, 150),
line(30, 210, 510, 210),
pen(4, rgb(255, 0, 0)), % red
put_mark(x),
pen(4, rgb(0, 0, 255)), % blue
put_mark(o),
fail.
win_func(init) :-
menu( normal, _, _, menu_new(_), "&New Games"),
menu( normal, _, _, menu_help(_), "&Cara Bermain"),
menu( normal, _, _, menu_about(_), "&Tentang Game").
menu_new(_) :-
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(_).
menu_help(press) :-
message("Cara Bermain","Cara Bermain :
1. Cara Memulai Permain Klik Menu New Games,
2. Dimulai permainan terlebih dahulu adalah Player, selanjutnya baru AI,
3. Player diberikan simbol L dan harus menempatkan simbol tersebut secara vertikal , horizontal , maupun diagonal untuk menang,
4. Kemungkinan papan telah penuh namun belum ada yang berhasil berarti hasilnya Draw,
Selamat Bermain dengan AI ^^.", i).
menu_about(press) :-
message("Tentang Game","Tic Tac Toe 8x8,Dikembangkan or Edited By Maulidan Yulianto, 3ia05,
Universitas Gunadarma 2012/2013
Selamat Bermain, Selamat berpikir DEWA",i).
menu_exit(press) :-
close_window(_).
win_func(close):- %----> isi menu keluar
ask.
ask:-
yes_no( "Exit","Apakah Anda Yakin Keluar dari Permainan?", ?),
!,message("Yes", "Sampai Jumpa Lagi Pasti Lebih Seru!!!",i),
end.
ask:-
message("No", "Selamat Bermain Lagi Dengan AI", i).
%Fungsi klik Mouse
win_func(mouse_click(X, Y)) :-
lose_flag(false),
X>30, Y>30,
X<510, Y<510,
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(win_func(paint)),
pos(Current_Pos3),
seri_ga(Current_Pos3),
think(Current_Pos2).
win_func(mouse_click(X, Y)) :-
beep.
%cek posisi
seri_ga(Pos):-
Line is count_successes(posisi(x,Pos)),
Comp is count_successes(posisi(o,Pos)),
V_line is count_successes(victory(x,Pos)),
V_comp is count_successes(victory(o,Pos)),
(V_line =:= 0, V_comp =:=0,Comp+Line=:= 63 -> message("Unbelievable","Maaf Seri, Coba Lagi Yah!",!),
set(lose_flag(true))).
think(Pos) :-
victory(x, Pos), !,
set(lose_flag(true)),
message("Unbelievable","Selamat Anda Menang dari AI ^^",!).
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)).
%think(Pos) :-
% message("Congratulations", "You have some chance in this game.", n),
% move(o, Pos, Sit2),
% nolose(x, Sit2, 0), !, % Tries to make the lose farther
% set(pos(Sit2)),
% not(win_func(paint)).
think(Pos) :-
move(o, Pos, Sit2),
set(pos(Sit2)),
not(win_func(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(win_func(paint)),
set(lose_flag(true)),
message("Sorry","Maaf Anda Kalah dari AI",s).
is_it_win(Sit2) :-
win_deep(Deep),
win(x, Sit2, Deep),
set(pos(Sit2)),
not(win_func(paint)),
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).
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).
%seri
posisi(Who, [[Who, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, Who, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, Who, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, Who, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, Who, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, Who, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, Who, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, Who],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[Who, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, Who, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, Who, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, Who, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, Who, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, Who, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, Who, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, Who],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[Who, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, Who, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, Who, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, Who, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, Who, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, Who, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, Who, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, Who],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[Who, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, Who, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, Who, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, Who, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, Who, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, Who, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, Who, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, Who],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[Who, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, Who, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, Who, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, Who, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, Who, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, Who, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, Who, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, Who],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[Who, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, Who, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, Who, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, Who, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, Who, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, Who, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, Who, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, Who],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[Who, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, Who, _, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, Who, _, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, Who, _, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, Who, _, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, Who, _, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, Who, _],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, Who],[_, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[Who, _, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, Who, _, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, Who, _, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, Who, _, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, Who, _, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, Who, _, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, Who, _]]).
posisi(Who, [[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, Who]]).
%posisi menang
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, _, _, _, _, _],[_, _, 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],[_, Who, _, _, _, _, _, _]]).
victory( Who, [[_, _, _, _, Who, _, _, _],[_, _, _, Who, _, _, _, _],[_, _, Who, _, _, _, _, _],[_, Who, _, _, _, _, _, _],[Who, _, _, _, _, _, _, _],[_, _, _, _, _, _, _, Who],[_, _, _, _, _, _, Who, _],[_, _, _, _, _, Who, _, _]]).
%disini AI di koding tambahin kondisinya jadi nantinya ada 5 baris untuk setiap kemungkinan
win( o, Sit, Deep) :- move(o, Sit, o), 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( y, 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, _).
nah gimana outputnya
selamat bermodifikasi lagi yah..
Tidak ada komentar:
Posting Komentar