Rabu, 05 Desember 2012

Source Code Tick-Tack-Toe 8x8

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