BAB IV IMPLEMENTASI DAN PENGUJIAN
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:
55
56
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:
57 import greenfoot.*; 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(); } }
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.
58
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(); }
59
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") ; }
60
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()); } } }
61
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:
62
import greenfoot.*; public class time extends Actor { public void act() { setLocation(getX()+1, getY()); if(getX()==894) { ((land) getWorld()).selesai(); Greenfoot.stop(); } } }
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
63
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); }
64
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: import greenfoot.*; public class Tambah10 extends Penjumlahan { public void act() { setLocation(getX()+1, getY()); if(getX()==899) { setLocation(0,getY()); } } } 4.2.3 Tampilan Game Pengurangan
65
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();
66
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") ; }
67
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()); } } }
68
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()); } } }
69
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();
70 public void lanjut1() { 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); }
71
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
Gambar 4.19 Tampilan pergerakan game perkalian 2
72
Untuk kode dari tampilan pertanyaan itu adalah: 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.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:
73
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); }
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:
74
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); }
75
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); }
76
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: import greenfoot.*; public class Jb1 extends Pembagian { public void act() { setLocation(getX()+1, getY()); if(getX()==894) { setLocation(0,getY()); } dibawah adalah: Kode tampilan soal yang } }
77
import greenfoot.*; public class Jb1 extends Pembagian { public void act() { setLocation(getX()+1, getY()); if(getX()==0) { setLocation(894,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
78
Kode nya adalah sebagai berikut: import greenfoot.*;
\ public class Jbj extends ANGKA { public void act() { setLocation(getX()+1, getY()); }
4.2.5.3 Tampilan waktu game pembagian
Gambar 4.26 Tampilan waktu dalam game pembagian
79
Kode nya adalah: 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(); } } }
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
80
Gambar 4.28 Drag and Drop game pengurangn
Gambar 4.29 Drag and drop game pembagian
Gambar 4.30 Drag and Drop game perkalian
81
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); }
82
4.3 Pengujian Pada Perancangan ini apliksi permainan perlu dilakukan pengujian aplikasi yang dibuat oleh penulis sebagai vertifikasi atas apa yang telah dirancang.Hal ini dilakukan karena untuk menguji kemungkinan terjadi kesalahan dan untuk memastikan fungsi-fungsi dalam modul aplikasi ini dapat berjalan dengan baik.Tahapan ini meliputi skenario pengujian aplikasi.
4.3.1 Metode BlackBox Testing Adalah pengujian dengan metode test dari perspektif eksternal, tidak ada informasi mengenai internal software. Pengujian ini dilakukan baik secara fungsional ataupun nonfungsional, walaupun umumnya yang dilakukan adalah fungsional. Pengujian ini dapat dilakukakn pada semu level test, semakin tinggi level yang diuji semakin besar kemungkinan untuk melakukan blackbox testing. Pengujian ini dapat mendeteksi adanya bagian dari spesifikasi yang tidak di implementasikan, tetapi kelemahannya tidak bisa mendeteksi adanya bagian dari speksifikasi kemungkinan kesalahan implementasi. Pengujian metode blackbox testing dilakukan dengan menjalankan aplikasi “Game Pembelajaran” ini terlebih dahulu.setelah itu
dilakukan dengan
mempraktekkan fungsi-fungsi yang objek yang ada pada aplikasi apakah berfungsi sebagaimana mestinya.