Pemrograman Game Sederhana J2me.docx

  • Uploaded by: Yoga Prasetio
  • 0
  • 0
  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Pemrograman Game Sederhana J2me.docx as PDF for free.

More details

  • Words: 1,733
  • Pages: 23
UNIVERSITAS GUNADARMA

Nama Kelompok : Ibnu Fadhil Ramdan (52417793)

Kelompok 10

Sakhta Busyra

(55417457)

Yoga Prasetio

(57417275)

: Pembuatan Program Game J2ME Hiburan

BAB I I. Design Program a. Pertama design visual midlet pada netbeans terlebih dahulu seperti gambar di bawah ini.

Tambahkan form baru untuk membuat splashscreen, main menu yang berisi play, help, about, dan exit lalu help form dan about form seperti gambar di atas. Lalu arahkan tanda panah untuk memberi petunjuk kemana pilihan selanjutnya jika kita memilih command atau form-form di atas seperti gambar di atas. Pada saat tampilan awal mobile device kita akan langsung menuju ke splashscreen seperti tanda panah yang sudah kita arahkan di atas. Dari splashscreen kita akan memasukin MainMenu dimana terdapat 4 Menu yaitu play untuk memulai game, Help untuk menuju ke helpform, about untuk menuju ke about form dan juga exit untuk keluar dari main Menu. Selanjutnya kita akan mendesign karakter pada game design untuk memasukkan karakter yang kita inginkan ke dalam game.

b. Kedua kita akan mendesign karakter pada platform game design. Untuk mendesign karakter yang ingin kita masukan ke dalam game sediakan terlebih dahulu karakter yang ingin kita gunakan. Pada game kali ini saya menggunakan gambar laba-laba, bola, wadah, dan juga background untuk layer dan juga splashscreen.

Gambar di atas untuk mengisi background, karakter laba-laba, bola, dan juga wadah pada saat game akan di mainkan, perhatikan nama pada gambar tersebut karena berhubungan pada saat penggunaan variable di dalam program nanti. Selanjutnya kita akan masuk ke tahap pemrograman. c. Ketiga tahap memasukan program game pada kelas java.

Pada saat pemrograman ada beberapa tahapan yang harus kita lewati dalam pembuatan program game. Pertama kita akan meloading semua karakter sprite ke dalam screen, kedua menggerakan sprite laba-laba, ketiga mengabil, membawa dan menyatukan bola sesuai warna, keempat penilaian, dan yang kelima countdown dan notifikasi menang/kalah.

Langsung saja ke tahap yang pertama yaitu program untuk meloading semua karakter sprite ke dalam screen. package hello;

import java.io.IOException; import java.util.Random; import javax.microedition.lcdui.Graphics;

ini adalah import pada

import javax.microedition.lcdui.game.GameCanvas;

untuk menyediakan

import javax.microedition.lcdui.game.LayerManager;

penggunaan pada variable.

import javax.microedition.lcdui.game.Sprite; import javax.microedition.lcdui.game.TiledLayer;

public class Game extends GameCanvas implements Runnable{ Sprite sprite_laba; Sprite sprite_bola[] = new Sprite[8]; ( ini adalah array untuk menginput bola yang kita

masukan tadi) String nama_bola[] {"biru","Coklat","Hijau","Hitam","Kuning","Merah","Orange","Ungu"};

=

Sprite sprite_lingkaran[] = new Sprite[8]; ( begitu juga dengan lingkaran) String nama_lingkaran[] {"biru","Coklat","Hijau","Hitam","Kuning","Merah","Orange","Ungu"};

=

TiledLayer background; LayerManager layer_manager; GameDesign game_design;

Random r = new Random(); (ini adalah variable untuk merandom bola dan lingkaran) public Game(){ super(false); try{

game_design = new GameDesign(); (ini adalah penambahan variable game design) sprite_laba = game_design.getLabalaba(); (ini penambahan variable sprite laba-laba) layer_manager = new LayerManager(); (ini untuk variable layer manager)

for(int i =0; i<sprite_bola.length;i++){ sprite_bola[i] = new Sprite(game_design.getBola()); sprite_bola[i].setFrame(i); layer_manager.append(sprite_bola[i]); }

for(int i =0; i<sprite_lingkaran.length;i++){ sprite_lingkaran[i] = new Sprite(game_design.getLingkaran()); sprite_lingkaran[i].setFrame(i); layer_manager.append(sprite_lingkaran[i]); }

background = game_design.getBackground(); game_design.updateLayerManagerForScene(layer_manager); }catch(IOException ex){} acakBolaDanLingkaran(); start(); }

public int getRandomNumber(int maks){ (ini adalah perintah untuk merandom bola

dan lingkaran) int a = r.nextInt()%maks; if(a<0) a*=-1; return a; }

public void acakBolaDanLingkaran(){ for(int i=0; i<sprite_bola.length;i++){ int x = getRandomNumber(background.getWidth()); int y = getRandomNumber(background.getHeight()); sprite_bola[i].setPosition(x, y); } for(int i=0; i<sprite_lingkaran.length;i++){ int x = getRandomNumber(background.getWidth()); int y = getRandomNumber(background.getHeight()); sprite_lingkaran[i].setPosition(x, y); } }

public void start(){ Thread t = new Thread(this); t.start(); } public void run() { Graphics g = getGraphics(); drawScreen(g); } public void drawScreen(Graphics g){ layer_manager.paint(g, 0, 0); }

}

