• Tidak ada hasil yang ditemukan

PEMANFAATAN MATRIK UNTUK GAME LABIRIN BERBASIS GREENFOOT

N/A
N/A
Protected

Academic year: 2021

Membagikan "PEMANFAATAN MATRIK UNTUK GAME LABIRIN BERBASIS GREENFOOT"

Copied!
8
0
0

Teks penuh

(1)

1

PEMANFAATAN MATRIK UNTUK GAME LABIRIN BERBASIS GREENFOOT

Didik Nugroho1, Iwan Ady P2 1)

Sekolah Tinggi Informatika Dan Komputer Sinar Nusantara Surakarta 2)

Sekolah Tinggi Informatika Dan Komputer Sinar Nusantara Surakarta

1)

didikhoho@gmail.com

2)

iwanadyp@gmail.com Abstraksi

Game merupakan salah satu industri kreatif yang dikembangkan guna membuka peluang kerja dibidang teknologi Informasi. Salah satu model games berupa game Labirin. Labirin merupakan bentuk game dari implemetasi matematika pada materi matrikdan array. Proses pencetakan dan penelusuran pada game labirin tentu akan menggunakan metode penelusuran matrik. Metode yang dipakai pada penelitian ini berupa percobaan didalam lab komputer, dilakukan membuat spesifikasi game yang diinginkan kemudian dilakukan pengkodean dengan menerapkan matrik dan array. Pengkodingan menggunakan Compiler Greenfoot yang berbasis bahasa Java. Aplikasi game hasil coding diuji secara berulang sehingga menghasilkan game labirin yang diharapkan. Hasilnya telah dapat diketahui bagaimana mengimplemtasikan matrik dan array pada game labirin berbasis greenfoot

Keyword: Labirin, Greenfoot, Matrik, Array

I. PENDAHULUAN

Game saat ini merupakan salah satu unggulan dalam program industri kreatif. Game akan mempu menumbuhkan industri game yang dapat menyerap tenaga kerja di bidang desain, programer , ilustrator , komposer dan lainnya. Maka sangat penting untuk mengembangkan industri game.

Saat ini telah banyak tools / mesin engine untuk membuat game, tools tersebut ada yang bersifat gratis ada yang berbayar. Maka dengan adanya tool ini akan membantu dalam belajar membuat games sehingga nantinya dapat dikembangkan menjadi ke industri. Salah satu tools yang banyak dipakai adalah Greenfoot. Greenfoot digunakan dibeberapa perguruan tinggi di luar negeri[1], serta di Indonesia seperti ITS. Greenfot digunakan untuk mengenalkan materi pemrograman berorientasi Objek, serta memberikan dasar dalam pembuatan games. Hasil pembelajaran ini akan mampu mendorong tingkat pahaman mahasiswa dalam metode pemrograman berbasis objek serta pemahaman dalam pengembangan game.

Game telahbanyak dikembangkan serta telah banyak menghadirkan jenis-jenis games. Salah satu jenis game yang banyak disukai berupa game labirin. Game labirin sendiri mampu memberikan keuntungan bagi pemainnya. Game ini mampu membantu

melatih otak serta melatih respon motorik user/ pemain.

Game jenis labirin merupakan game yang menerapkan teori matematik, pada labirin terdapat baris-baris, setiap baris akan memiliki kolom-kolom dengan jumlah yang sama setiap barisnya. Sehingga labirin merupakan model matrik[2]. Actor pada game labirin akan digerakan dari baris / kolom sehingga mencapai target yang ditentukan.

Pada game Labirin kadang objek yang ada didalamnya berupa dinding pembatas, actor-actor lain berupa lakon yang dimainkan oleh pemain, objek yang dijadikan point, serta objek yang dijadikan musuh. Karena game labirin berupa matrik maka proses penyimanan objek-objek tersebut tentunya dalam bentuk matrik, bagaimana data tersebut ditangani jika diimplemetasikan dalam greenfoot ini yang menjadi pertanyaan. Pada labirin juga terdapat jenis objek yang sama yang jumlahnya lebih dari satu. Objek –objek yang sama tersebut bagaimana proses penyimpanannya jika menggunakan tipe data array.

