Pengantar Teknologi Game: Pert2

Listing Program Game Masha And The Bear Versus
?-
%**********************************************%
%                 Ahmad Faiz                   %
%                  50412429                    %
%                    3IA12                     %
%**********************************************%



win_deep(0).
nolose_deep(0).

?- 

%=========Deklarasi Gambar==========%
G_bgplay is bitmap_image("image\\bgplay.bmp",_),
G_bghow is bitmap_image("image\\bghow.bmp",_),
G_bgwinner is bitmap_image("image\\bgwinner.bmp",_),
G_bgloser is bitmap_image("image\\bgloser.bmp",_),
G_bgsplash is bitmap_image("image\\bgsplash.bmp",_),
G_x is bitmap_image("image\\x.bmp",_),



%splash screen

window(G_Splash, _, windowS(_),"Ahmad Faiz",420,200,420,320).
windowS(init):-  % set timer
          G_batas := 0,
          G_waktu is set_timer(_,0.10,fungsi_timer).

windowS(paint):-
          draw_bitmap(0,0,G_x,_,_).


fungsi_timer(end):-  %fungsi timer
          G_batas := G_batas +5,
          (G_batas >= 100 -> close_window(G_Splash),

window(G_splash,_,window_awal(_),"splash",420,180,500,400)).

window_awal(init):-
close_window(G_splash),

window(G_menu, _, daftar_menu(_),"MASHA AND THE BEAR VERSUS", 150, 10, 970, 700).

daftar_menu(init):-
    menu(pop_up, _,_,menu_bar(_),"Pilihan"),
    menu(normal, _,_,cara_main(_),"Cara Main"),
    menu(normal, _,_,about(_),"About"),
    button(_,_,mulai(_),"Mulai",400,530,150,50),
    button(_,_,cara_main(_),"Cara Main",200,530,150,50),
    button(_,_,keluar(_),"Keluar",600,530,150,50).




daftar_menu(paint):-
  draw_bitmap(0,0,G_bgsplash,_,_),fail.

menu_bar(init):-
    menu(normal,_,_,mulai(_),"Mulai"),
    menu(normal,_,_,keluar(_),"Keluar").

menu_back(press):-
    close_window(G_main),
    execute("Audio\\taskill.bat"),
    window(G_menu, _, daftar_menu(_),"MASHA AND THE BEAR VERSUS", 150, 10, 950, 700).

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(_), "MASHA AND THE BEAR VERSUS", 150, 10, 950, 700).



set(lose_flag(false)),
    brush(system_color(window)),

    window( G_main, _, win_func(_), "MASHA AND THE BEAR VERSUS", 150, 10, 950, 700).

about(press):-
message("About","
Game ini dibuat oleh:

            AHMAD FAIZ
              50412429

UNIVERSITAS GUNADARMA
                  2014 ", i).

    write("OK"), nl.

cara_main(press):-
 window(G_how,_,win_how(_),"Cara Bermain",150, 10, 970, 700).
         
win_how(paint):-
  draw_bitmap(0,0,G_bghow,_,_),
  button(_,_,cara_kembali(_),"Kembali",780,600,100,40),fail.

cara_kembali(press):-
close_window(G_how).

keluar(press):-
    yes_no("Keluar", "Yakin ingin keluar",?),
    execute("Audio\\taskill.bat"),
    close_window(G_main),
    close_window(G_menu).


win_func(init):-
    menu(normal, _,_,menu_back(_),"Menu"),
    menu(normal, _,_,cara_main(_),"Cara Main"),
    menu(normal, _,_,about(_),"About"),
    menu(normal,_,_,keluar(_),"Keluar").

put_mark(Mark) :-
   pos(Current_Pos),
   member(Current_Pos, L, Y),
   member(L, Mark, X),
   X1 is 40 + 50*X,
   Y1 is 40 + 50*Y,
   X2 is X1 + 35,
   Y2 is Y1 + 35,
   write_mark(Mark, X1, Y1, X2, Y2),
   fail.
put_mark(_).

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

  draw_bitmap(X1,Y1,bitmap_image("Image//masha.bmp",_),_,_).

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

  draw_bitmap(X1,Y1,bitmap_image("Image//bear.bmp",_),_,_).




%=======window papan permainan======%
win_func(paint) :-
   draw_bitmap(0,0,G_bgplay,_,_),
   pen(1, rgb(0, 0, 0)), % hitam

   %line(30, 35, 510, 30),% garis horizontal
   line(30, 85, 630, 85),
   line(30, 135, 630, 135),
   line(30, 185, 630, 185),
   line(30, 235, 630, 235),
   line(30, 285, 630, 285),
   line(30, 335, 630, 335),
   line(30, 385, 630, 385),
   line(30, 435, 630, 435),
   line(30, 485, 630, 485),
   line(30, 535, 630, 535),
   line(30, 585, 630, 585),
   %line(30, 635, 630, 635),

  
   %line(30, 30, 30, 630),% garis vertikal
   line(85, 30, 85, 630),
   line(135, 30, 135, 630),
   line(185, 30, 185, 630),
   line(235, 30, 235, 630),
   line(285, 30, 285, 630),
   line(335, 30, 335, 630),
   line(385, 30, 385, 630),
   line(435, 30, 435, 630),
   line(485, 30, 485, 630),
   line(535, 30, 535, 630),
   line(585, 30, 585, 630),
   %line(635, 30, 635, 630),

%warna pemain permainan  
   pen(1, rgb(0, 0, 0)),
   put_mark(X),
   pen(1, rgb(0, 0, 0)),
   put_mark(O),
   fail.


win_func(mouse_click(X, Y)) :-
  lose_flag(false),
  X>30, Y>30,
  X<630, Y<630,
  X1 is (X - 40)//50,
  Y1 is (Y - 40)//50,
  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)),
  beep("Audio\\jep.wav"),
  think(Current_Pos2).

