baik, saat ini saya akan mebahas masalah bagaiman cara agar kiita akan mebuat game sederhana,saya disini menggunakna strawberi prolog, cob la, gak serumit yang kamu bayangkan
DAFTAR ISI
Ringkasan Cerita …………………………………………………………… 2
Initial State …………………………………………………………… 2
Rules …………………………………………………………… 5
Goals …………………………………………………………… 5
Konsep AI ……………………………………………………............ 6
Algoritma yang Dipakai …………………………………………………………… 6
Listing Program …………………………………………………………… 7
Daftar Pustaka ……………………………………………………............ 12
Glosarium …………………………………………………………… 12
RINGKASAN
CERITA
Ide
dasar pembuatan game ini berasal dari game angry bird, yang tokoh antagonisnya
suka mencuri telur yaitu babi dan kita sebut pigy, di kembangkan dari game
matches yang sudah ada pada strawberry prolog yang aturan gamenya tidak boleh
mengambil korek api terakhir, jadi dalam game ini siapa yg mengambil telur
terakhir maka dia akan kalah karena telur yang terakhir adalah bom yang dibuat
pigy menyerupai telur.
INITIAL
STATE
Permainan
Pencuri Telur ini saya kembangkan
dari game Mathes. Game ini juga merupakan game dengan menerapkan konsep
Artificial Intelligence(AI) atau kecerdasan buatan.
Permainan ini di lakukan oleh player
yang melawan AI dalam hal startegi pengambilan telur. Di dalam permainan ini
pemain maupun computer akan berusaha mengambil telur dan berusaha untuk
menyisakan satu telur, karena yang mengambil telurterakhir dialah yang kalah.
Tampilan
awal game adalah sebagai berikut:
|
Mengandung
Icon Telur dan 5 opsi menu:
Gambar
, merupakan icon yang
akan di klik oleh user ataupun computer.
Terdapat
4 opsi game yang dapat dipilih ,yaitu:
1. Ulang,
opsi ini digunakan untuk memulai atau mengulang permainan.
2. Mode
berfungsi untuk merubah menjadi computer yang mengambil telur terlebih dahulu
serta merubah aturan permainan
3. Tentang,
opsi ini berfungsi untuk menampilkan tentang data pengembang dari game ini.
4. Cara
Bermain, opsi ini digunakan untuk menampilkan cara bermain dan peraturan
didalam game ini.
5. Keluar
, opsi ini digunakan untuk keluar dari permainan.
Tampilan Menu Cara
Bermain ketika diklik:
Permainan
dimulai dengan mengklik Telur pada layar yang tersedia. Anda dapat memilih Telur
di daerah manapun dan berapapun jumlahnya. Usahakan anda tidak mengklik Telur
terakhir, karena jika Telur terahir diklik maka dialah yang kalah. Jika ingin
mengulang permainan cukup mengklik menu “Ulang”.
RULES
Berikut
adalah aturan bermain di dalam game ini.
Ø
Tunggu sampai Sound berakhir dan klik Ok
untuk memulai.
Ø
Pemain diberikan kesempatan untuk
mengambil telur pertama.
Ø
Pemain bisa menjadi giliran kedua jika
di atur pada menu mode.
Ø
Pemain diberikan keleluasaan untuk
mengambil berapapun telur yang ada asalkan masih pada kolom yang sama.
Ø
Dilarang mengklik diluar icon Telur
karena terkadang terjadi Bug. Jika terjadi bug anda bisa menggunakan menu Ulang
untuk mengulang permainan.
Ø
Komputer telah dirancang untuk
menyisakan satu telur terakhir. Karena yang mengambil telur terakhir adalah
yang kalah.
Ø Dan
pada menu mode terdapat perubahan system game yang merubah aturan menjadi
pengambil telur terakhir dialah pemenangnya.
GOALS
Setiap
permainan pastinya mempunyai goals atau tujuan akhir. Didalam permainan ini
goals atau tujuan akhirnya adalah membiarkan musuh mengklik telur terakhir dengan
strategi menghitung jumlah telur agar tersisa satu telur.
Berikut
adalah kondisi dimana player mencapai goals atau tujuan akhir.
|
Hal ini terjadi karena kita focus terhadap strategi,
yaitu menyisakan satu telur terakhir. Maka yang akan mengklik telur terakhir
adalah computer.
Berikut jika komputer mengalahkan player:
|
KONSEP
AI
Pada
game Pencuri Telur ini menggunakan algoritma Runut-Balik atau Backtracking.
Algoritma backtracking ini adalah algoritma berbasis DFS untuk mencari
solusinya. Algoritma Backtraking ini tergolong hemat waktu tidak seperti
algoritma Bruteforce yang mencari semua kemungkinan solusi, Backtraking hanya
menampilkan pencarian yang mengarah ke solusi saja.
Otak
yang diberikan kepada computer adalah dia akan selalu berusaha untuk menyisakan
satu telur untuk Player. Dengan algoritma ini pastinya perhitungan ini akan
cepat untuk diproses.
ALGORITMA
YANG DIPAKAI
Di dalam Game Pencuri
Telur algoritma yang dipakai adakah sebagai berikut:
1.
Ketika player mengklik icon telur.
2.
Ketika computer mengklik telur pula,
dengan syarat menyisakan satu telur terakhir untuk player.
3.
Ketika game berakhir apabila player
ataupun computer menang.
Dalam
permainan Pencuri Telur ini menggunakan algoritma Runut-Balik atau Backtraking karena dengan
menggunakan algoritma ini si computer akan cepat untuk berfikirnya. Dia
langsung mengklik tanpa memakan banyak waktu. Kalau game ini memakai algoritma Minimax maka game akan berlangsung sangat lama
seperti permainan catur, dimana algoritmanya mencari semua kemungkinan yang
ada.
LISTING PROGRAM
/*===============================================================
*
Nama Permainan : Pencuri Telur
*
Author : Ricky Meriandika
*
Kelas : 3IA12
*
===============================================================
*/
?-
G_Comp_First=0,%pendeklarasian
objeck game
G_Take_Last=0,
G_Ikon is
bitmap_image("Gambar/Telur2.bmp",_),
G_Latar is
bitmap_image("Gambar/angryland.bmp",_),
G_help is
bitmap_image("Gambar/help.bmp",_),
G_kalah is
bitmap_image("Gambar/kalah.bmp",_),
G_menang is
bitmap_image("Gambar/menang.bmp",_),
G_boom is
bitmap_image("Gambar/boom.bmp",_),
pen(0,0),
set(pos([1,2,3,4,5,4,3,2,1])),
window_n( G_Main, _,
win_func, "Pencuri Telur", 80,80,680,590,_,_,rgb(255,255,255)),
beep("Sound//sucses.wav"),
message("Mulai","Ayo
kalahkan Pigy!!!", i).
win_func(init) :- %
menambah opsi game
menu( normal, _, _,
menu_new(_), "&Ulang"),
menu( normal, _, _,
menu_options(_), "&Mode"),
menu( normal, _, _,
menu_tentang(_), "&Tentang"),
menu( normal, _, _,
menu_how(_), "&Cara
Bermain"),
menu( normal, _, _,
menu_exit(_), "&Keluar").
win_func(paint):-
%memanggil latar dan icon
draw_bitmap(0,0,G_Latar,_,300),
pos(Pos),
el(Pos,El,N),
for(I,1,El),
draw_bitmap(10+75*N,5+30*(I-1),G_Ikon,_,_),
fail.
win_func(mouse_click(X,Y)):-
%letak icon yg di klik
X1 is (X-10)//75,
Y1 is (Y-5)//30,
X1=<9,X>=10,
pos(Pos),
el(Pos,El,X1),
El>Y1,
replace(Pos2, Pos, Y1, X1),
beep("Sound//bird.wav"),
(Pos2=[0,0,0,0,0,0,0,0,0]->
set(pos(Pos2)),
end(0)
else
wait(0.5),
beep("Sound//pig.wav"),
play(Pos3, Pos2),
(Pos3=[0,0,0,0,0,0,0,0,0]->
end(1)),
set(pos(Pos3))),
update_window(_).
win_func(mouse_click(X,Y)):-
beep.
play(Pos3,
Pos2):- %koding AI
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(2)=:=0
->
Max - 2
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):-
%akhir permainan
Flag=G_Take_Last->
draw_bitmap(0,0,G_boom,_,_),
beep("Sound//boom.wav"),
wait(0.5),
draw_bitmap(0,0,G_kalah,_,_),
beep("Sound//failed.wav"),
message("Pigy Say","Aku
berhasil mencuri telurmu dan memberimu boom!!!",!)
else
draw_bitmap(0,0,G_boom,_,_),
beep("Sound//boom.wav"),
wait(0.5),
draw_bitmap(0,0,G_menang,_,_),
beep("Sound//sucses.wav"),
message("Bird Say","Aku
berhasil mengambil telurku kembali!!!",i),
update_window(_).
menu_new(press) :-
%permainan baru
(G_Comp_First=0->
set(pos([1,2,3,4,5,4,3,2,1]))
else
Pos=[1,2,3,4,5,4,3,2,1],
N is 2*random(3),
el(Pos,A, N),
A2 is A - 1,
replace(Pos2, Pos, A2, N),
set(pos(Pos2))),
update_window(_).
menu_how(press) :-
draw_bitmap(0,0,G_help,_,_),
message("Aturan
game","Player akan mengambil telur
terlebih dahulu.
Boleh
mengambil berapapun dengan syarat telur yang di ambil hanya satu kolom.
Jika
player mengambil telur yang terakhir maka player akan kalah.
Ayo
kalahkan Pigy!!!",i),
update_window(_).
menu_tentang(press) :-
draw_bitmap(0,0,G_help,_,_),
message("Tentang","Data
Pengembang
Nama
:Ricky Meriandika
NPM
:56411126
Kelas
:3IA12", i),
update_window(_).
menu_options(press) :-
window_n( _, _,
options_func, "Options", 200, 100, 300, 200,?,_,_).
options_func(init) :-
check_box( A, _,
check_func, "Pigy ambil pertama", 20, 20, 200, 20),
G_A:=A,
set_check_box_value(G_A,G_Comp_First),
check_box( B, _,
check_func, "Pemenang ambil terakhir", 20, 60, 200, 20),
G_B:=B,
set_check_box_value(G_B,G_Take_Last),
button( _, _,
ok_func(_), "OK", 20, 120, 80, 30),
button( _, _,
cancel_func(_), "Cancel", 120, 120, 80, 30).
ok_func(press) :-
G_Comp_First:=get_check_box_value(G_A),
G_Take_Last:=get_check_box_value(G_B),
(G_Take_Last=1->
set_text("Matches (Take the
last)",G_Main)
else
set_text("Matches (Don't take the
last)",G_Main)),
close_window(parent(_)).
cancel_func(press) :-
close_window(parent(_)).
check_func(press) :-
set_check_box_value(_,1-get_check_box_value(_)).
menu_exit(press) :-
close_window(_).
DAFTAR PUSTAKA
www.ittelkom.ac.id/.../Materi%20Desain%20Analisis%20Algoritma/M14 || File disertakan
didalam folder File Pendukung.
GLOSARIUM
Algoritma yang dipakai adalah algoritma Runut-balik. Algoritma
Runut-balik (backtracking) adalah algoritma yang berbasis pada DFS untuk
mencari solusi persoalan secara lebih ringkas. Runut-balik, yang merupakan
perbaikan dari algoritma brute-force, secara sistematis mencari solusi
persoalan diantara semua kemungkinan solusi yang ada.
Fungsi pada program.
1.
set(pos : menentukan
posisi.
2.
bitmap_image : Pendeklarasian
gambar extensi bitmap (.bmp)
3.
window_n : Membuat
jendela atau papan permainan.
4.
win_func(init):- : Fungsi proses di window.
5.
mouse_click(X,Y) : Proses
klik pada window.
6.
beep. : Memanggil suara dengan extensi (.wav).
7.
win_func(paint):- : Fungsi menggambar di window.
8.
draw_bitmap : Memanggil
gambar.
9.
message(“”) : Menampilkan
pesan di window.
10. close_window(_) : Menutup program.
bagus min, makasih buat gamenya ya, akhirnya tugas saya bisa selesai..
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapusmakasih ya..
BalasHapussangat membantu .
Nice bruh
BalasHapusmin msh bnyak yang error, bisa krim file nya ke ergahazan282@gmail.com ? soal nya buat tugas besar. terima kasih min
BalasHapus