Selasa, 10 Januari 2017

GAME PESAWAT MENEMBAKI ALIEN NARKOBA DENGAN GREENFOOT


GAME PESAWAT MENEMBAKI ALIEN NARKOBA  DENGAN GREENFOOT


Greenfoot merupakan lingkungan pengembangan Java(Java development environtment) yang bersifat interaktif dan didesain untuk tujuan pendidikan pada level SMA dan S1. Dengan program ini, seseorang dapat mengembangkan aplikasi grafis dua dimensi, seperti simulasi dan game interaktif. Greenfoot dikembangkan oleh University of Kent danLa Trobe University, dengan dukungan dari Oracle. Software ini gratis, dirilis di bawah lisensi GPL. Greenfoot tersedia pada banyak platform, seperti MS Windows, Mac OS X, Linux, Sun Solaris, dan beberapa JVM terbaru.
Dengan greenfoot, seorang siswa/mahasiswa dapat belajar pemrograman berorientasi obyek menggunakan Java. Mereka dapat menciptakan 'actor' dalam suatu 'world'untuk membangun game, simulasi, dan program-program grafis lainnya.
Greenfoot bersifat visual dan interaktif. Perangkat visualisasi dan interaksi dibangun di dalam environment tersebut.Actor diprogram menggunakan kode Java yang standar, sehingga memberikan pengalaman pemrograman berbasis teks yang bersifat tradisional dengan eksekusi visual.
Antarmuka yang digunakan sepenuhnya menggunakan konsep IDE, dimana didalamnya terdapat manajemen proyek,auto-completion, syntax highlighting, dan tool-tool lain yang biasanya terdapat pada kebanyakan IDE. Hal ini memungkinkan seorang pemrogram mempublikasikan pekerjaannya baik secara online maupun offline. Meskipun demikian, antarmukanya didesain untuk tetap sederhana dan mudah digunakan, sehingga cocok untuk para pemula.
Greenfoot digunakan oleh ribuan institusi di seluruh dunia. Program ini memberikan peralihan yang mudah keenvironment lainnya, semacam BlueJ dan IDE-IDE profesional yang lain.
Program dalam greenfoot ditulis dengan bahasa Java standar, yang merupakan salah satu bahasa utama dalam dunia akademis dan industri. Software ini didesain agar cukup mudah bagi pemula. Dengan digunakannya Java, memungkinkan seorang programmer membuat aplikasi yang impresif, fleksibel, dan canggih.
Software ini memang cocok bagi siswa/mahasiswa yang ingin belajar dan memperdalam baik secara konsep maupun praktik pemrograman berorientasi obyek. Software tersebut dapat didownload pada alamat inihttp://www.greenfoot.org/daownload, yang tersedia dalam berbagai platform sistem operasi. Beberapa contoh program dapat didownload pada alamat ini: http://www.greenfoot.org/book/material/book-scenarios.zip.


CONTOH STORY BOARD YANG AKAN DI BUAT


A. langkah pertama buka lah aplikasi greenfoot berikut tampilan nya

selanjutnya buatlah sekenario  Sceario>NEW masukkan nama program yang akan di buat  

B. Buatlah sebuah subclass world


klik kanan pada subclass world, maka akan tampil jendela baru untuk memberi nama subclass.
Masukkan nama sesuai ke inginan kalian klik import from file untuk menambahkan gambar yang menjadi background/latar, Kemudian klik 2x pada subclass contoh subclas : bg dan masukkan sintak berikut :


import greenfoot.*;
public class bg extends World
{
 // Membuat papan skor pada subclass world
 Counter counter = new Counter("Skor: ");


 public bg()
 {
  // Membuat ukuran layar dengan panjang 900 X tinggi 550 dengan cell 1X1.
  super(900,550,1);
 }
}


C. Membuat subclass Aktor 




D. menambahkan beberapa subclass Aktor klik kanan pada Actor pilih new subclass kemudian akan tampil jendela baru untuk memberi nama subclass dan import from file untuk membuat gambar menjadi aktor. 
E. Menambahkan objek di dalam subclass world


Klik 2x pada subclass bg dan masukkan sintaks berikut ini!
public bg()
 {
  // Membuat ukuran layar dengan panjang 900 X tinggi 550 dengan cell 1X1.
  super(900,550,1);
  // Menambahkan Objek di dalam subclass world
  setPaintOrder(skor.class, fire.class, awan.class, ps.class, ufo.class, Counter.class, pelor1.class, pelor2.class);
  addObject(new awan(),690,20);
  addObject(new ps(),9,220);
  addObject(new ufo(),790,320);
  addObject(counter,120,450);
 }

lalu compile dan lihat tampilan nya