Setelah program di atas selesai kita baru saja merandom bola dan lingkaran pada screen. Selanjutnya kita akan melaju ke tahap berikutnya yaitu menggerakan laba-laba, mengambil dan menyatukan warna bola dan wadah, penilaian, dan countdown serta hasil win/lose. package hello; import java.io.IOException; import java.util.Random; import java.util.Timer; import java.util.TimerTask; import javax.microedition.lcdui.Font; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.game.GameCanvas; import javax.microedition.lcdui.game.LayerManager; import javax.microedition.lcdui.game.Sprite; import javax.microedition.lcdui.game.TiledLayer; public class Game extends GameCanvas implements Runnable{ Sprite sprite_laba; Sprite sprite_bola[] = new Sprite[8]; String nama_bola[] {"biru","Coklat","Hijau","Hitam","Kuning","Merah","Orange","Ungu"}; Sprite sprite_lingkaran[] = new Sprite[8]; String nama_lingkaran[] {"biru","Coklat","Hijau","Hitam","Kuning","Merah","Orange","Ungu"}; TiledLayer background; LayerManager layer_manager; GameDesign game_design; Random r = new Random(); boolean is_play; int last_direction; boolean is_bringing_theball = false; int index_bola_yg_dibawa; int index_lingkaran_yg_tersedia; int score; int time;

=

=

Timer timer; public Game(){ super(false); try{ game_design = new GameDesign(); sprite_laba = game_design.getLabalaba(); layer_manager = new LayerManager(); for(int i =0; i<sprite_bola.length;i++){ sprite_bola[i] = new Sprite(game_design.getBola()); sprite_bola[i].setFrame(i); layer_manager.append(sprite_bola[i]); } for(int i =0; i<sprite_lingkaran.length;i++){ sprite_lingkaran[i] = new Sprite(game_design.getLingkaran()); sprite_lingkaran[i].setFrame(i); layer_manager.append(sprite_lingkaran[i]); } background = game_design.getBackground(); game_design.updateLayerManagerForScene(layer_manager); }catch(IOException ex){} acakBolaDanLingkaran(); start(); } public int getRandomNumber(int maks){ int a = r.nextInt()%maks; if(a<0) a*=-1; return a; } public void acakBolaDanLingkaran(){ for(int i=0; i<sprite_bola.length;i++){ int x = getRandomNumber(background.getWidth()); int y = getRandomNumber(background.getHeight()); sprite_bola[i].setPosition(x, y); } for(int i=0; i<sprite_lingkaran.length;i++){ int x = getRandomNumber(background.getWidth()); int y = getRandomNumber(background.getHeight());

sprite_lingkaran[i].setPosition(x, y); } } public void start(){ startTimer(); is_play = true; Thread t = new Thread(this); t.start(); }

public void run() { Graphics g = getGraphics(); while(is_play == true){ input(); if(is_bringing_theball){ sprite_bola[index_bola_yg_dibawa].setPosition(sprite_laba.getX(), sprite_laba.getY()); } adjustScreen(); drawScreen(g); if(time<0){ is_play = false; timer.cancel(); } try{ Thread.sleep(30); }catch(InterruptedException ex){ ex.printStackTrace(); } } } public void drawScreen(Graphics g){ g.setColor(255, 255, 255); g.fillRect(0, 0, getWidth(), getHeight()); layer_manager.paint(g, 0, 0); g.setColor(0, 0, 0); g.drawString("Score: "+score, getWidth(), 0, Graphics.RIGHT | Graphics.TOP); g.drawString("Time left: "+time, 0, 0, Graphics.LEFT | Graphics.TOP); flushGraphics(); }

public void moveCharacter(int direction){ if(last_direction != direction){ switch(direction){ case UP: sprite_laba.setFrameSequence(game_design.labalaba_top); break; case DOWN: sprite_laba.setFrameSequence(game_design.labalaba_bottom); break; case LEFT: sprite_laba.setFrameSequence(game_design.labalaba_left); break; case RIGHT: sprite_laba.setFrameSequence(game_design.labalaba_right); break; } last_direction = direction; } switch(direction){ case UP: if (sprite_laba.getY()-2>0){ sprite_laba.move(0, -2); } break; case DOWN: if(sprite_laba.getX()+2 < background.getHeight()){ sprite_laba.move(0, 2); } break; case LEFT: if(sprite_laba.getX()-2>0){ sprite_laba.move(-2, 0); } break; case RIGHT: if(sprite_laba.getX()+2 < background.getWidth()){ sprite_laba.move(2, 0); } break; }

sprite_laba.nextFrame(); } public void input(){ int states = getKeyStates(); if((states & UP_PRESSED)!=0){ moveCharacter(UP); } if((states & DOWN_PRESSED)!=0){ moveCharacter(DOWN); } if((states & LEFT_PRESSED)!=0){ moveCharacter(LEFT); } if((states & RIGHT_PRESSED)!=0){ moveCharacter(RIGHT); } } public void adjustScreen(){ int xmax = getWidth()-40; int ymax = getHeight() - 40; int xmin = 20; int ymin = 20; int viewX = 20; int viewY = 20; if(sprite_laba.getX()>viewX+xmax){ viewX = sprite_laba.getX()-xmax; if(viewX+getWidth()>background.getWidth()){ viewX = background.getWidth()-getWidth(); } } if(sprite_laba.getY()>viewY+ymax){ viewY = sprite_laba.getY()-ymax; if(viewY+getHeight()>background.getHeight()){ viewY = background.getHeight()-getHeight(); } } if(sprite_laba.getX()
} } if(sprite_laba.getY()
time = 120; timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask(){

public void run() { time --; } }, 1000, 1000); } public void drawOverScreen(Graphics g){ g.setColor(255, 255, 255); g.fillRect(0, 0, getWidth(), getHeight()); g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD | Font.STYLE_UNDERLINED, Font.SIZE_LARGE)); if(score == 80){ g.setColor(0, 255, 0); g.drawString("YOU WIN", getWidth()/2, getHeight()/2,Graphics.HCENTER | Graphics.BOTTOM); }else{ g.setColor(255, 0, 0); g.drawString("You LOSE", getWidth()/2, getHeight()/2, Graphics.HCENTER | Graphics.BOTTOM); } flushGraphics(); } }

