Cara Menmbuat Bola Pantul Dari GreenFoot
Tutorial Greenfoot kali ini saya akan membuat game Bola Pantul.
- Buatlah project baru beri nama Bola pantul/Bounce Ball
- Buat class World baru dengan cara klik kanan>>new subclass>>masukkan nama class, begitu juga dengan class actor caranya sama. Tampilannya akan seperti di bawah.
- Masukkan kode di bawah pada class bg (nama subclass world)import greenfoot.*;import javax.swing.JOptionPane;/*** Write a description of class bg here.** @author Aldio* @version trial*/public class bg extends World{counter counter = new counter(“Skor: “);skor skor = new skor();player player = new player();ball ball = new ball();tembok tembok = new tembok();tembok tembok1 = new tembok();tembok tembok2 = new tembok();tembok tembok3 = new tembok();tembok tembok4 = new tembok();/*** Constructor for objects of class bg.**/public bg(){// Create a new world with 600×400 cells with a cell size of 1×1 pixels.super(600, 400, 1);setPaintOrder(counter.class, player.class, skor.class, tembok.class, ball.class);addObject(counter,155,380);//meltakkan posisi caption skoraddObject(player,321,360);//meletakkan posisi tembok pemantuladdObject(ball,320,335);//meletakkan posisi bolaaddObject(tembok,100,35);//meletakkan posisi tembokaddObject(tembok1,170,75);//meletakkan posisi tembokaddObject(tembok2,200,135);//meletakkan posisi tembokaddObject(tembok3,400,135);//meletakkan posisi tembokaddObject(tembok4,500,35);//meletakkan posisi tembokprepare();}public void act(){if(Greenfoot.getRandomNumber(1000)<4){addObject(new tembok(),Greenfoot.getRandomNumber(100),Greenfoot.getRandomNumber(170)); //menampilkan class tembok agar tampil secara acak}if(Greenfoot.isKeyDown(“space”)){//menggunakan tombol spasi untuk menghentikan sementara gameGreenfoot.stop();}}public void tambah(){counter.add(5);}/*** Called when game is up. Stop running and display score*/public void selesai(){addObject(new skor(counter.getValue()), getWidth()/2, getHeight()/2);//menampilkan pesan “Game Over dan skor terakhir yg diperoleh”}/*** Prepare the world for the start of the program. That is: create the initial* object and add them to the world*/private void prepare(){}}Lalu klick compile
- Masukkan juga kode di bawah ini pada class ball agar bola dapat bergerak dan memantul pada dindingimport greenfoot.*;/**
* Write a description of class ball here.
*
* @author Aldio
* @version trial
*/
public class ball extends Actor
{
int x=3;
int y=3;
/**
* Act – do whatever the ball wants to do. This method is called whenever
* the ‘Act’ or ‘Run’ button gets pressed in the environment.
*/
public void act()
{
// Add your action code here.
gerak();
kanan();
kiri();
atas();
player();
}
public void gerak()
{
setLocation(getX()+x,getY()+y);
}
public void kanan()
{
if(getX()>=getWorld().getWidth()-getImage().getWidth()/2){
x=x-1;
}
}
public void kiri()
{
if(getX()<=getImage().getWidth()/2){
x=x+1;
}
}
public void atas()
{
Actor tembok=getOneIntersectingObject(tembok.class);
if(getY()<=getImage(). getHeight()/2){
y=y+1;
}
if(tembok !=null){
((bg)getWorld()).tambah();
//jika subclass ball berhasil menabrak tembok dan pecah, akan ditambahkan poinnya
getWorld(). removeObject(tembok);
}
}
public void player()
{
Actor box=getOneIntersectingObject(player.class);
if(box !=null){
y=y-1;
}
if(getY()>=getWorld().getHeight()-getImage().getHeight()/2){
Greenfoot.stop();
((bg)getWorld()).selesai();
}
}
} - Masukkan juga kode di bawah ini pada class counterimport greenfoot.*;
import java.awt.Font; //Tambahkan Font
/**
* Write a description of class counter here.
*
* @author Aldio
* @version trial
*/
public class counter extends Actor
{
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)); // use larger fontupdateImage ();
}
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);
}} - Masukkan juga kode di bawah ini pada class skorimport greenfoot.*;
import java.awt.Color;
import java.awt.Font;
import java.util.Calendar;/**
* Write a description of class skor here.
*
* @author Aldio
* @version trial
*/
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 fot testing.
*/
public skor() {
this (25);
}/**
* Create a score board for the final result.
*/
public skor(int score) {
makeImage(“GAME OVER”, “Skor Anda: “, 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(14, 14, 89, 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.
}
} - Masukkan juga kode di bawah ini pada class playerimport greenfoot.*;/**
* Write a description of class player here.
*
* @author Aldio
* @version trial
*/
public class player extends Actor
{
/**
* Act – do whatever the player wants to do. This method is called whenever
* the ‘Act’ or ‘Run’ button gets pressed in the environment.
*/
public player()
{
// Add your action code here.
GreenfootImage img=getImage();
img.scale(img.getWidth()+30,img.getHeight()-60);
setImage(img);
}
public void act(){
if(Greenfoot.isKeyDown(“left”)){
move(-3);
}
if(Greenfoot.isKeyDown(“right”)){
move(3);
}
if(Greenfoot.mouseMoved(null)){
MouseInfo mouse = Greenfoot.getMouseInfo();
setLocation(mouse.getX(),360);}
}
}
setelah semuanya di compile dan hasilnya seperti gambar di bawah