55
4.1 Implementasi.
4.1.1 Speksifikasi Kebutuhan Sistem
Di bawah ini merupakan spesifikasi kebutuhan dimana sistem yang ada
harus dapat mendukung kerja software yang kita gunakan yaitu Greenfoot:
1.Komputer Dekstop ( hardware )
a. Prosesor Intel Pentium 4 2,4 Ghz
b. DDR2 RAM 1 GB
c. Harddisk 80 GB 5400 RPM
2.Perangkat Lunak( Software )
a. JVM (Java Virtual Machine)
b. JDK 1.5
c. Sistem operasi multiflatform ( windows, linux, dan lainya )
4.2 Tampilan Aplikasi
4.2.1 Tampilan halaman awal
Untuk memulai aplikasi ini penulis membuat halaman muka yang
menampilkan pilihan-pilihan modul yang ingin dijalankan oleh user seperti
gambar berikut:
Gambar 4.1 Halaman awal
Dari tampilan tersebut user dapat memilih salah satu dari empat modul
dengan menekan tombol sesuai dengan perintah yang ada pada tampilan tersebut
yaitu “x” untuk memulai game pengurangan,”z” untuk game penjumlahan,”c”
untuk mengakses game perkalian dan “v’ untuk memulai game pembagian.
Tampilan kode program untuk halaman tersebut adalah:
4.2.2 Tampilan Modul Penjumlahan
Tampilan ini mengambarkan jalannya permainan yaitu objek pertanyaan
yang bergerak dari kanan ke kiri dan objek jawabannya bergerak di bawah dari
kiri ke kanan seperti tampilan pada gambar 4.2.
public class land extends World { public land()
{ super(900, 600, 1); }
public void act() { if(Greenfoot.isKeyDown("x")) { gamePengurangan(); } else if(Greenfoot.isKeyDown("z")) { gamePenjumlahan(); } else if(Greenfoot.isKeyDown("c")) { gamePerkalian(); } else if(Greenfoot.isKeyDown("v")) { gamePembagian(); } }
Gambar.4.2 Tampilan modul penjumlahan
Kode program dari tampilan :
public void gamePenjumlahan() { setBackground("land2.png"); Greenfoot.playSound("underground.mid") ; addObject(new Tambah1(),100,50); addObject(new Tambah2(),70,150); addObject(new Tambah3(),200,100); addObject(new Tambah4(),300,50); addObject(new Tambah5(),800,50); addObject(new Tambah6(),450,150); addObject(new Tambah7(),380,100); addObject(new Tambah8(),500,50); addObject(new Tambah9(),600,100); addObject(new Tambah10(),700,120); addObject(new time(),50,300); addObject(skor,70,280); populate2(); }
public void populate2() { addObject(new Tb1(), 150,450); addObject(new Tb2(), 550,430); addObject(new Tb3(), 50,520); addObject(new Tb4(), 300,540); addObject(new Tb5(), 400,450); addObject(new Tb6(), 600,510); addObject(new Tb7(), 800,480); addObject(new Tb8(), 700,500); addObject(new Tb9(), 280,450); addObject(new Tb10(),450,540); }
public void tambahNilai() {
skor.tambah(20); }
public void selesai() {
addObject(new PapanSkor(skor.nilaiAkhir()*5), 400,250); Greenfoot.playSound("nilhu.mp3") ;
4.2.2.1 Tampilan Pertanyan penjumlahan
Pertanyaan yang telah disediakan akan begerak dari kanan ke kiri, seperti
dalam gambar 4.3:
Gambar 4.3 Tampilan pertanyaan game penjumlahan 1
Gambar 4.4 Tampilan pertanyaan game penjumlahan 2
Dari 2 gambar diatas dapat dilihat perbedaan posisi pertanyaan pada gambar 4.3
dan gambar 4.4. Kode untuk pertanyaan tersebut adalah:
import greenfoot.*;
public class Tambah10 extends Penjumlahan {
public void act() { setLocation(getX()-1, getY()); if(getX()==0) { setLocation(899,getY()); } } }
4.2.2.2 Tampilan Waktu pada penjumlahan
Untuk menentukan batas waktu berlangsungnya game ini,penulis
menggunakan panda yag bergerak dari kiri ke kanan,seperti yang ada pada
gambar.
Gambar 4.5 Pergerakan waktu 1
Gambar 4.6 Pergerakan waktu 2
Gambar 4.7 Hasil akhir user
Dari gambar 4.5 sampai gambar 4.7 dapat dilihat pergerakan panda yang bergerak
ke kanan yang berarati semakin kekanan waktu yang tersisa semakin sedikit dan
dapat mengakhiri permainan.Sedangkan kode program untuk waktu adalah:
4.2.2.3 Tampilan Nilai
Untuk memberi membuat game ini menarik dengan nilai yang didapat
User akan bertambah jika jawaban yang dipilih User sesuai dengan pertanyaan
yang di pilih.contoh nya dapat dilihat pada gambar 4.8.
Gambar 4.8 Tampilan skor saat game baru dimulai
import greenfoot.*;public class time extends Actor {
public void act() { setLocation(getX()+1, getY()); if(getX()==894) { ((land) getWorld()).selesai(); Greenfoot.stop(); } } }
Gambar 4.9 Tampilan skor saat user mendapatkan nilai
Kode untuk nilai diatas adalah
import greenfoot.*; import java.awt.Font; import java.awt.Color;
public class Nilai extends Actor {
private int angka = 0; private int target = 0; private String huruf; private int panjangHuruf; public Nilai(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); }
4.2.2.4 Tampilan Jawaban
Objek jawaban, bergerak dari kiri ke kanan seperti pada gambar di
bawah ini:
Gambar 4.10 Tampilan jawaban 1
Gambar 4.11 Tampilan jawaban 2
Gambar di atas menggambarkan pergerakan yang kode nya dapat dilihat
sebagai berikut:
4.2.3 Tampilan Game Pengurangan
import greenfoot.*;public class Tambah10 extends Penjumlahan {
public void act() { setLocation(getX()+1, getY()); if(getX()==899) { setLocation(0,getY()); } } }
4.2.3 Tampilan Modul Pengurangan
Pada game pengurangan teknik pembuatanya hampir sama dengan game
penjumlahan tapi yang membedakannya selain soal dan jawabannya, disini juga
background diubah agar ada variasi seperti pada gambar.
Gambar 4.12 Tampilan awal game pengurangan
Kode program diatas dapat dilihat dibawah ini
public void gamePengurangan() { setBackground("land1.png"); addObject(new kurang1(),100,50); addObject(new kurang2(),70,150); addObject(new kurang3(),200,100); addObject(new kurang4(),300,50); addObject(new kurang5(),800,50); addObject(new kurang6(),450,150); addObject(new kurang7(),380,100); addObject(new kurang8(),500,50); addObject(new kurang9(),600,100); addObject(new kurang10(),700,120); addObject(new time(),50,300); addObject(skor,70,280); populate1();
public void populate1() { addObject(new Jk1(), 150,450); addObject(new jk2(), 550,430); addObject(new jk3(), 50,520); addObject(new Jk4(), 300,540); addObject(new jk5(), 400,450); addObject(new jk6(), 600,510); addObject(new Jk7(), 800,480); addObject(new jk8(), 700,500); addObject(new Jk9(), 280,450); addObject(new JK10(),450,540); }
public void tambahNilai() {
skor.tambah(20); }
public void selesai() {
addObject(new PapanSkor(skor.nilaiAkhir()*5), 400,250); Greenfoot.playSound("nilhu.mp3") ;
4.2.3.1 Tampilan Pertanyaan Pengurangan
Berikut ini adalah tampilan soal pengurangan yang bergerak dari kanan ke
kiri
Gambar 4.13 Tampilan pergerakan Pertanyaan 1
Gambar 4.14 Tampilan pergerakan Pertanyaan 2
Sedangkan kode programnya sebagai berikut:
import greenfoot;.*;
public class kurang10 extends pengurangan {
public void act() { setLocation(getX()-1, getY()); if(getX()==0) { setLocation(899,getY()); } } }
4.2.3.2 Tampilan Jawaban Pengurangan
Berikut tampilan jawaban dari game pengurangan:
Gambar 4.15 Tampilan pergerakan Jawaban 1
Gambar 4.16 Tampilan pergerakan Jawaban 2
Sedangkan kode dari tampilan di atas adalah
import greenfoot.*;
public class jk8 extends ANGKA {
public void act()
{ setLocation(getX()+1, getY()); if(getX()==894) { setLocation(0,getY()); } } }
4.2.4 Tampilan Game Perkalian
Dalam game perkalian penulis menggunakan background dan cara
bermain yang berbeda, perbedaan ini dibuat agar game lebih menarik seperti pada
gambar.
Gambar 4.17 Tampilan muka game perkalian
Dalam gambar di atas tampak buah apel yang diumpamakan oleh penulis jatuh
dari pohon,di dalam apel itu ada pertanyaan perkalian yang jawabannya terdapat
pada apel di bawahnya,dan jika user dapat mencocokan pertanyaan dengan
jawaban yang benar maka akan muncul pertanyaan selanjutnya.dan kode nya
adalah.
public void gamePerkalian() { setBackground("awal.png"); Greenfoot.playSound("underground.mid") ; addObject(new k1(), Greenfoot.getRandomNumber(620), 0); addObject(skor,70,280); populate3();
{
addObject(new k2(), 100, 0); }
public void lanjut2() {
addObject(new k3(), Greenfoot.getRandomNumber(620), 0); }
public void lanjut3() {
addObject(new k4(), Greenfoot.getRandomNumber(620), 0); }
public void lanjut4() {
addObject(new k5(), Greenfoot.getRandomNumber(620), 0); }
public void lanjut5() {
addObject(new k6(), Greenfoot.getRandomNumber(620), 0); }
public void lanjut6() {
addObject(new k7(), Greenfoot.getRandomNumber(620), 0); }
public void lanjut7() {
addObject(new k8(), Greenfoot.getRandomNumber(620), 0); }
public void lanjut8() {
addObject(new k9(), Greenfoot.getRandomNumber(620), 0); }
public void lanjut9() {
addObject(new k10(), Greenfoot.getRandomNumber(620), 0); }
4.2.4.1 Tampilan pertanyaan game perkalian
Seperti telah dijalaskan diatas,pertanyaan di game perkalian ini
bergerakdari atas kebawah,seperti pada gambar dibawah.
Gambar 4.18 Tampilan pergerakan game perkalian 1
Untuk kode dari tampilan pertanyaan itu adalah:
4.2.4.2 Tampilan jawaban game perkalian
Dalam game perkalian berbeda dengan dua game sebelumnya, yaitu onjek
jawaban bergerak,dalam game ini objek jawaban hanya diam dan tidak bergerak.
Gambar 4.20 Tampilan jawaban perkalian
Untuk kode tampilannya sebagai berikut:
import greenfoot.*;
public class k10 extends perkalian {
public void act() { setLocation(getX(), getY()+1); if (getY()==700) { ((land) getWorld()).lanjut3(); getWorld().removeObject(this); } } }
4.2.5 Tampilan Game Pembagian
Game pembagian ini menempatkan objek pertanyaan seperti game
penjumlahan dan pengurangan. Tapi di sini waktunya yang berbeda, karena objek
jawaban yang akan menentukan waktu game akan berakhir.
Gambar 4.21 Tampilan muka game pembagian
Kode dari tampilan gambar di atas:
public void populate3() { addObject(new a(),170,570); addObject(new b(),250,550); addObject(new c(),330,480); addObject(new d(),400,400); addObject(new e(),570,440); addObject(new f(),660,570); addObject(new g(),760,500); addObject(new h(),860,530); addObject(new i(),80,570); addObject(new j(),500,570); }
public void gamePembagian() { setBackground("tom.jpg"); populate4(); addObject(new Jba(), 10, 550); addObject(skor,70,280); }
public void populate4() { addObject(new Jb1(),50,40); addObject(new Jb2(),200,40); addObject(new Jb3(),350,40); addObject(new Jb4(),500,40); addObject(new Jb5(),650,40); addObject(new Jb6(),850,150); addObject(new Jb7(),700,150); addObject(new Jb8(),550,150); addObject(new Jb9(),400,150); addObject(new Jb10(),250,150); }
public void sambung1() {
addObject(new Jbb(), 10, 550); }
public void sambung2() {
addObject(new Jbc(),10, 550); }
public void sambung3() {
addObject(new Jbd(), 10, 550); }
public void sambung5() {
addObject(new Jbf(), 10, 550); }
public void sambung6() {
addObject(new Jbg(), 10, 550); }
public void sambung7() {
addObject(new Jbh(), 10, 550); }
public void sambung8() {
addObject(new Jbi(), 10, 550); }
public void sambung9() {
addObject(new Jbj(), 10, 550); }
4.2.5.1 Tampilan Soal game pembagian
Soal dari game pembagian ini bergerak secara berbeda,lima dari kiri
kekanan,dan lima dari kanan ke kiri.Seperti yang ada pada gambar dibawah.
Gambar 4.22 Pergerakan soal 1
Gambar 4.23 Pergerakan soal 2
Kode untuk 5 tampilan diatas adalah:
Kode tampilan soal yang dibawah adalah:
import greenfoot.*;public class Jb1 extends Pembagian {
public void act()
{ setLocation(getX()+1, getY()); if(getX()==894) { setLocation(0,getY()); } } }
4.2.5.2 Tampilan jawaban di game pembagian
Untuk jawaban digame ini berfungsi juga untuk menentukan waktu
berakhir game ini.
Gambar 4.24 Pergerakan jawaban 1
Gambar 4.25 Pergerakan jawaban 2
import greenfoot.*;public class Jb1 extends Pembagian {
public void act()
{ setLocation(getX()+1, getY()); if(getX()==0) { setLocation(894,getY()); } } }
Kode nya adalah sebagai berikut:
\
4.2.5.3 Tampilan waktu game pembagian
Gambar 4.26 Tampilan waktu dalam game pembagian
import greenfoot.*;public class Jbj extends ANGKA {
public void act() {
setLocation(getX()+1, getY()); }
Kode nya adalah:
4.2.6 Tampilan drag and drop
Game ini menggunakan sistem drag and drop agar user bisa
memainkannya dengan mudah,selain itu juga dapat membuat interaksi antara user
dan komputer.
Gambar 4.27 Drag and Drop game perkalian
import greenfoot.*;public class Jbi extends ANGKA {
public void act() { setLocation(getX()+1, getY()); if (getX()==450) { ((land) getWorld()).sambung9(); } if(getX()==894) { ((land) getWorld()).selesai(); Greenfoot.stop(); } } }
Gambar 4.28 Drag and Drop game pengurangn
Gambar 4.29 Drag and drop game pembagian
Kode dari tampilan ini adalah:
if (Greenfoot.mouseDragged(this)) {MouseInfo mouse = Greenfoot.getMouseInfo(); setLocation(mouse.getX(), mouse.getY()); }
if(Greenfoot.mouseClicked(null)) { int x = -getImage().getWidth()/4; int y = +getImage().getHeight()/4;
Jba jba=(Jba) getOneObjectAtOffset(x , y, Jba.class); if(jba!= null) {
jba.pop();
getWorld().removeObject(this); }
}
public void pop() {
((land) getWorld()).tambahNilai(); getWorld().removeObject(this); }