Sabtu, 16 Maret 2013

Pengalaman Membangun Sistem Informasi

Disini saya akan menceritakan pengalaman saat pertama kali dalam membangun sistem informasi. Sistem informasi adalah sistem yang menyediakan informasi yang bermanfaat bagi penggunanya dan menghasilkan informasi yang  akurat serta relevan. Pengalaman saya ini saya dapat ketika saya mengikuti kursus, kursus yang saya ikuti yaitu MIDlet J2ME (Java2 Micro Edition). Banyak aplikasi yang bisa dibuat oleh bahasa pemrograman java. Pada saat itu saya membuat program sederhana berupa aplikasi game.

           Pada pembuatan program game sederhana, saya dibantu oleh para tutor yang mengajar. Pembuatan program game tersebut dibutuhkan aplikasi Wireless Toolkit 2.5.1. Aplikasi tersebut hanya diperlukan untuk pembuatan aplikasi hp yang berbasis java. Disini saya akan menjelaskan sedikit pengalaman saya dalam membangun sistem informasi.

Sebelum masuk ke langkah-langkah pembuatan Aplikasi game ini, saya akan menunjukan tampilan akhir dari game yang akan kita buat ini, hasilnya adalah sebagai berikut :
Setelah mengetahui hasil akhir dari program tersebut, maka ada beberapa hal yang harus dipersiapkan ,yaitu:
Background yang dibuat 2 kali dari tinggi layar yang berfungsi sebagai langit yang disimpan dengan nama daratan.gif


file music yang berupa format wav (digunakan untuk suara pada saat pesawat meledak dan music pada background) yang terdiri dari explode.wav dan background.wav

Setelah semua yang harus disiapkan selesai, maka untuk langkah-langkah pembuatannya, adalah sebagai berikut :

Langkah pertama yang akan dilakukan adalah membuat sebuah MIDlet untuk menampilkan berbagai tipe choice dan implementasinya pada List. langkah yang di lakukan pertama kali yaitu :
membuka aplikasi Wireless Toolkit 2.5.1 pada komputer. Setelah masuk ke dalam aplikasi Wireless Toolkit 2.5.1, lalu klik pada menu new project seperti pada gambar berikut :
Setelah itu isi pada “Project name” dan “MIDlet name” dengan nama PlaneSpace:
Selanjutnya pada “API Selection”, pilih JTWI pada Target Platform, setelah itu OK:
Setelah selesai dalam pembuatan project baru, selanjutnya silahkan buka notepad, kita akan membuat kelas Plane Space.java dan kelas Play.java, source code dari masing-masing kelas adalah sebagai berikut :

Class PlaneSpace.java:

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
public class PlaneSpace     extends MIDlet implements PlayerListener {
private Play play;
private Display display;
private static Player player;
private VolumeControl vc;
public PlaneSpace() {
display = Display.getDisplay(this);
}
public void startApp() {
try {
playMedia(“background.wav”);
} catch (Exception e) {
e.printStackTrace();
}
play = new Play(this, display, player);
play.setFullScreenMode(true);
display.setCurrent(play);
new Thread(play).start();
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {
if(player != null){
player.close();
}
}
public void exitMIDlet() {
destroyApp(false);
notifyDestroyed();
}
private void playMedia(String file)
throws Exception {
player = Manager.createPlayer(getClass().getResourceAsStream(file), “audio/x-wav”);
player.addPlayerListener(this);
player.setLoopCount(-1);
player.prefetch();
player.realize();
vc = (VolumeControl)player.getControl(“VolumeControl”);
if (vc != null)
vc.setLevel(30);
player.start();
}
public void playerUpdate(Player player, String event, Object eventData) {
if(event.equals(PlayerListener.STARTED) &&
new Long(0L).equals((Long)eventData)) {
} else if(event.equals(PlayerListener.CLOSED)) {
}
}
};
Class Play.java

import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import java.io.*;
import java.util.Random;

class Play extends Canvas implements CommandListener, Runnable, PlayerListener {
private PlaneSpace midlet;
private Display display;
private Command cmExit;
private int y = 0;
private int px = 76;
private int py = 180;
private boolean yes = true;
private String bgImgN = “/daratan.gif”;
private Image bgImg = null;
private int randRange = 20;
private int[] bombX = new int[randRange];
private int[] bombY = new int[randRange];
private int xScreen = 176;
private int yScreen = 208;
private int ySkyEdge = 500;
private int hplane = 23;
private int wplane = 21;
private int bombAmount = 0;
private int whbomb = 15;
private boolean first = true;
private int minIndex = 0;
private Random random;
private boolean gameover = false;
private Player player;
private VolumeControl vc;
private int gauge = 1000;
public Play(PlaneSpace midlet, Display display, Player player) {
random = new Random();
this.midlet = midlet;
this.display = display;
this.player = player;
cmExit = new Command(“Keluar”, Command.OK, 1);
addCommand(cmExit);
setCommandListener(this);
try {
bgImg = Image.createImage(bgImgN);
} catch (java.io.IOException e) {
}
}
protected void paint(Graphics g) {
g.setClip(0,0,xScreen,yScreen);
g.drawImage(bgImg,0,-y,Graphics.TOP|Graphics.LEFT);
g.setColor(255, 255, 255);
g.fillRect(5, 5, 105, 10);
int tmp = gauge;
if(gauge > 1000){
tmp = 100;
}else{
tmp = (int)((gauge * 100) / 1000);
}
g.setColor(0, 0, 0);
g.fillRect(5, 5, (tmp + 5), 10);
if(gameover == true){
g.setColor(254, 22, 57);
g.setFont(Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD,Font.SIZE_LARGE));
g.drawString(“Game Over”,40,((yScreen / 2) – 30), Graphics.TOP | Graphics.LEFT);
g.drawString(“anda belum beruntung”,3,((yScreen / 2) – 15), Graphics.TOP | Graphics.LEFT);
g.drawString(“Tugas Mobile”,33,((yScreen / 2) – 0), Graphics.TOP| Graphics.LEFT);
g.drawString(“computing”,40,((yScreen / 2) + 15), Graphics.TOP | Graphics.LEFT);
}
int xpic;
int ypic;
if((shooted() == true)||(gauge <= 0)){
gameover = true;
g.setClip((px – 2),(py – 2),35,35);
xpic = 110;
ypic = 500;
g.drawImage(bgImg,(px – 2) – xpic,-(ypic – (py – 2)),Graphics.TOP|Graphics.LEFT);
}else{
if((bombY[minIndex] >= (yScreen – 15))||(first == true)){
generateBomb();
if(first == true){
first = false;
}
}else{
    for(int i=0;i<bombAmount;i++) {
    bombY[i]++;
    if(bombY[i] > yScreen){
    gauge = gauge + 3;
    }
    }
    }
    xpic = 77;
    ypic = 509;
    for(int i=0;i<bombAmount;i++) {
    if(bombY[i] <= (yScreen – 25)){
    g.setClip(bombX[i],bombY[i],whbomb,whbomb);
    g.drawImage(bgImg,bombX[i] – xpic,-(ypic – bombY[i]),Graphics.TOP|Graphics.LEFT);
    }
    }
    g.setClip(px,py,hplane,wplane);
    xpic = 15;
    ypic = 503;
    g.drawImage(bgImg,px – xpic,-(ypic – py),Graphics.TOP|Graphics.LEFT);
    }
    }
    