F. Menggerakkan aktor ps (pesawat) dengan mouse
public void act()
 {
  // Menggerakan aktor ps menggunakan mouse
  if(Greenfoot.mouseMoved(null)){
   MouseInfo mouse = Greenfoot.getMouseInfo();
   setLocation(mouse.getX(), mouse.getY());
  }
 }

jangan lupa di compile apakah berfungsi dengan baik 

tambahkan sintaks berikut agar aktor ps (pesawat) dapat menembakkan peluru :
 public void act()
 {
  // Menggerakan aktor ps menggunakan mouse
  if(Greenfoot.mouseMoved(null)){
   MouseInfo mouse = Greenfoot.getMouseInfo();
   setLocation(mouse.getX(), mouse.getY());
  }
  // Menembakkan peluru dengan mengklik kiri mouse
  if(Greenfoot.mouseClicked(null)) {
   pl.addObject(new pelor1(),getX()+getImage().getHeight(),getY());
   Greenfoot.playSound("p1.wav");
  }
 }

Tambahkan lagi sintaks ini agar perintah dapat di laksanakan, masukkan di atas public void act()

 private bg pl;
 public void addedToWorld(World bg){
  pl=(bg)bg;
 }

Kemudian Compile

G. cara agar peluru bergerak dengan memasukkan syntax berikut 
Menggerakkan Peluru
  1. Menggerakkan aktor pelor1
    Masukkan sintaks ini di dalam public void act()
2.   public void act()
3.   {
4.    // Menggerakkan pelor1 dari kiri ke kanan
5.    int x=getX();
6.    int y=getY();
7.    setLocation(x+29,y);
8.    // Jika x melebihi 853 maka aktor pelor1 akan di hilangkan
9.    if(x == 853){
10.   getWorld().removeObject(this);
11.   return;
12.  }
13.  // Membuat aktor ufo menjadi hilang atau hancur
14.  Actor a = getOneObjectAtOffset(0 ,0, ufo.class);
15.  if(a != null){
16.   getWorld().addObject(new fire(),getX(),getY());
17.   getWorld().removeObject(a);
18.   getWorld().removeObject(this);
19.   return;
20.  }
21. }
  1. Menggerakkan aktor pelor2
    Masukkan sintaks ini di dalam public void act()
23. public void act()
24. {
25.  // Menggerakkan pelor2 dari kanan ke kiri
26.  int x=getX();
27.  int y=getY();
28.  setLocation(x-32,y);
29.  // Jika x kurang dari 0 maka aktor pelor1 akan di hilangkan
30.  if(x==0){
31.   getWorld().removeObject(this);
32.   return;
33.  }
34.  // Membuat aktor ps menjadi hilang atau hancur
35.  Actor a = getOneIntersectingObject(ps.class);
36.  if(a != null){
37.   getWorld().addObject(new fire(),getX(),getY());
38.   getWorld().removeObject(a);
39.   getWorld().removeObject(this);
40.   return;
41.  }
42. }
Jangan lupa untuk mengcompile. 

H. Membuat aktor UFO narkoba bergerak dan menembak
masukkan syntax berikut 
public void act()
 {
  // Menggerakan ufo dari kanan ke kiri
  int x=getX();
  int y=getY();
  setLocation(x-2,y);
  // Jika x kurang dari 0 maka aktor ufo akan menghilang
  if(x==0){
   getWorld().removeObject(this);
  }
  // UFO menembak secara otomatis
  if(Greenfoot.mouseMoved(null)){
   MouseInfo mouse=Greenfoot.getMouseInfo();
   if(mouse.getY()>(y-3) && mouse.getY()<(y+3)){
    getWorld().addObject(new pelor2(),getX(),getY());
    Greenfoot.playSound("p2.wav");
   }
  }
 }

lalu compile


I. menggerakkan aktor awan 

 public void act()
 {
  // Menggerakkan awan dari kanan ke kiri
  int x=getX();
  int y=getY();
  setLocation(x-1,y);
  // Jika x kurang dari 0 maka objek akan di hilangkan
  if(x==0){
   getWorld().removeObject(this);
  }
 }
Jangan lupa untuk di compile

J. Membuat efek ledakan animasi masukkan pada sub class yang sudah di buat contoh di sub class fire

import greenfoot.*;
import java.util.*;

public class fire extends Actor
{
 private final static int IMAGE_COUNT= 8;
 private static GreenfootImage[] images;
 private int size=0;
 private int increment=1;   
   
 public fire() {
  initialiseImages();
  setImage(images[0]);     
  // File harus berada di folder sounds
  Greenfoot.playSound("fire.wav");
 }    
   