Ini adalah program akhir pada saat pembuatan game. Untuk menggerakan bola kita perlu perintah sebagai berikut : public void moveCharacter(int direction){ if(last_direction != direction){ switch(direction){ case UP: sprite_laba.setFrameSequence(game_design.labalaba_top); break; case DOWN: sprite_laba.setFrameSequence(game_design.labalaba_bottom);

break; case LEFT: sprite_laba.setFrameSequence(game_design.labalaba_left); break; case RIGHT: sprite_laba.setFrameSequence(game_design.labalaba_right); break; } last_direction = direction; } switch(direction){ case UP: if (sprite_laba.getY()-2>0){ sprite_laba.move(0, -2); } break; case DOWN: if(sprite_laba.getX()+2 < background.getHeight()){ sprite_laba.move(0, 2); } break; case LEFT: if(sprite_laba.getX()-2>0){ sprite_laba.move(-2, 0); } break; case RIGHT: if(sprite_laba.getX()+2 < background.getWidth()){ sprite_laba.move(2, 0); } break; } sprite_laba.nextFrame(); } public void input(){ int states = getKeyStates(); if((states & UP_PRESSED)!=0){ moveCharacter(UP); } if((states & DOWN_PRESSED)!=0){ moveCharacter(DOWN);

} if((states & LEFT_PRESSED)!=0){ moveCharacter(LEFT); } if((states & RIGHT_PRESSED)!=0){ moveCharacter(RIGHT); } }