    protected void keyPressed(int keyCode) {
    switch (keyCode) {
    case -1: // UP
    py = py – 10;
    if(py < 0){
    py = py + 10;
    }
    break;
    case -2: // DOWN
    py = py + 10;
    if(py > (yScreen – hplane)){
    py = py – 10;
    }
    break;
    case -3: // LEFT
    px = px – 10;
    if(px < 0){
    px = px + 10;
    }
    break;
    case -4: // RIGHT
    px = px + 10;
    if(px > (xScreen – wplane)){
    px = px – 10;
    }
    break;
    }
    }
    
    public void commandAction(Command c, Displayable s) {
    if (c == cmExit) {
    yes = false;
    midlet.exitMIDlet();
    }
    }
    
    public void run() {
    while (gameover == false) {
    try {
    synchronized (this) {
    if(y <= 0){
    y = ySkyEdge – yScreen;
    }else{
    y–;
    }
    Thread.sleep(10);
    gauge = gauge – 3;
    repaint();
    }
    } catch (Exception ie) {
    }
    }
    if(gameover == true){
    bombAmount = 0;
    try {
    Thread.sleep(1500);
    player.stop();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
    
    public void generateBomb(){
    bombAmount = random.nextInt() % randRange;
    if(bombAmount < 1){
    bombAmount = randRange;
    }
    random.setSeed(xScreen);
    for(int i=0;i<bombAmount;i++){
    int xBomb = random.nextInt() % (xScreen – 50);
    int yBomb = random.nextInt() % (yScreen – 25);
    if(xBomb < 0){
    xBomb = xBomb + (xScreen – 50);
    }
    bombX[i] = xBomb;
    bombY[i] = yBomb – (yScreen – 25);
    }
    minIndex = 0;
    int min = bombY[minIndex];
    for(int i=1;i<bombAmount;i++) {
    if(min > bombY[i]){
    min = bombY[i];
    minIndex = i;
    }
    }
    }
    boolean shooted(){
    boolean res = false;
    int i=0;
    while((res == false)&&(i < bombAmount)) {
    if(inPlaneRange(bombX[i], bombY[i]) == true){
    res = true;
    try {
    playMedia(“explode.wav”);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    i++;
    }
    return res;
    }
    boolean inPlaneRange(int x, int y){
    boolean res = false;
    if((x >= px)&&(x <= (px + wplane))&&(y >= py)&&(y <= (py + hplane))){
    res = true;
    }
    return res;
    }
    private void playMedia(String file)
    throws Exception {
    player = Manager.createPlayer(getClass().getResourceAsStream(file), “audio/x-wav”);
    player.addPlayerListener(this);
    player.setLoopCount(-1);
    player.prefetch();
    player.realize();
    vc = (VolumeControl)player.getControl(“VolumeControl”);
    if (vc != null)
    vc.setLevel(30);
    player.start();
    }    
    public void playerUpdate(Player player, String event, Object eventData) {
    if(event.equals(PlayerListener.STARTED) &&
    new Long(0L).equals((Long)eventData)) {
} else if(event.equals(PlayerListener.CLOSED)) {
}
}
}

Selanjutnya, setelah source code tersebut di tuliskan di notepad tadi, selanjutanya kedua class yang di buat tadi di simpan pada folder : C:\WTK2.5.1\apps\PlaneSpace\src.

Lalu kembali pada aplikasi Wireless Toolkit 2.5.1, dan pilh Run.maka program game tersebut telah dapat dijalankan

Mainkan permainan dengan tombol up, down, right, left untuk menghindari pesawat dari bom, apabila pesawat berhasil menghindari bom maka gauge akan bertambah dan apabila pesawat terkena bom maka akan Game Over

Demikian lah sedikit cerita saya mengenai pengalaman dalam membangun sistem informasi, lebih kurangnya saya mohon maaf :)

Tidak ada komentar:

Posting Komentar