Rabu, 22 Februari 2017

MEMBUAT GAME SEDERHANA MENGGUNAKAN GREENFOOT


Greenfoot merupakan sebuah IDE berbasis java yang dikhususkan untuk pembuatan game sederhana. Greenfoot diprakarsai oleh Michael Kolliung pada tahun 2003. Prototype yang pertama dibangun oleh Poul Henriksson dan Michael Kolling pada tahun 2003/2004. semenjak tahun 2005 pembuatan greenfoot ini dilanjutkan dengan melibatkan anggota kelompok dari University of Kent dan Deakin University.

Pada awalnya, greenfoot bertujuan untuk menarik minat anak-anak untuk belajar pemrograman, greenfoot ini cocok untuk anak usia 13 tahun ke atas. Cara penggunaannya pun cukup mudah. Selain berbentuk teks seperti editor lainnya, pada greenfoot ini terdapat perangkat alat bantu seperti class browser, editor dan compiler. Greenfoot juga mendukung bahasa Java secara utuh. Denagn adanya bantuan bperangkat-perangkat tadi, konsep OOP pada greenfoot lebih mudah dimengerti.

Didalam greenfoot terdapat project yang dinamakan scenario. Di dalam project tersebut, kita bisa membuat dua macam tipe class dari library greenfoot. Yaitu class world dan actor. World merupakan latar dari game yang akan dibuat. Untuk membuat class world, caranya adalah dengan meng-klik new sub class di bagian world. Maka akan mucul sebuah kotak dialog. Kemudian kita diminta untuk memberi nama untuk kelas world tersebut. Setelah itu kita dapat memilih gambar sebagai latar belakang class world yang akan kita buat. Di dalam greenfoot sendiri telah tersedia beberapa gambar untuk latar belakjang, seperti gambar tanah, pasir, batu, air, dll.

Class actor adalah sebuah kelas yang berfungsi sebagai karakter pada game yang akan kita buat. Untuk membuat actor caranya adalah dengan meng-klik icon aktor, kemudian pilih new subclass. caranya hampir mirip dengan pembuatan class world. Pada class actor juga telah disediakan beberapa gambar, sepertii gambar animal, people, symbol, dll.
  • langkah-langkah pembuatan game sederhana


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");
        }