Tuesday, 18 February 2014

Membuat game sederhana dengan menggunakan GreenFoot



Assalamualaikum..     
yosh, langsung aja Pada kesempatan kali ini, saya akan berbagi ilmu tentang membuat game sederhana dengan menggunakan GreenFoot.  Tapi sebelum buat game nih kita kenalan dulu yuk sebenernya apasih GreenFoot itu ?

GreenFoot atau kaki hijau dalam bahasa Indonesia adalah adalah perangkat lunak yang didesain untuk pemula agar dapat terbiasa dengan Pemrograman Berorientasi Objek (Object-Oriented Programming), yang mendukung pengembangan aplikasi bergambar dengan memakai bahasa pemrograman Java. Informasi lebih lanjut mengenai Greenfoot bisa dilihat di www.greenfoot.org.

Okeh yang diatas sekedar perkenalan dengan GreenFoot. Sekarang kita masuk untuk membuat sebuah pemrograman dasar game menggunakan Greenfoot. 

Ini merupakan salah satu karya saya dengan scenario atau jalan ceritanya yaitu “ ada seekor kepik yang sedang hinggap di dahan pohon tiba-tiba dari langit turun banyak sekali kue pie. Karena lapar kepik memakan kue pie itu. Setiap kali makan satu pie itu kepik akan mendapatkan 1 poin. Tapi disatu sisi ada spider/ laba-laba yang turun juga yang ternyata laba-laba tersebut beracun. Jika tersentuh laba-laba tersebut maka kepik akan mati atau game over. Selain itu jika pie itu tidak berhasil dimakan oleh kepik lalu jatuh ke tanah maka akan game over “.


Itulah sedikit penjelasan tentang game yang akan kita buat. Sangat sederhana tapi semoga bermanfaat.. :D
  
1. Bukalah aplikasi Greenfoot Maka akan muncul tampilan seperti ini.




2. Buatlah sebuah scenario baru. Caranya; Scenario => New => Nama Objek
Kemudian akan muncul kotak dialog, dimana teman-teman akan menyimpan diamana hasil kerja teman-teman.




3.  Buatlah sebuah sub class di class word Klik Kanan > New Subclass. lalu akan muncul jendela baru untuk memasukkan nama kelas. Saya memberikan nama latar (perhatikan huruf besar dan kecilnya, karena pada pemrograman java bersifat case sensitive artinya huruf besar dan kecil sangat berpengaruh).




Pilih background, kalau saya sendiri saya ambil dari google yang ada gambar pohonnya kemudian jangan lupa untuk memberikan Nama Class. Kemudian pilih OK. Untuk melihat hasilnya, klik Compile maka akan tampil background yang dipilih tadi.

Klik kanan pada latar kemudian pilih open editor, maka akan tampil kode program class word dalam hal ini latar.



Ketikkan sintaks berikut :

public latar()
    {   
        super(900, 500, 1);
       
    }


Perintah super(900,500,1). Perintah ini digunakan untuk membuat ukuran layar dengan panjang 900 x tinggi 500 dengan ukuran cell 1 x 1.

4. Sekarang kita akan membuat Subclass Actor.





Disini teman-teman bisa memasukkan gambar, Pilih Import From File kemudian pilih gambar. Maka akan seperti ini tampilannya: 




5. Menempatkan objek dalam subclaass latar. Klik kanan pada Latar kemudian pilih open editor. Masukkan sintaks dibawah sytaks membuat Background/Latar:

setPaintOrder(counter.class, kepik.class, pie.class);
         
        addObject(new kepik(), 200,250);
        addObject(new pie(),700,30);
        addObject(new spider(),500,30);
        addObject(skor,80,400);


6.   Compile dan jika tidak ada kesalahan sintaks maka tampilannya akan seperti ini.


7.    Mengatur gerak aktor dengan Mouse. Masukkan sintaks berikut ke dalam actor kepik ;



if(Greenfoot.mouseMoved(null)) {
            MouseInfo mouse = Greenfoot.getMouseInfo();
            setLocation(mouse.getX(), mouse.getY());
        }

Tekan compile dan pastikan sintaks yang teman buat sudah sesuai, jika tidak terjadi kesalahan maka akan muncul tulisan Class compiled-no syntax error.

8. Setelah itu mengatur gerak Kue Pie / Hujan Pie secara Random. Masukkan sintaks berikut ke dalam actor pie:

public void act()
    {
        int x = getX();
        int y = getY();
        setLocation(x, y + 1);
       
        if (getY() ==499)                        //untuk pie dapat turun ke bawah
        {
            setLocation(getX(),0);
        }
    }   

Masukkan syntax berikut pada latar  pada public void act;

if(Greenfoot.getRandomNumber(100) < 2) {                        //untuk pie dapat random/ acak
            addObject(new pie(), Greenfoot.getRandomNumber(700), 10);
        }