Greenfoot untuk mendeteksi terjadinya tabrakan akan menggunakan perintah getoneintersection, Pada labirin secara logika objek –objek yang terletak pada baris dan kolom yang sama pasti sedang bertemu / bertumbukan. Bagaimana pendeteksian tubrukan secara logika tersebut jika dilakukan

(2)

2 tidak menggunakan perintah greenfoot yang ada.

Tujuan dari penelitian ini adalah sebagai berikut :

1. Mangetahui bagaimana Implemetasi matrik pada game Labirin berbasis greenfoot.

2. Mengetahui penggunaan Matrik dapat dipakai mendeteksi apakah actor lakon bertumbukan dengan actor lain

3. Mengetahui bagaimana penggunaan array actor pada game labirin berbasis Greenfoot

II. TINJUAN PUSTAKA

2.1 Greenfoot

Greenfoot merupakan salah satu framework untuk membangun game. Grenfoot terutama dikembangan sebagai dasar mengenalkan dunia programing berbasis Objek oriented programing, Greenfoot digunakan untuk mengajar mahasiswa tingkat dasar pada perguruan tinggi ,Greenfoot ini dipilih karena kecil, free, multiplatform. Grenfoot mengijinkan untuk pengguna dengan mudah membuat dan mengekplore class, instances dan menggunakan grafik user interface[1].

2.2 Matrik

Matriks adalah himpunan skalar yaitu bilangan riil atau kompleks yang disusun atau dijajarkan secara empat persegi panjang menurut baris dan kolom. Secara umum matriks mempunyai suatu ukuran yang disebut dengan orde. Orde adalah jumlah dari kolom dan baris suatu matriks, mulai dari matriks yang berode 1, orde 2, hingga matriks yang berorde yang artinya matriks tersebut berukuran . Matriks yang jumlah baris sama dengan jumlah kolom dinamakan matriks bujur sangkar atau matriks persegi. Matrik ini merupakan model game labirin[2].

2.3 Labirin

Labirin terdapat 2 tipe game labirin yang sering ditemui yaitu tipe 2 dimensi dan tipe 3 dimensi. Labirin 2 dimensi akan memperlihatkan secara keseluruhan bentuk labirin pada bidang datar seperti sebuah peta,

sedangkan tipe 3 dimensi akan menampilkan karakter pemain seperti berada di dalam ruangan labirin yang dikelilingi oleh dinding-dinding yang tinggi dan dalam pencarian solusinya pemain harus memasuki ruangannya satu persatu untuk menemukan pintu keluar dan objek-objek yang tersebar didalam labirin tersebut[3].

III. METODE PENELITIAN

Metode yang dilakukan dalam penelitian ini berupa metode percobaan. Diawali dengan membuat spesifikasi model game labirin, kemudian dilakukan rekayasa matrik untuk bentuk map labirin . Langkah terakhir dilakukan pembuatan koding labirin, Dilakukan pengujian hasil Cading sampai hasil proses Coding sesuai spesifikasi yang diharapkan. Software yang digunakan desain actor photoshope, paint, coding dengan bahasa java, compiler dengan menggunakan Greenfoot.

IV. HASIL DAN PEMBAHASAN

Labirin merupakan salah satu bentuk dari implemetasi matrik. Jika dilihat pada papan permainan labirin maka terlihat merupakan sebuah matrik, karena terdiri atas baris dan kolom .Setiap baris akan memiliki jumlah kolom yang sama. Setiap kolom merupakan bentuk kotak yang dapat dijadikan jalur yang bisa dilewati atau dinding pembatas. Objek actor akan melewati kotak-kotak jalur dan tidak boleh menabrak diding pembatas. Labirin juga dibatasi dengan batas tepi kotak terdiri batas atas,kanan, bawah dan batas kiri.