    /**
     * Create the images for explosion.
     */
 public synchronized static void initialiseImages() {
  if(images == null) {
   GreenfootImage baseImage = new GreenfootImage("fire.png");
   int maxSize = baseImage.getWidth()*2;
   int delta = maxSize / (IMAGE_COUNT+1);
   int size = 0;
   images = new GreenfootImage[IMAGE_COUNT];
   for(int i=0; i < IMAGE_COUNT; i++) {
    size = size + delta;
    images[i] = new GreenfootImage(baseImage);
    images[i].scale(size, size);
   }
  }
 }
 public void act()
 {
  // Add your action code here.
  setImage(images[size]);

  size += increment;
  if(size>=IMAGE_COUNT) {
   increment = -increment;
   size += increment;
  }
       
  if(size <= 0) {
   getWorld().removeObject(this);
  }
 }   
}

lalu compile 



K. selanjutnya adalah membuat skor hasil permainan maka untuk mengethui skor yang di dapat harus memasukkan syntax di dalam subclass counter

import greenfoot.*;
import java.awt.Font;

public class Counter extends Actor
{
    /**
     * Undang - melakukan apapun Counter ingin lakukan. Metode ini disebut setiap kali
      * Yang 'Act' atau tombol 'Run' akan ditekan di lingkungan.
     */
    private int value = 0;
    private int target = 0;
    private String text;
    private int stringLength;

    public Counter()
    {
        this("");
    }

    public Counter(String prefix)
    {
        text = prefix;
        stringLength = (text.length() + 2) * 16;

        setImage(new GreenfootImage(stringLength, 24));
        GreenfootImage image = getImage();
        Font font = image.getFont();
        image.setFont(font.deriveFont(24.0F));  // menggunakan font yang lebih besar
       
        updateImage();
    }
   
    public void act() {
        if(value < target) {
            value++;
            updateImage();
        }
        else if(value > target) {
            value--;
            updateImage();
        }
    }

    public void add(int score)
    {
        target += score;
    }

    public void subtract(int score)
    {
        target -= score;
    }

    public int getValue()
    {
        return value;
    }

    /**
     * Make the image
     */
    private void updateImage()
    {
        GreenfootImage image = getImage();
        image.clear();
        image.drawString(text + value, 1, 18);
    }
}

dan masukkan sintaks ini di coding subclass world bg di bawah public void act() sehingga seperti ini!
 // Penambahan nilai skor
 public void tambah(){
  counter.add(20);
 }

 // Permaianan berakhir
 public void selesai()
 {
  addObject(new skor(counter.getValue()), getWidth()/2, getHeight()/2);
  Greenfoot.stop();
 }

agar skor bertambah ((bg)getWorld()).tambah(); di dalam aktor pelor1

  // Membuat aktor ufo menjadi hilang atau hancur
  Actor a = getOneObjectAtOffset(0 ,0, ufo.class);
  if(a != null){
   getWorld().addObject(new fire(),getX(),getY());
   ((bg)getWorld()).tambah();
   getWorld().removeObject(a);
   getWorld().removeObject(this);
   return;
  }

Dan agar Permainan dapat berakhir ((bg)getWorld()).selesai(); di dalam aktor pelor2

  // Membuat aktor ps menjadi hilang atau hancur
  Actor a = getOneIntersectingObject(ps.class);
  if(a != null){
   getWorld().addObject(new fire(),getX(),getY());
   ((bg)getWorld()).selesai();
   getWorld().removeObject(a);
   getWorld().removeObject(this);
   return;
  }

Kemudian klik Compile


membuat papan skor yang di peroleh saat game selesai atau game over 

Masukkan sintaks pada aktor skor
import greenfoot.*;
import java.awt.Color;
import java.awt.Font;
import java.util.Calendar;

public class skor extends Actor
{
    /**
     * Act - do whatever the skor wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
 public static final float FONT_SIZE = 48.0f;
 public static final int WIDTH = 400;
 public static final int HEIGHT = 300;
   
    /**
     * Create a score board with dummy result for testing.
     */
 public skor(){
  this(100);
 }

    /**
     * Create a score board for the final result.
     */
 public skor(int score){
  makeImage("Game Over", "Skor: ", score);
 }

    /**
     * Make the score board image.
     */
 private void makeImage(String title, String prefix, int score){
  GreenfootImage image = new GreenfootImage(WIDTH, HEIGHT);

  image.setColor(new Color(0, 0, 0, 160));
  image.fillRect(0, 0, WIDTH, HEIGHT);
  image.setColor(new Color(255, 255, 255, 100));
  image.fillRect(5, 5, WIDTH-10, HEIGHT-10);
  Font font = image.getFont();
  font = font.deriveFont(FONT_SIZE);
  image.setFont(font);
  image.setColor(Color.WHITE);
  image.drawString(title, 60, 100);
  image.drawString(prefix + score, 60, 200);
  setImage(image);
 }
 public void act()
 {
  // Add your action code here.
 }   
}

Kemudian Compile



setelah selesai adalah membuat project tersebut menjadi sebuah game dengan cara CTRL+E


 

SELESAI