INITIAL STATE
Minion Matchess pada dasarnya sama
seperti game matchess pada umumnya, atau yang biasa disebut game korek api.
Namun pada permainan Minion Matchess kali ini terdapat beberapa pengembangan pada
tampilannya, seperti icon korek api yang diubah menjadi icon minion, background
yang menarik, dan juga terdapat menu, level, dan sound. Matches
merupakan permainan yang menggunakan kecerdasaan buatan (AI). Dimana
masing-masing player dituntut untuk mengalahkan AI yang telah di buat. Kita
harus menentukan langkah yang benar untuk bisa mengalahkan AI, jika kita salah
langkah, maka kita akan kalah melawan AI. Perlu diketahui disini AI pada game
ini sangat sulit di kalahkan, kemungkinan untuk di kalahkan yaitu sekitar 10%.
Di game ini ada 2 pilihan, yaitu computer terlebih dahulu, atau player
yang maju dahulu. Jika kita ingin menang melawan AI, di haruskan kita tidak
boleh mengambil ikon paling terakhir, atau kita akan kalah dari AI.
Histori
dari game ini adalah ketika saya diharuskan membuat atau mengembangkan sebuah
game, singkat kata saya memilih game ini karena simple dan didalam game ini
terdapat konsep AI. Karena pada tampilan awal game ini hanya biasa saja, saya
tertarik untuk mengembangkan game ini agar lebih menarik dengan cara mengganti
ikon, menambahkan suara dan mengubah beberapa perintah menjadi Bahasa
Indonesia. Disini saya mengubah game tersebut dengan tema Barcelona FC, itu
dikarenakan Barcelona FC adalah club favorit saya, diharapkan juga game ini
agar menarik perhatian para penggemar Barcelona. Itulah kenapa game ini saya
beri nama “Cules Matches”. Cules sendiri adalah sebutan untuk fans Barcelona.
Begitulah cerita singkat saya kenapa saya memilih matches sebagai syarat sidang
dalam praktikumm kecerdasaan buatan ini.
Permainan
dimulai dengan menekan tombol pilihan, disitu akan terlihat pilihan, computer
dahuli atau kita yang terlebih dahulu. Disini saya memilih untuk maju terlebih
dahulu, player pertama akan memilih salah satu ikon yang akan dihilangkan.
Berikutnya untuk CPU yang memilih untuk ikon mana yang akan dipilih untuk maju.
Jika player yang mengambil batang terakhir, maka pemain akan kalah, tapi jika
AI yang mengambil batang terakhir maka AI akan kalah. Namun disini AI sangat
sulit dikalahkan. Kita bisa mengambil berapapun batang yamg kita inginkan tapi
harus berada dalam satu kolom, begitu juga computer.
Berikut ini merupakan rancangan tampilan pada permainan minion matchess.
Tampilan Awal :
Ukuran Layar Awal 550 x 300.
Button Start Game dan Exit.
Tampilan Kedua :

Keterangan :
1. Ukuran Layar Kedua 1100 x
550.
2.
Gambar :
, Merupakan
icon korek api yang telah
diubah
3.
- Menubar New Game untuk memulai
permainan baru.
- Menubar Level Kesuliatan untuk memilih bentuk pola icon yang lebih sulit.
- Menubar About digunakan untuk melihat data diri/profil pembuat game.
- Menubar Level Kesuliatan untuk memilih bentuk pola icon yang lebih sulit.
- Menubar About digunakan untuk melihat data diri/profil pembuat game.
-
Menubar Help digunakan untuk melihat Cara
bermain.
-
Menubar Exit digunakan untuk keluar dari permainan.

Tampilan Bantuan Permainan :