Gambar 1 Papan Labirin 1 Pembuat Class World dan Actor

(3)

3 Gambar 2. Actor yang dibuat permainan

labirin 2.Map labirin

Pembuatan papan labirin dapat diawali dengan membuat strukture data matrik terlebih dahulu. Pada Greenfoot proses pembuatan papan labirin dapat dilakukan dengan membuat Class World, lewet editor pada class world yang dibuat kemudian dibuat strukture data matrik.

Gambar 3. Papan Labirin

Pembuatan strukture data matrik untuk map labirin pada contoh gambar 3, dilakukan dengan membuat elemen matrik untuk jalur diisi dengan nilai 0, sedangkan untuk dinding dibuat dengan nilai 1.

Gambar 4. Elemen matrik berisi 1 berupa dinding

Strukture data matrik dari map labirin gambar 3 dituliskan seperti dibawah :

public int map[][]= {{0,0,1,1,0}, {1,0,0,0,0}, {1,0,1,1,0}, {0,0,1,1,0}, {1,0,0,0,0}, {1,0,0,0,1}, {0,0,1,0,1}} ... ... 2.Cetak Map Labirin

Strukture data Matrik dari Map labirin dapat dicetak dengan alur pencetakan matrik. setiap baris dicetak semua kolomnya, kemudian baru perpindah ke baris berikutnya sampai baris terakhir. Berikut coding pencetakan Map Labirin dari gambar 4

.

Gambar 5. Pemberian jarak cetak papan Labirin