win_func(mouse_click(X, Y)) :-
  beep.

think(Pos) :-
  victory(x, Pos), !,
  set(lose_flag(true)),
execute("Audio\\taskill.bat"),
beep("Audio\\horaa.wav"),
message("Unbelievable","Anda menang...",!),


close_window(G_play),
window(G_winner,_,win_winner(_),"You're A Winner",250, 150, 720, 440).
  win_winner(paint):-
  draw_bitmap(0,0,G_bgwinner,_,_),fail.

%=======Window Button Winner========%
win_winner(init):-
  button(_,_,wintryagain(_),"Try Again",520,130,100,30),
  button(_,_,winexit(_),"Exit",520,240,100,30).

%=======Window Try Again Winner=====%
wintryagain(press):-
close_window(G_winner),

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(_), "MASHA", 150, 10, 950, 700).

%=========Window Exit Winner=======%
winexit(press):-
close_window(G_winner).



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\\tuil.wav").
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)),
  beep("Audio\\tuil.wav").
think(Pos) :-
  move(o, Pos, Sit2),
  set(pos(Sit2)),
  not(win_func(paint)),
  beep("Audio\\tuil.wav").

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)),
  execute("Audio\\taskill.bat"),
  beep("Audio\\Boo.wav"),
  message("Sorry","Yah kalah...",s),
  beep("Audio\\klik.wav"),

%===========window loser============%
close_window(G_play),
window(G_loser,_,win_loser(_),"You're A Loser",250, 150, 720, 440).
  win_loser(paint):-
  draw_bitmap(0,0,G_bgloser,_,_),fail.

%======Window Button Loser==========%
win_loser(init):-
  button(_,_,losetryagain(_),"Try Again",80,70,100,30),
  button(_,_,loseexit(_),"Exit",80,130,100,30).

%====Window Try Again Loser=========%
losetryagain(press):-
close_window(G_loser),
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_play, _, win_func(_), "XandO", 150, 10, 950, 700).


%========Window Exit Loser==========%
loseexit(press):-
close_window(G_loser).


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).
member([_, _, _, _, _, _, _, _, Element, _, _, _], Element, 8).
member([_, _, _, _, _, _, _, _, _, Element, _, _], Element, 9).
member([_, _, _, _, _, _, _, _, _, _, Element, _], Element, 10).
member([_, _, _, _, _, _, _, _, _, _, _, Element], Element, 11).

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, 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, 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, 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, Who, 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, _, _, _, _, _, _, _, _, _, _, _],
               [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, _, _, _, _, _, _, _, _],
               [_, _, _, 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, _, _, _, _, _],
               [_, _, _, _, _, _, 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, _, _],
               [_, _, _, _, _, _, _, _, _, 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]]).


%=====kondisi menang diagonal 8 kotak====%
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, _, _, _, _, _, _, _, _, _, _, _]]).

%=====kondisi menang diagonal 4 kotak====%
victory( Who, [
[_, _, _, Who, _, _, _, _, _, _, _, _],
[_, _, Who, _, _, _, _, _, _, _, _, _],
[_, Who, _, _, _, _, _, _, _, _, _, _],
[Who, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _]]).

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

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

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

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



0 komentar:

Posting Komentar

 
Copyright © #GEEZERS