Tujuan
Tujuan kita dalam
menggembangkan games ini adalah untuk memberikan sedikit hiburan
terhadap pemain yang memainkan games
snake ini tanpa membutuhkan banyak peraturan dan kemudahan berpikir serta memberikan manfaatnya tersendiri didalamnya dan
kami berdua memilih menggunakan bahasa pemograman pascal sebagai pembuatan
games ini.
Pengenalan Game Snake
Mungkin kita tidak asing dengan yang
namanya permainan snake,
pada hakikatnya snake
hanyalah segelintir permainan sederhana dalam kehidupan sehari-hari. Untuk lebih jelasnya
game snake merupakan game
sederhana dimana kita memakan makanan
agar kita bisa lanjut kelevel berikutnya. Games tersebut seperti permainan
snake biasanya Cuma disini kita berusaha memakan makanan sebanyak-banyaknya dan
berusaha menghindari penghalang sebagai
rintangannya, makin tinggi level yang kita hadapi maka penghalangnya makin
banyak. Dalam permainan ini kita berusaha
bagaimana menghalangi penghalang yang
kita set dari komputer, sehingga kita harus berusaha menghindari rintangan tersebut untuk lanjut
ke level berikutnya.
Program Editor
Pembuatan game “Snake”
menggunakan bahasa pemograman pascal.
Pascal Pascal merupakan suatu bahasa
komputer tingkat tinggi yang dibuat sekitar tahun 1970 oleh Niklaus Wirth dan
digunakan untuk pendidikan komputer. Nama Pascal diambil dari seorang ahli
matematika yang bernama Blaise Pascal yang menemukan mesin hitung pertama.
Bahasa Pascal dirancang untuk menyelesaikan masalah dari berbagai kalangan
pemakai, mulai dari para mahasiswa, pendidik, dan ilmuwan.
Pascal adalah
bahasa pemrogram terstruktur adalah suatu bahasa pemrograman terstruktur. Hal
tersebut berarti semua program yang anda buat harus terstruktur dan teratur,
dalam hal ini ada pemakaian oto dan jump.
Disini pascal sebagai program
editor. Pemilihan software ini dilakukan karena cukup mudah untuk dipahami
meskipun dalam arti sebenarnya bahasanya memiliki sedikit arti abstrak di
bagian kodingan. Pascal
ini juga sering dipergunakan untuk membuat beberapa project yang berbasis AI
(Artificial Inteligence). Disisi lain tidak dipungkiri memang bahwa bahasa
pemograman ini memiliki bug sehingga mengganggu proses kerja kita.
Rules
• Pada saat memulai game,
kita memiliki rintangan yaitu berupa
kecepatan disetiap waktu dan levelnya.
• Pada saat memulai game
waktu yang disetting sebelumnya didalam program akan
berjalan ketika dimainkan.
• Dengan
menggunakan keyboard pada laptop atau pc anda, anda dapat mengatur posisi ular
untuk memakan makanannya.
• Pada level
pertama kita akan menemukan penghalang berupa waktu pada saat menurun pada
layar permainan.
• Pada level kedua
speed serta rintangan berupa kecepatan akan bertambah seiring dengan
bertambahnya level dalam permainan snake yang kita mainkan.
• Dalam memainkan permainan
ini kita juga dituntut kecepatan dalam memakan makanan agar dapat melanjutkan
kelevel berikutnya.
•
Didalam
permainan ini terdapat skor dan jumlah banyaknya makanan yang dimakan.
• Dipermainan ini jika
kita akan menampilkan pesan, jika permainan yang dimainkan menang maka akan
muncul pesan menang karena telah menyelsaikan permainan disetiap levelnya dan
jika kalah dalam permainan maka akan muncul pesan kalah.
B.
Goal
a. Kondisi
jika user menang
Pemenangnya
adalah user jika telah menyelsaikan
semua level pada permainan game snake yang terdapat dalam computer serta dapat
melewati rintangan-rintangan yang terdapat didalam games ini.
(Gambar ketika user menang)
b.
Kondisi jika user kalah
Pemenangnya adalah komputer berarti kita tidak bisa menyelsaikan permainan snake
ini dengan ketentuan yang ada.
(Gambar
ketika user kalah)
c.
Konsep
AI
Snake merupakan suatu
permainan yang menggunakan konsep Artificial Inteligence atau kecerdasan
buatan. Adapun kecerdasan buatan yang dimaksud dalam permainan ini adalah kita
memiliki lawan yaitu komputer.
Disini kita berinteraksi dengan pemain dari komputer yaitu komputer itu sendiri yang berusaha mengalahkan kita. Permainan akan
dimenangkan jika di salah satu pemain memiliki strategi yang baik dalam menyelsaikan permainan untuk melanjutkan
kelevel berikutnya.
Untuk memainkan game prolog ini kita harus
memiliki kompiler pascal
terlebih dahulu.Untuk memainkan game ini terlebih dahulu buka aplikasi pascalnya kemudian
klik File>Open dan pilih nama game tersebut. Setelah itu untuk menjalankan double klik
Algoritma
yang Digunakan
Algoritma Minmax
Untuk menentukan pilihan agar memperkecil kemungkinan kehilangan nilai maksimal. Algoritma ini diterapkan dalam permainan yang melibatkan dua pemain seperti tic tac toe, checkers, go dan permainan yang menggunakan strategi atau logika lainnya. Hal ini berarti permainan-permainan tersebut dapat dijelaskan sebagai suatu rangkaian aturan dan premis. Dengan itu, kita dapat mengetahui, pada titik tertentu permainan, langkah-langkah yang mungkin berikutnya. Permainan tersebut berbagi karakteristik yang sama, yakni “permainan dengan penuh informasi”. Setiap pemain mengetahui semua langkah-langkah yang mungkin dari pemain lawannya.
Penerapan Algoritma Minimax dalam Pemograman Snake
Penerapan algoritma Minimax dalam Snake dibuat berdasarkan prosedur Minimax untuk mendapatkan langkah terbaik dari posisi yang ada. Setiap posisi memiliki nilai yang dapat dihasilkan dari langkah terbaik, dengan berasumsi bahwa AI akan selalu mencoba memaksimalkan nilai, ketika lawan akan mencoba untuk meminimalkannya.Ketika prosedur minimax mencapai akar pada pohon pencarian (posisi saat tersebut), akan menghasilkan langkah terbaik dengan asumsi lawan akan menggunakan kriteria evaluasi yang sama. Beberapa versi program yang dibuat kebanyakan telah menerapkan algoritma pemotongan alpha-beta.Terdapat dua macam metode, yang disebut rote learning. Metode tersebut memiliki penyimpan untuk setiap posisi yang ditemui selama permainan dengan tidak menghilangkan nilai yang ditentukan oleh prosedur Minimax. Hasilnya adalah jika terdapat posisi yang pernah ditenukan sebelumnya, akan dimunculkan sebagai posisi terminal pada pohon pencarian. Sehingga, pencarian akan semakin mudah karena nilai posisi diambil dari hasil pencarian yang telah dilakukan sebelumnya. Satu masalah awal yang ditemukan adalah program tidak mendukung untuk melangkah langsung menuju kemenangan.
Algoritma Minmax
Untuk menentukan pilihan agar memperkecil kemungkinan kehilangan nilai maksimal. Algoritma ini diterapkan dalam permainan yang melibatkan dua pemain seperti tic tac toe, checkers, go dan permainan yang menggunakan strategi atau logika lainnya. Hal ini berarti permainan-permainan tersebut dapat dijelaskan sebagai suatu rangkaian aturan dan premis. Dengan itu, kita dapat mengetahui, pada titik tertentu permainan, langkah-langkah yang mungkin berikutnya. Permainan tersebut berbagi karakteristik yang sama, yakni “permainan dengan penuh informasi”. Setiap pemain mengetahui semua langkah-langkah yang mungkin dari pemain lawannya.
Penerapan Algoritma Minimax dalam Pemograman Snake
Penerapan algoritma Minimax dalam Snake dibuat berdasarkan prosedur Minimax untuk mendapatkan langkah terbaik dari posisi yang ada. Setiap posisi memiliki nilai yang dapat dihasilkan dari langkah terbaik, dengan berasumsi bahwa AI akan selalu mencoba memaksimalkan nilai, ketika lawan akan mencoba untuk meminimalkannya.Ketika prosedur minimax mencapai akar pada pohon pencarian (posisi saat tersebut), akan menghasilkan langkah terbaik dengan asumsi lawan akan menggunakan kriteria evaluasi yang sama. Beberapa versi program yang dibuat kebanyakan telah menerapkan algoritma pemotongan alpha-beta.Terdapat dua macam metode, yang disebut rote learning. Metode tersebut memiliki penyimpan untuk setiap posisi yang ditemui selama permainan dengan tidak menghilangkan nilai yang ditentukan oleh prosedur Minimax. Hasilnya adalah jika terdapat posisi yang pernah ditenukan sebelumnya, akan dimunculkan sebagai posisi terminal pada pohon pencarian. Sehingga, pencarian akan semakin mudah karena nilai posisi diambil dari hasil pencarian yang telah dilakukan sebelumnya. Satu masalah awal yang ditemukan adalah program tidak mendukung untuk melangkah langsung menuju kemenangan.
Algoritma Program Snake
uses crt;
uses crt;
label
habis, lanjut;
const
max_panjang = 100;
batas_x = 80;
batas_y = 25;
speed
= 200;
type
tempat = record
x, y : integer;
end;
var
ekor : array[1..max_panjang] of tempat;
ujung, makanan : tempat;
tkn : char;
i,pjg,skor,spd : integer;
mati : boolean;
procedure atur_posisi;
begin
ujung.x := ekor[pjg].x;
ujung.y := ekor[pjg].y;
for i:=pjg downto 2 do begin
ekor[i].x := ekor[i-1].x;
ekor[i].y := ekor[i-1].y;
end;
gotoxy(ekor[2].x, ekor[2].y); write('@');
gotoxy(ekor[3].x, ekor[3].y); write('&');
gotoxy(ekor[pjg-1].x, ekor[pjg-1].y);
write('#');
gotoxy(ujung.x, ujung.y); write(' ');
for i:=3 to pjg do if((ekor[2].x=ekor[i].x)
and (ekor[2].y=ekor[i].y)) then mati:=true;
delay(speed-spd);
end;
procedure makan;
var beda : boolean;
begin
inc(skor,5);
gotoxy(10,26); write('Skor = ',skor);
repeat
beda := true;
makanan.x := random(batas_x-2)+2;
makanan.y := random(batas_y-2)+2;
for i:=1 to pjg do
if((makanan.x=ekor[i].x) and
(makanan.y=ekor[i].y)) then beda:=false;
until beda;
gotoxy(makanan.x,
makanan.y); write('o');
inc(pjg);
inc(spd,2);
end;
procedure bergerak(c : char);
begin
if c = 'd' then begin
repeat
if((ekor[1].x = makanan.x) and (ekor[1].y
= makanan.y)) then makan;
ekor[1].x := ekor[1].x+1;
atur_posisi;
if (ekor[1].x = batas_x) or (ekor[1].y =
batas_y) or (ekor[1].x = 1) or (ekor[1].y = 1) then mati := true;
until keypressed or mati;
if mati then exit;
tkn:=readkey;
if tkn = 'a' then tkn:='d';
end
else if c = 's' then begin
repeat
if((ekor[1].x = makanan.x) and (ekor[1].y
= makanan.y)) then makan;
ekor[1].y := ekor[1].y+1;
atur_posisi;
if (ekor[1].x = batas_x) or (ekor[1].y =
batas_y) or (ekor[1].x = 1) or (ekor[1].y = 1) then mati := true;
until keypressed or mati;
if mati then exit;
tkn:=readkey;
if tkn = 'w' then tkn:='s';
end
else if c = 'w' then begin
repeat
if((ekor[1].x = makanan.x) and (ekor[1].y
= makanan.y)) then makan;
ekor[1].y := ekor[1].y-1;
atur_posisi;
if (ekor[1].x = batas_x) or (ekor[1].y =
batas_y) or (ekor[1].x = 1) or (ekor[1].y = 1) then mati := true;
until keypressed or mati;
if mati then exit;
tkn:=readkey;
if tkn = 's' then tkn:='w';
end
else if c = 'a' then begin
repeat
if((ekor[1].x = makanan.x) and (ekor[1].y
= makanan.y)) then makan;
ekor[1].x := ekor[1].x-1;
atur_posisi;
if (ekor[1].x = batas_x) or (ekor[1].y =
batas_y) or (ekor[1].x = 1) or (ekor[1].y = 1) then mati := true;
until keypressed or mati;
if mati then exit;
tkn:=readkey;
if tkn = 'd' then tkn:='a';
end;
end;
begin
tkn:='d';
mati := false;
randomize;
pjg := 10; spd := 0;
makanan.x := random(batas_x-2)+2;
makanan.y := random(batas_y-2)+2;
ekor[1].x := 40;
ekor[1].y := 3;
for i:=2 to pjg do begin
ekor[i].x := ekor[i-1].x;
ekor[i].y := 3;
end;
lanjut:
clrscr;
gotoxy(10,26); write('Skor = ',skor);
for i:=1 to 80 do begin
gotoxy(i,1); write('-');
gotoxy(i,25); write('-');
end;
for i:=2 to 24 do begin
gotoxy(1,i); write('|');
gotoxy(80,i); write('|');
end;
for i:=1 to pjg do begin
gotoxy(ekor[i].x, ekor[i].y);
write('&');
end;
gotoxy(makanan.x, makanan.y); write('o');
repeat
if((tkn='w') or (tkn='a') or (tkn='s') or (tkn='d')) then bergerak(tkn)
else begin
repeat
gotoxy(20,11); write(' Paused Game');
repeat
gotoxy(20,13); write('Press w, a, s
or d to continue'); delay(200);
gotoxy(20,13); write(' '); delay(200);
until keypressed;
tkn:=readkey;
until((tkn='w') or (tkn='a') or (tkn='s')
or (tkn='d')); goto lanjut;
end;
if mati then goto habis;
until (tkn = #27) or mati;
habis:
gotoxy(20,10); write(' You lose');
readln;
end
Kesimpulan
Dalam permainan game Snake ini sangat mudah sekali
tidak dibutuhkan pemikiran yang keras hanya saja didalam permainan ini kita
dituntut agar dapat menyelsaikan semua rintangan yang ada didalam level-level
dan dapat meyelsaikan game tersebut dengan tepat.
Dengan menggunakan konsep AI(Artificial Inteligence) di dalamnya untuk menentukan pilihan agar memperkecil kemungkinan kehilangan nilai maksimal. memnudahkan kita dalam menyelesaikan game ini. Algoritma pemograman yang terdapat dalam game ini adalah Penerapan algoritma Minimax dalam snake dibuat berdasarkan prosedur Minimax untuk mendapatkan langkah terbaik dari posisi ada. setiap posisi memiliki nilai yang dihasilkan dari langkah terbaik, dengan beramsumsi bahwa AI akan selalu mencoba memaksimalkan nilai, ketika lawan mencoba memaklsimalkanya.
Dengan menggunakan konsep AI(Artificial Inteligence) di dalamnya untuk menentukan pilihan agar memperkecil kemungkinan kehilangan nilai maksimal. memnudahkan kita dalam menyelesaikan game ini. Algoritma pemograman yang terdapat dalam game ini adalah Penerapan algoritma Minimax dalam snake dibuat berdasarkan prosedur Minimax untuk mendapatkan langkah terbaik dari posisi ada. setiap posisi memiliki nilai yang dihasilkan dari langkah terbaik, dengan beramsumsi bahwa AI akan selalu mencoba memaksimalkan nilai, ketika lawan mencoba memaklsimalkanya.