9. Mengatur gerak spider atau musuh kepik. Masukkan sintaks berikut ke dalam actor spider:

public void act()
    {
        int x = getX();
        int y = getY();
        setLocation (x, y + 1);
       
        if (getY() ==499)                        //untuk spider dapat turun kebawah
        {
            setLocation(getX(),0);
        }
   }

Masukkan sintaks berikut pada latar pada Public Void Act;

if(Greenfoot.getRandomNumber(700) < 1) {                        //untuk spider dapat random/acak
            addObject(new spider(), Greenfoot.getRandomNumber(500), 10);
        }


10. Membuat Point. Yaitu apabila kepik makan kue pie maka akan medapat poin satu. Masukkan sintaks berikut kedalam Actor Kepik di dalam Void Act:

pie a= (pie)getOneIntersectingObject(pie.class);   //untuk pie dapat hilang ketika dimakan
        if (a!=null)
        {
            ((latar) getWorld()).tambahNilai();
            Greenfoot.playSound("pop.wav");     //untuk menambahkan suara
            getWorld().removeObject(a);
            return;
        }

Note : Untuk sound/ suara teman-teman bisa diambil dari folder Greenfoot Sound yang berada di direktori C:\

Kemudian masukkan sintaks berikut pada latar dipaling atas setelah komentar:

counter skor = new counter ("Skor : ");
    public void tambahNilai()
    {
        skor.tambah(1);
    }

Masukkan sintaks dibawah ini di actor counter :

import greenfoot.*;     //letakkan dipaling atas sebelum komentar
import java.awt.Font;
import java.awt.Color;

    private int angka = 0;
    private int target = 0;
    private String huruf;
    private int panjangHuruf;
   
    public counter( String depan )
    {
        huruf = depan;
        panjangHuruf = (huruf.length() +2) *16;
       
        setImage (new GreenfootImage(panjangHuruf,24));
        GreenfootImage gambar = getImage();
        Font jenisHuruf = gambar.getFont();
        gambar.setFont(jenisHuruf.deriveFont(24.0F));
       
        gantiGambar();
    }
   
    private void gantiGambar()
    {
        GreenfootImage gambar = getImage();
        gambar.clear();
       
        gambar.setColor(Color.RED);
       
        gambar.drawString(huruf + angka, 1, 18);
    }
   
    public void tambah (int skor)
    {
        target += skor;
    }
   
    public int nilaiAkhir()
    {
        return angka;
    }
   
   
    public void act()
    {
        if (angka < target)
        {
            angka++;
            gantiGambar();
        }
    }

Oke, sekarang kita buat untuk mencetak skor pada papanskor.
Masukkan syntax berikut pada actor papanskor:

import greenfoot.*; 
import java.awt.Color;
import java.awt.Font;
import java.util.Calendar;

public class papanskor extends Actor
{
    public static final float besarhuruf = 48.0f;
    public static final int lebar = 500;
    public static int tinggi = 300;
   
    public papanskor(int skor)
    {
        bikinGambar("Game Over","Skor Akhir : ", skor);
    }
   
    private void bikinGambar(String judul, String depan, int skor)
    {
        GreenfootImage gambar = new GreenfootImage(lebar,tinggi);
        gambar.setColor (new Color (25, 5, 74, 160));
        gambar.fillRect(0,0, lebar-10, tinggi -10);
        Font font = gambar.getFont();
        gambar.setColor(Color.GREEN);
        gambar.drawString(judul,60, 100);
        gambar.drawString(depan+skor,60,200);
        setImage(gambar);
    }

Masukkan sintkas berikut pada Latar :

public void selesai()
    {
        addObject(new papanskor(skor.nilaiAkhir()), 450,250);
        Greenfoot.stop();
    }


11.  Sekarang membuat gameover, yakni ketika kepik menyentuh spider atau kue pie jatuh ke tanah.

Masukkan sintaks di actor kepik :

spider spider=(spider)getOneIntersectingObject(spider.class);
        if(spider !=null)
        {

            setImage("skull.png");
            setRotation(0);
            Greenfoot.playSound("buzz.wav");
            getWorld().removeObject(spider);
            Greenfoot.stop();
            ((latar) getWorld()).selesai();
        }

Masukkan sintaks berikut di Actor Pie :

setLocation(getX(),getY() +1);           //game akan selesai ketika pie menyentuh tanah
        if (getY() == 450){
            ((latar) getWorld()).selesai();
            Greenfoot.playSound("buzz.wav");
        }


12.  Yosh, sudah selesai. Agak membingungkan memang. Baiklah selamat berkreasi . Bay bay sampai jumpa lagi… :D

Buat temen-temen yang masih bingung berikut dokumen hasilnya jadinya bisa di download di sini  : ))