Untuk perintah mengambil dan membawa bola sesuai warna kita perlu ketikan program berikut : public void keyPressed(int keyCode){ int action = getGameAction(keyCode); if(action == FIRE){ if(is_bringing_theball == false){ for(int i = 0; i<sprite_bola.length;i++){ if(sprite_laba.collidesWith(sprite_bola[i], true)){ index_bola_yg_dibawa = i; index_lingkaran_yg_tersedia = i; is_bringing_theball = true; break; } } }else{ if(is_bringing_theball == true){ if(action == FIRE){

Untuk penilaian kita menambahkan program berikut: if(sprite_bola[index_bola_yg_dibawa].collidesWith(sprite_lingkaran[index_lingkara n_yg_tersedia], true)){ sprite_bola[index_bola_yg_dibawa].setVisible(false); sprite_lingkaran[index_lingkaran_yg_tersedia].setVisible(false); score += 10; } else{ score -= 10; } }

Untuk countdown dan notifikasi menang/kalah kita masukkan program berikut: public void startTimer(){ time = 120; timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask(){

public void run() { time --; } }, 1000, 1000); } public void drawOverScreen(Graphics g){ g.setColor(255, 255, 255); g.fillRect(0, 0, getWidth(), getHeight()); g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD | Font.STYLE_UNDERLINED, Font.SIZE_LARGE)); if(score == 80){ g.setColor(0, 255, 0); g.drawString("YOU WIN", getWidth()/2, getHeight()/2,Graphics.HCENTER | Graphics.BOTTOM); }else{ g.setColor(255, 0, 0); g.drawString("You LOSE", getWidth()/2, getHeight()/2, Graphics.HCENTER | Graphics.BOTTOM);

Setelah semua program di ketikkan selanjut nya kita menambahkan form game yang sudah kita buat ke dalam visual midlet seperti gambar di atas tadi untuk mengarahkan jika kita memilih tombol play pada mainmenu.

Perhatikan tanda panah dari form main menu play kea rah game yang sudah kita buat programnya di atas. Setelah semua di set dengan benar jalankan program game tersebut.

BAB II II.

Flatform/ Flowchart (Building) Lanjutan dari bab 1 flatform yang digunakan adalah visual midlet, game builder, dan juga java class yang berisikan program. Berikut adalah flowchart pada saat visual midlet untuk mendesign tampilan awal platform J2ME di jalankan :

Flowchart game design pada visual midlet

Started Moblie Device

Variabel : SplashScreen Main Menu Help Form About FOrm

C

SplashScreen

Play D

Yes

IF Main Menu

About N O

C

Help

Exit

A

A

Yes IF Play

Game

B

N O

Yes IF Help

Help Form

Command Back

N O

D Yes IF About

About Form

N O

B

Command Back

D Exit

End

Barikutnya adalah Flowchart dari program java class game : Game Start

Flowchart Program java class game

Variabel : Laba-Laba Bola Wadah Score Time

Mulai Game B

Yes

If laba memba wa bola

Masukkan ke dalam wadah N O

Cari bola

Hitung Score

B

A

A

Yes

If score > 80

WIN

N O

Lose

END

BAB III III.

Cara Menjalankan Aplikasi (Manual Book) Setelah kita selesai membuat program game cara menjalakannya sebagai berikut: 1. Compile Program pada netbeans dan run dengan menekan F5 2. Akan muncul tampilan splaschscreen lalu tekan tombol enter 3. Setelah itu akan muncul tampilan MainMenu yang berisi Play, Help, About, dan Exit. 4. Tekan Play untuk memainkan game. 5. Tekan Help untuk menuju ke form help yang berisi cara memainkan game. 6. Tekan About untuk mengetahui tentang apa isi game. 7. Dan Tombol Exit untuk keluar dan kembail ke SplashScreen

Jika kita memainkan game membutuhkan score di atas 80 untuk memenangkan game tersebut, jika waktu habis dan score kurang dari 80 maka kita akan kalah. Selamat mencoba.

Daftar Pustaka : en.wikipedia.org/wiki/Game_programming www.pdfcoke.com/.../Pemrograman-Mobile-Mobile-Game netbeans.org/community/releases/36/J2ME_Support.html

https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloadsjavase6-419409.html

Related Documents

Game
June 2020 43
Router Sederhana
June 2020 33
Game
October 2019 68
Game
November 2019 94

More Documents from ""