Permainan
ini dimulai ketika kita (player 1) telah menekan/memilih jumlah icon
kacamata minion yang ingin kita hilangkan. Cara untuk mengambil lebih dari satu
kacamata adalah dengan mengambil icon bagian bawah. Berikutnya adalah giliran
AI untuk mengambil icon. Kedua player bergantian mengambil icon kacamata hingga
akhirnya tersisa satu icon. Player yang mengambil icon kacamata terakhir
dinyatakan kalah.
RULES
·
Identifikasi
ruang keadaan:
Permasalahan ini dapat dilambangkan dengan (icon yang terdapat dalam permainan ini berjumlah 5 baris dan 5 kolom, terdapat pula pola icon yang lebih sulit dan bisa kita lihat pada Menu Bar ‘Level Kesulitan’, dan pemain hanya terdiri dari user dan computer).
Permasalahan ini dapat dilambangkan dengan (icon yang terdapat dalam permainan ini berjumlah 5 baris dan 5 kolom, terdapat pula pola icon yang lebih sulit dan bisa kita lihat pada Menu Bar ‘Level Kesulitan’, dan pemain hanya terdiri dari user dan computer).
·
Keadaan awal
& tujuan:
Keadaan Awal = Tampilan background permainan dan ikon kacamata minion 5x5
Keadaan Tujuan = Bagi yang mengambil icon terakhir, dialah yang kalah.
Keadaan Awal = Tampilan background permainan dan ikon kacamata minion 5x5
Keadaan Tujuan = Bagi yang mengambil icon terakhir, dialah yang kalah.
·
Aturan-aturan
- Dimainkan oleh dua pemain. Pemain pertama (user) memulai langkah awal dengan mengambil beberapa icon dengan cara meng klik icon tersebut. Dan dilanjutkan oleh AI.
- Kita({Player 1) harus menyusun strategi agar dapat menyisakan satu icon yang nantinya akan diambil oleh AI, dan kita dinyatakan sebagai pemenang. Dan begitu pula sebaliknya.
- Pada permainan ini, baik player ataupun AI, hanya diberikan kesempatan jalan sebanyak 1 kali dalam menentukan langkah secara bergiliran.
- Kita hanya bisa mengambil ikon secara kolom, yang terakhir memilih adalah yang kalah.
- Tidak ada perbedaan ikon antara player dengan CPU.
GOALS
Tampilan pada saat Player kalah dan
AI menang.
Pada tampilan pertama,
Player dinyatakan kalah karena
pada saat trakhir mengambil icon masih tersisa 3 icon, dan setelah itu AI menggambil
sebanyak 2 icon, sehingga tersisa satu icon dan kita dinyatakan kalah karena
mendapat giliran mengambil icon terakhir.
Tampilan saat Player menang dan AI kalah.
Pada tampilan pertama, AI dinyatakan kalah karena pada saat trakhir mengambil icon masih
tersisa 3 icon, dan setelah itu player menggambil sebanyak 2
icon, sehingga tersisa satu icon dan AI dinyatakan kalah karena mendapat
giliran mengambil icon terakhir.
KONSEP AI
Konsep permainan
yang diterapkan dalam permainan ini adalah pemain (baik itu user ataupun computer)
harus berjalan secara bergiliran dan memiliki strategi untuk mengambil icon
agar tidak kebagian mengambil icon terakhir.
Dan
pada saat giliran AI untuk mengambil icon maka otak AI sama seperti player
dimana AI akan memikirkan sendiri untuk memilih icon yang mana yang akan
diambil dan berapa jumlahnya. AI
akan selalu berjalan dan memberikan perlawanan kepada kita sehingga tidak akan
begitu mudah dapat memenangkan game tersebut, pada saat memainkan permainan ini
akan mendapatkan hasil akhir berupa kita menang atau kita kalah melawan
komputer, karena prinsipnya game ini ingin anda yang kalah. Kesimpulan dari permainan ini ialah bagaimana cara
untuk memenangkan perlawanan dari komputer dengan tidak mengambil icon yang
paling akhir (don’t take the last), jika pengguna (user) dapat tidak mengambil icon
yang terakhir maka pengguna tersebut ememnangkan permainan game Matches dan
jika pengguna (user) mengambil icon yang paling akhir maka pengguna (user)
tersebut dinyatakan kalah dalam permainan game Matches ini.
ALGORITMA YANG DIPAKAI
Berikut ini adalah algoritma yang dipakai dalam permainan ini :
1. Memilih salah satu beberapa dari 25 ikon yang susunannya berbentuk persegi. ikon yang telah di sediakan, pengguna (user) atau lawan (komputer) dapat memilih sesuai dengan yang di inginkan.
2. Jika 25
ikon telah di pilih secara
bergantian.
3. Dengan cara mengklik kiri pada mouse dan arahkan kursor kearah icon yang
ingin di ambil.
4. Jika pengguna (user) bermain sebagai pemain (player) pertama dan sudah
memilih pensil yang di
inginkan untuk di ambil, maka
berikutnya lawan (komputer)
yang memilih pensil yang
di inginkan untuk diambil.
5. Jika ikon yang di sediakan telah habis maka akan dilihat siapa yang mengambil ikon yang paling akhir untuk menentukan menang atau tidaknya pengguna
(user) ataupun lawan (komputer) karena syarat ketentuan permainan ini ialah
akan menang jika tidak mengambil ikon yang paling
akhir dan akan kalah jika mengambil ikon yang paling akhir.
6. Jika pengguna (user)
bermain cepat dalam pengambilan ikon maka
lawan (komputer) akan menyamakan kecepatan seperti pengguna (user) dalam proses
pengambilan ikon.
7. Jika lawan (komputer) memenangkan permainan ini maka keluar message "Maaf
anda belum berhasil memenangkan game ini!!" Jika pengguna (user)yang memenangkan permainan ini maka akan
keluar message “Selamat anda memenangkan game ini!!”.
8. Permainan selesai bila 25 ikon telah habis baik diambil pengguna (user) ataupun lawan (komputer). Danakan
menampilkan message menang atau tidaknya dalam
permainan ini.
Dalam Game matches ini menggunakan Algoritma
Backtracking menggunakan konsep DFS dalam pembentukan pohon solusi.
1. Pohon solusi dibentuk dari awal permainan sampai
akhir permainan.
2. Untuk permainan yang di nyatakan cukup kompleks
seperti permainan Matches, pembentukan pohon solusi di mulai dari awal
permainan sampai akhir permainan dapat direalisasikan karena pada game ini
mempunyai batasannya, yaitu kotak yang telah di batasin berapa banyak yang
dapat di beri tanda, sehingga bila anda ingin mengurutnya bisa di lakukan dan
di ketahui cara untuk memenangkan game ini. Sehingga bila anda cari dalam pohon
solusi bisa di selesaikan sampai tidak ada kemungkinan lagi untuk di cari solusinya.
3. Semakin akurat fungsi heuristic yang digunakan,
semakin baik pula pengambilan keputusan yang dilakukan oleh AI.
Dengan menggunakan algoritma Bactracking untuk AI
dalam permainan Matches, pengguna (user) tidak akan begitu mudah untuk melawan
AI tersebut.
LISTING PROGRAM
/*==============================================================================
* Nama Permainan :
Minion Matchess
* Bahasa
Pemrograman : Strawberry Prolog (Programming in Logic)
* Author :
Saarah Syahriyah
*
==============================================================================
*/
?-
G_Comp_First=0,
G_Take_Last=0,
G_White is brush(rgb(255,255,255)),
G_kapsul is
bitmap_image("image\\pict2.bmp",_),
G_Background is
bitmap_image("image\\pict1.bmp",_),
G_back_1 is
bitmap_image("image\\hello.bmp",_),
pen(0,0),
set(pos([5,5,5,5,5])),
beep("sound\\gameshow.wav"),
%---------------------
WINDOW 1 -----------------------%
window(G_layar1,_,win_fun(_),"Minion
Matchess",70,70,550,300).
win_fun(paint):-
draw_bitmap(0,0,G_back_1,_,_).
%-------------------
TOMBOL WINDOW 1 ------------------%
win_fun(init):-
button(_,_,mulai_game(_),"START
GAME",30,130,250,40),
button(_,_,keluar_game(_),"EXIT
GAME",30,180,250,40).
mulai_game(press):-
close_window(G_layar1),
window(G_Main, _, win_func(_), "Minion
Matchess", 60,60,1100,550).
%---------------
KELUAR GAME --------------------%
keluar_game(press):-
close_window(G_layar1).
win_func(end) :-
(G_waktu==0)
->
kill_timer(_,G_timer),
message("Time's
out","Sorry!!",i),
close_window(_)
else
G_waktu<>=G_waktu-1,
font(15,30,"cinnamon
cake"),
text_out(700,350,"Time:
"+print(G_waktu)+" "),
beep.
% Deklarasi
Tampilan List Menu
win_func(init) :-
menu( normal, _, _, menu_newgame(_), "&New
Game"),
menu( pop_up, _, _, menu_new(_),
"&Level Kesulitan"),
menu( normal, _, _, menu_about(_),
"&About"),
menu( normal, _, _, menu_help(_),
"&Help"),
menu( normal, _, _, menu_exit(_),
"&Exit").
menu_new(init) :-
menu( normal, _, _, menu_53135(_),
"&5 3 1 3 5"),
menu( normal, _, _, menu_13531(_),
"&1 3 5 3 1").
menu_newgame(press)
:-
(G_Comp_First=0->
set(pos([5,5,5,5,5]))
else
Pos=[1,3,4,2,5],
N is 2*random(3),
el(Pos,A, N),
A2 is A - 1,
replace(Pos2, Pos, A2, N),
set(pos(Pos2))),
update_window(_).
menu_53135(press)
:-
(G_Comp_First=0->
set(pos([5,3,1,3,5]))
else
Pos=[1,3,4,2,5],
N is 2*random(3),
el(Pos,A, N),
A2 is A - 1,
replace(Pos2, Pos, A2, N),
set(pos(Pos2))),
update_window(_).
menu_13531(press)
:-
(G_Comp_First=0->
set(pos([1,3,5,3,1]))
else
Pos=[1,3,4,2,5],
N is 2*random(3),
el(Pos,A, N),
A2 is A - 1,
replace(Pos2, Pos, A2, N),
set(pos(Pos2))),
update_window(_).
menu_comfirst(press)
:-
G_Comp_First:=1,
menu_userfirst(press),
G_Comp_First:=0.
menu_about(press)
:-
beep("sound\\haha.wav"),
message("This game is an AI (
Artificial Intelligence )", " Nama :
Saarah Syahriyah \n Nama : 56411532\n
Kelas : 3ia11\n
CAUTION!!\n
\nJangan terakhir
mengambil kaca mata minion yaa, maka kamu akan kalah teman!!
\nGood Luck!!
:D", i).
menu_help(press)
:-
beep("sound\\help.wav"),
message("H E
L P","JIKA INGIN MENGAMBIL KACAMATA LEBIH DARI SATU\nAMBIL BAGIAN
BAWAH\n
\nPERHATIKANLAH
BANYAKNYA KACAMATA !!. UNTUK MEMENANGKAN PERMAINAN INI, JANGAN SAMPAI KAMU
MENGAMBIL KACAMATA TERAKHIR", i).
menu_exit(press)
:-
close_window(_).
win_func(paint):-
draw_bitmap(0,0,G_Background,_,_),
beep("Sound\\klik.wav"),
pos(Pos),
el(Pos,El,N),
for(I,1,El),
X is 50+100*N,
Y is 290- 50*I,
draw_bitmap(X,Y,G_kapsul,_,_),
fail.
win_func(mouse_click(X,Y)):-
X1 is (X- 50)//100,
Y1 is (290 -Y)//50,
X1=<5,X>=0,
pos(Pos),
el(Pos,El,X1),
El>Y1,
replace(Pos2, Pos, Y1, X1),
brush(G_White),
rect(100*X1+50,0,100*X1+140,0- 150*Y1),
(Pos2=[0,0,0,0,0]->
set(pos(Pos2)),
end(0)
else
wait(1),
play(Pos3, Pos2),
(Pos3=[0,0,0,0,0]->
end(1)),
set(pos(Pos3))),
update_window(_).
win_func(mouse_click(X,Y)):-
beep.
play(Pos3,
Pos2):-
G_Take_Last=0,
count_successes(not_trivial(Pos2))<2,
find_max(Pos2,Max,N),
New is
(Max>1,count_successes(not_empty(Pos2)) mod 2=:=1 -> 1 else 0),
replace(Pos3, Pos2, New, N).
play(Pos3,
Pos2):-
el(Pos2,A, N),
R:=0,
add_xor(R,Pos2,N),
R<A,
replace(Pos3, Pos2, R, N).
play(Pos3,
Pos2):-
find_max(Pos2,Max,N),
Max2 is (Max>1, random(4)=:=2 ->
Max - 4
else
Max - 1),
replace(Pos3, Pos2, Max2, N).
not_empty(Pos):-
el(Pos,A, _),
A>0.
not_trivial(Pos):-
el(Pos,A, _),
A>1.
el([H|T],H,0).
el([H|T],El,N):-
el(T,El,N1),
N is N1+1.
replace([H|T],[_|T],H,0).
replace([H|T2],[H|T],El,N):-
replace(T2,T,El,N1),
N is N1+1.
find_max([H],H,0).
find_max([H|T],A,
N) :-
find_max(T,A1,N1),
(A1<H->
A is H,
N is 0
else
A is A1,
N is N1+1).
add_xor(_,[],_):-!.
add_xor(R,[H|T],0):-
!,
add_xor(R, T, -1).
add_xor(R,[H|T],N):-
N1 is N- 1,
R:=R xor H,
add_xor(R, T, N1).
end(Flag):-
Flag=G_Take_Last->
message("YOU LOSE","maaf
kamu belum berhasil memenangkan game ini :( coba lagi ya!!\n !! ",!)
else
draw_bitmap(0,0,bitmap_image("image\\pict2.bmp",_),_,_),
beep("sound\\tepuktangan.wav"),
message("YOU WIN","SELAMAT\n
KAMU BERHASIL
MEMENANGKAN GAME INI",i).
DAFTAR PUSTAKA
3.
Id.wikipedia.org/wiki/kecerdasan_buatan
GLOUSARIUM
1.
Win_func():- =
membuat fungsi dengan nama win_func.
2.
Is bitmap_image() = mendeklarasikan variabel gambar
(.bmp)
3. window(_,_,win_func(_)) = membuat jendela window
4. key_down(51,_) = membuat kode ASCII untuk keyboard
5. message(_,_,!) = membuat kotak pesan
6. draw_bitmap(_,_,_) = mendeklarasikan gambar
7. write(_) = mencetak
8. for(_,_,_) = perulangan
9. beep() =
mendekrasikan suara
10. win_func(paint):- = fungsi menggambar diwindow
11. win_func(init)
:- = fungsi proses diwindow
12. % = komentar
13. Wait(_) = proses tunggu
14. Fail. = menghentikan proses
sementara
15. Close_window(_) = menutup window
16. Update_window(_) =
memperbarui window
17. Randow(_) = proses acak
18. mouse_click(X,Y) = proses klik pada mouse
19. win_func(press) = proses tekan pada mouse dan
keyboard
20. font(_) = bentuk huruf
21. text_out(_) = mencetak huruf di window
22. color_text(_) = warna huruf
23. button(_,_) = membuat button (tombol)
No comments:
Post a Comment