private void prepare() {

for (int baris=0;baris<=6;baris++){ for(int k=0;k<=4;k++){ if(map[baris][k]==1){ dinding bo = new dinding(); addObject(bo, DX+(k*offset_X), DY+(baris*Offset_Y)); } else{

jalur jl = new jalur(); addObject(jl, Dx+(k*offset_X), DY+(baris*offset_Y)); } } }// buat jalur

(4)

4 Gambar 6. Hasil Pencetakan Map Labirin

3.Cetak actor lakon Utama pada Labirin Actor utama dapat dicetak didalam fungsi prepear dibawah proses pencetakan map labirin.

Gambar 7. Hasil Pencetakan Actor Utama pada Map Labirin

Maka fungsi prepare akan berubah menjadi seperti dibawah:

private void prepare() {

for (int baris=0;baris<=6;baris++){ for(int k=0;k<=4;k++){ if(map[baris][k]==1){ dinding bo = new dinding(); addObject(bo, DX+(k*offset_X), DY+(baris*offset_Y)); } else{

jalur jl = new jalur(); addObject(jl, DX+(k*offset_X), DY+(baris*offset_X)); } } }// buat jalur // buat mobil

mobil m=new mobil(); addObject(m,200,50); }

4.Pergerakan Sprite

Gambar 8. Jarak Pergerakan Sprite Pergerakan Sprite dilakukan dengan Keyboard atau melalui sistem komputer. Proses pergerakan dilakukan secara horisontal dan Vertikal. Pergerakan Horisontal dilakukan dengan pergeseran ke kiri dan ke kanan. Gerakan ke kanan akan menambah posisi nilai x dengan menambahkan besaran ( offset_X). Jika gerakan ke kiri maka akan mengurangi nilai posisi x dengan suatu nilai besaran (offset_Y).

Pergerakan Sprite secara vertikal berupa gerakan ke atas atau ke bawah. Pergerakan ke atas dilakukan dengan mengurangi nilai Y dengan suatu nilai besaran (offset_Y). Jika gerakan ke bawah dilakukan dengan menambah nilai Y dengan suatu nilai besaran (offset_Y). Pergerakan ini dibahas lagi pada pergerakkan actor.

5.Cetak actor Point dan keluar

Membuat cetakkan point menambahkan strukture data untuk point :

public int map[][]= {{0,0,0,0,0}, {1,0,0,0,0}, {1,0,1,1,0}, {2,0,1,1,0}, {1,0,0,0,0}, {1,0,0,0,1}, {0,2,1,2,1}};

Map point disini dibuat dengan kode 2. Jika elememen matrik berisi 2 maka yang dicetak objek Point, seperti ilustrasi gambar 9.

(5)

5 Gambar 9. Elemen matrik 2 digambarkan

objek buah / point

Kemudian dalam class Bg dibuat methot mencetak point , seperti berikut

public void cetak_mappoin(){

for (int baris=0;baris<=6;baris++){ for(int k=0;k<=4;k++){

if(map[baris][k]==2){ buah p = new buah();

addObject(p, DX+(k*offset_X), DY+(baris*offset_Y));

} }

Sehingga pada methot prepare ditambahkan pemanggilan fungsi cetak point dan mencetak objek keluar.

... // peta point cetak_mappoin(); // buat mobil

mobil m=new mobil(); addObject(m,200,50); // cetak pintu keluar

keluar keluar = new keluar(); addObject(keluar, 406, 53); keluar.setLocation(404, 46); ...

}

Gambar 10. Map Labirin dengan Actor utama dan point

4. Pergerakan Actor

Pada game labirin terdapat actor utama yang akan menyusuri jalur labirin. Langkah actor utama pergerakannya setiap ditekan tombol panah atas, bawah, kanan , atau kiri harus digerakan satu kotak jika kotak yang dituju bisa ditempati. Maka pembuatan actor utama harus ditentukan kemana arah langkah awal berjalan. Dari arah awal jika pemain menekan tombol kanan maka akan dicek apakah arah baru tersebut bisa dilewati maka actor bisa melewati. Sehingga pada class actor utama dibuat metode tombol yang berisi pengecekan terhadap tombol yang ditekan pemain. Metode tombol akan dipangil metode act() pada class actor utama.

...

public void tombol(){ if(Greenfoot.isKeyDown("up")){arah=3;jalan _atas();} if(Greenfoot.isKeyDown("down")){ arah=4;jalan_bawah();} if(Greenfoot.isKeyDown("left")){arah=2; jalan_kiri();} if(Greenfoot.isKeyDown("right")){arah=1;jal an_kanan();} }

public void jalan_kanan(){ int baris_lama,kolom_lama; baris_lama=baris; kolom_lama=kolom; if(arah==1){ kolom++;if(kolom>4){kolom--;} if(baris==baris_lama && kolom==kolom_lama){}else{ if(cek_jalan(baris,kolom)==true){ setRotation(0); setLocation(DX+(kolom*offset_X),(baris*off set_Y)+DY); }else{kolom--;} } } }

public void jalan_atas(){

int baris_lama,kolom_lama; baris_lama=baris;

kolom_lama=kolom;

(6)

6 if(baris==baris_lama && kolom==kolom_lama){}else{ if(cek_jalan(baris,kolom)==true){ setRotation(270); setLocation(DX+(kolom*offset_X),(baris*off set_Y)+DY); }else{baris++;} } } } ... 6.Kolektion detektion public void tombol(){ if(Greenfoot.isKeyDown("up")){arah=3;jalan _atas();} if(Greenfoot.isKeyDown("down")){ arah=4;jalan_bawah();} if(Greenfoot.isKeyDown("left")){arah=2; jalan_kiri();} if(Greenfoot.isKeyDown("right")){arah=1;jal an_kanan();} // menabrak point Actor p = getOneIntersectingObject(buah.class); if (p != null) { getWorld().removeObject(p); } }

Perintah yang dicetak tebal diatas menunjukkan jika actor utama menabrak class buah / point , maka point tersebut akan

terhapus. Perintah

getOneIntersectingObject(buah.class)

merupakan perintah untuk mengetahui apakah objek actor utama menabrak objek point. 7.Point sebagai suatu Array

Pada Matrik actor bertumbukan dengan point dapat diketahui tanpa menggunkan perintah

getOneIntersectingObject(buah.class)Melal

ui jika posisi baris dan kolom. Jika posisi baris dan kolom, actor utama sama dengan posisi baris dan kolom point berarti actor utama menabrak point. Kendalanya kesulitan untuk proses penghapusan point tersebut. Karena kesulitan mengidentifikasi objeknya. Dari beberapa percobaan maka dapat diselesaikan dengan membuat point disimpan

dalam variabel arraylist. Sehingga proses pencetakan actor point dilakukan dengan script :

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

import java.util.ArrayList; // import koleksi

/**

* @author (your name)

* @version (a version number or a date) */

public class Bg extends World {

public static ArrayList points = new ArrayList();

... private void prepare()

{ ... ... /* peta point*/

for (int baris=0;baris<=6;baris++){ for(int k=0;k<=4;k++){

if(map_point[baris][k]==2){ buah p = new buah();

addObject(p, DX+(k*offset_X), DY+(baris*offset_Y)); points.add(p); } } }// buat jalur

Pada actor World juga perlu ditambahkan methot get point dari arraylist berikut code dari methot tersebut:

public static ArrayList getPoint() { return points;

}

Proses penghapusan objek point yang ditabrak actor utama dapat dilakukan dengan menambahkan methot pada actor World : public void hapus_point(int b,int k){

// posisi actor pada baris 3 kolom 0 , menabrak point di baris 3 kolom pertama, maka hapus gambar point tsb

if(b==3 && k==0){ int indeksHapus = Bg.getPoint().size()-3; buah pointHapus =(buah)Bg.getPoint().get(indeksHapus); removeObject(pointHapus); }

(7)

7 // posisi actor pada baris 6 kolom 1 , menabrak point di baris 6 //kolom kedua,, maka hapus gambar point tsb

if(b==6 && k==1){ int indeksHapus = Bg.getPoint().size()-2; buah pointHapus =(buah)Bg.getPoint().get(indeksHapus); removeObject(pointHapus); }

// posisi actor pada baris 6 kolom 3, menabrak point di baris 6 kolom keempat,, maka hapus gambar point tsb if(b==6 && k==3){ int indeksHapus = Bg.getPoint().size()-1; buah pointHapus =(buah)Bg.getPoint().get(indeksHapus); removeObject(pointHapus); } }

Methot tersebut kemudian dipanggil oleh actor utama pada methot tombol. Sehingga script methot tombol berubah seperti berikut :

public void tombol(){

if(Greenfoot.isKeyDown("up")){arah=3;jalan _atas();} if(Greenfoot.isKeyDown("down")){ arah=4;jalan_bawah();} if(Greenfoot.isKeyDown("left")){arah=2; jalan_kiri(); } if(Greenfoot.isKeyDown("right")){arah=1;jal an_kanan();}

// cek actor menemukan pintu keluaar if(

cek_stop(baris,kolom)==true){Greenfoot.stop ();

}

// cek terjadi tambrak point

if(((Bg)getWorld()).cek_nabrakpoint(baris, kolom)==true){ ((Bg)getWorld()).hapus_point(baris,kolom) ; } }

Methot cek_nabrakpoint menguji apakah posisi actor utama sama pada posisi actor point. Jika sama maka actor point

dihapus. Berikut isi code methot cek_nabrakpoint :

public boolean cek_nabrakpoint(int b,int k){

boolean hasil=false;

if(map_point[b][k]==2){hasil=true;} return hasil;

}

Berikut isi code methot Hapus_point() : public void hapus_point(int b,int k){ if(b==3 && k==0){

int indeksTerakhir = Bg.getPoint().size()-3; buah nyawaTerakhir

=(buah)Bg.getPoint().get(indeksTerakhir); removeObject(nyawaTerakhir);

}

if(b==6 && k==1){

int indeksTerakhir = Bg.getPoint().size()-2; buah nyawaTerakhir

=(buah)Bg.getPoint().get(indeksTerakhir); removeObject(nyawaTerakhir);

}

if(b==6 && k==3){

int indeksTerakhir = Bg.getPoint().size()-1; buah nyawaTerakhir

=(buah)Bg.getPoint().get(indeksTerakhir); removeObject(nyawaTerakhir);

} }

Methot cek_stop merupakan methot yang diletakkan di class actor utama, jika actor utama sampai pada baris 0 dan kolom 4 maka actor telah menjumpai pintu keluar maka games berhenti.

public boolean cek_stop(int baris,int kolom){

boolean hasil=false;

if(baris==0 && kolom==4){ hasil=true;

}

return hasil; }

V. KESIMPULAN

1. Tipe data Array dua dimensi dapat digunakan menyimpan data objek labirin, serta dapat dipakai membuat map labirin.

2. Pengunaan Matrik untuk objek dapat dipakai mendeteksi apakah actor utama bertumbukan dengan actor lain dengan membandikan kesamaan

(8)

8 posisi baris dan kolom actor utama dengan objek yang ditubruknya. 3. Arraylist dipakai menyimpan Objek

yang sama seperti nyawa, point. Sehingga proses penghapusan point yang akan dilakukan melalui penghapusan elemen arraylist.

DAFTAR PUSTAKA

1. Mohammed Al-Bow, using greenfoot and games to teach Rising 9th and

10th Grade Novice

programmers,Education University of Denver.

2. Andi Bahoto, Aziskhan, Musraini M ,2014,Menghitung determinan Matrik nxn (n >/ 3) dengan menggunakan metode Salihu, JOM FMIPA Volume 1. No.02 Oktober 2014.

3. Meiki Kurniawan, Fithri Selva, Penerapan Algoritma Depth-First-Search sebagai maze Geberator pada Labirin Menggunakan Unity 3D, STMIK GI MDP Palembang.

Gambar

Gambar 5. Pemberian jarak cetak  papan Labirin
Gambar 8. Jarak Pergerakan Sprite
Gambar 10. Map Labirin dengan Actor utama  dan point

Referensi

Dokumen terkait

Dengan kegiatan ini di maksud supaya kita lebih mantap lagi pendidikan kita, terutam praktik yang diperoleh di samping itu juga dengan adanya praktek kerja industri ini siswa

Kanker kolorektal ( colo-rectal carcinoma ) atau disebut juga kanker usus besar merupakan suatu tumor ganas yang ditemukan di colon atau rectum .Salah satu cara

Color constancy atau ketetapan warna adalah salah satu keistimewaan dari sistem penglihatan manusia, yang mengusahakan agar warna yang diterima dari suatu benda terlihat

Bagi siswa diharapkan dari hasil penelitian ini dapat dijadikan model pelatihan loncat gawang setinggi 25 cm dengan jarak 0,5 dan 1 m terhadap peningkatan

Penelitian ini merupakan penelitian lapangan ( field research ), dengan pengumpulan data yang dilakukan menggunakan metode catatan pengamatan, wawancara dan

Perbedaan penelitian yang penulis kaji dengan penelitian yang berjudul Pelaksanaan Program Inovasi SAMSAT Corner Dalam Rangka Meningkatkan Pelayanan Kepada Wajib

braunii yang dikultivasi selama 6 hari pada perlakuan dengan konsntrasi air kelapa 0% memiliki kuantitas paling rendah, yakni hanya 2,81% kandungan lipid,

Berdasarkan hasil penelitian maka dapat diambil kesimpulan bahwa pengendalian biaya kualitas pada Aksan Bakery belum dilakukan secara efisien karena biaya kualitas