SlideShare uma empresa Scribd logo
1 de 19
Mobile Game Developer War 4: Online Camp




MGDW4 Online Camp #4

     Image dan Sprite
Mobile Game Developer War 4: Online Camp

                Introduction
• Pada game J2ME, biasanya terdapat 2
  jenis gambar:
  1. Primitif grafik
  2. Image
  3. Sprite
                               Primitif grafik sudah dijelaskan pada
                               materi terdahulu. Sekarang akan fokus
                               pada image dan sprite
Mobile Game Developer War 4: Online Camp

         Pengenalan Image
• Image merupakan proses memanggil
  gambar dari file image, dengan
  menggunakan fungsi drawImage()
• Image digunakan ketika terlalu sulit dan
  kompleks jika dikerjakan dengan primitif
  grafik
Mobile Game Developer War 4: Online Camp

        Penggunaan Image
• Untuk membuat
  background

• Untuk membuat
  menu, tombol, dll

• Untuk membuat
  tilemap
Mobile Game Developer War 4: Online Camp

     Insert image – inisialisasi variable

                          2. Buat variable global pada game canvas kita

                          Image b_about_off, b_about_on, b_exit_off,
                                b_exit_on, b_play_off, b_play_on, bg_about,
                                bg_mainmenu, hand_pointer;




1. Masukkan file gambar
ke folder res/mainMenu
Mobile Game Developer War 4: Online Camp

Insert image – inisialisasi variable
    Buat fungsi init(), untuk memuat file gambar yang dibutuhkan


     private void init(){
      gameover = false;
      screenState = SCREEN_MAIN_MENU;
      //Initialize image
      try {
        //main menu
        b_about_off = Image.createImage("/mainMenu/b_about_off.png");
        b_about_on = Image.createImage("/mainMenu/b_about_on.png");
        b_exit_off = Image.createImage("/mainMenu/b_exit_off.png");
        b_exit_on = Image.createImage("/mainMenu/b_exit_on.png");
        b_play_off = Image.createImage("/mainMenu/b_play_off.png");
        b_play_on = Image.createImage("/mainMenu/b_play_on.png");
        bg_about = Image.createImage("/mainMenu/bg_about.png");
        bg_mainmenu = Image.createImage("/mainMenu/bg_mainmenu.png");
        hand_pointer = Image.createImage("/mainMenu/hand_pointer.png");
      } catch (IOException e) {
          e.printStackTrace();
        }
      }
Mobile Game Developer War 4: Online Camp

             Insert image – drawImage()
private void draw(){
 switch (screenState) {                          1    Lalu rubah pada fungsi
 case SCREEN_MAIN_MENU:                               draw(), untuk
   g.drawImage(bg_mainmenu, 0, 0, 0);
   switch (curMenu) {
                                                      menggambar main menu.
   case 1:                                            Case 1, 2, dan 3 untuk
     g.drawImage(b_play_on, getWidth()/2, 180,
        Graphics.HCENTER | Graphics.VCENTER);
                                                      “mengganti” posisi dari
     g.drawImage(b_about_off, getWidth()/2, 220,      pointer.
        Graphics.HCENTER | Graphics.VCENTER);
     g.drawImage(b_exit_off, getWidth()/2, 260,
        Graphics.HCENTER | Graphics.VCENTER);           case 3:
     g.drawImage(hand_pointer, getWidth()/5+5, 180,      g.drawImage(b_play_off, getWidth()/2, 180, 3
        Graphics.HCENTER | Graphics.VCENTER);               Graphics.HCENTER | Graphics.VCENTER);
     break;                                              g.drawImage(b_about_off, getWidth()/2, 220,
                                                            Graphics.HCENTER | Graphics.VCENTER);
  case 2:                                                g.drawImage(b_exit_on, getWidth()/2, 260,
   g.drawImage(b_play_off, getWidth()/2, 180, 2             Graphics.HCENTER | Graphics.VCENTER);
      Graphics.HCENTER | Graphics.VCENTER);              g.drawImage(hand_pointer, getWidth()/5+5, 260,
   g.drawImage(b_about_on, getWidth()/2, 220,               Graphics.HCENTER | Graphics.VCENTER);
      Graphics.HCENTER | Graphics.VCENTER);              break;
   g.drawImage(b_exit_off, getWidth()/2, 260,           break;
      Graphics.HCENTER | Graphics.VCENTER);
   g.drawImage(hand_pointer, getWidth()/5+5, 220,      case SCREEN_OPTION:
      Graphics.HCENTER | Graphics.VCENTER);             ...
   break;                                               ...
Mobile Game Developer War 4: Online Camp

                               Change menu
private void getInput()
                                                  1             Lalu rubah kode pada bagian
{                                                               getInput(), khususnya pada case
  int keystate = getKeyStates();
  switch (screenState) {                                        SCREEN_MENU.
  case SCREEN_MAIN_MENU:
    int keyState = getKeyStates();                              curMenu akan mengubah posisi pointer
    if ((keyState & UP_PRESSED) != 0) {
      if (curMenu <= 1) {
                                                                pada fungsi draw() sebelumnya.
        curMenu = 3;
      }else                                                     Ketika ditekan FIRE, maka screenState
        curMenu--;                                              akan berubah dan mengubah state
    }else if ((keyState & DOWN_PRESSED) != 0) {
      if (curMenu >= 3) {                                       pada fungsi draw()
        curMenu = 1;
                                   if ((keyState & FIRE_PRESSED) != 0) {
      }else
                                     if (curMenu == 1) {
        curMenu++;                      screenState = SCREEN_IN_GAME;
    }                                }else if (curMenu == 2) {
                                screenState = SCREEN_ABOUT;
                              }else if (curMenu == 3) {
                                screenState = SCREEN_EXIT;
                              }
                             }
                             break;
                            case SCREEN_OPTION:
                            ...                           2
                            ...
Mobile Game Developer War 4: Online Camp

        Pengenalan Sprite
• Sprite merupakan deretan gambar yang
  membentuk sebuah animasi
• Sprite dapat berupa peluru, monster,
  karakter utama, spesial efek, dan
  sebagainya
Mobile Game Developer War 4: Online Camp

                  Sprite Constructor
  Ada 3 konstruktor yang disediakan oleh kelas Sprite:
1. Sprite(Image img)
        membuat frame sprite tunggal, tidak beranimasi
2.   Sprite(Sprite spr)
        membuat Sprite baru dari Sprite lainnya
3.   Sprite(Image img, int frameWidth, int frameHeight)
        membuat animasi sprite dari 2 frame atau lebih, frameWidth adalah lebar
        dari sebuah frame, dan frameHeight adalah tinggi dari sebuah frame.

 Frame merupakan tinggi dan lebar dari sebuah animasi yang ingin ditampilkan.
 Pada contoh dibawah, satu frame memiliki dimensi 52x40 pixel per framenya.
 Dengan total 8 frame, maka dimensi totalnya 416x40 pixel.
Mobile Game Developer War 4: Online Camp

                        Playing Sprite
spr.nextFrame()
         0        1         2         3          4         5        6          7




Awalnya frame yang dimainkan adalah
                                               Untuk mengatur urutan dari frame dapat
frame 0, menuju ke 1, lalu 2, dan
                                               menggunakan kode berikut
seterusnya hingga kembali ke 0


       int[] seqRun = new int[] { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7};
       spRun.setFrameSequence(seqRun);

     Untuk menset frame secara manual, dapat menggunakan fungsi setFrame()

                        spr.setFrame(int frameYangDituju)
Mobile Game Developer War 4: Online Camp

                         Sprite Collision
Collision detection merupakan hal yang akan sering ditemui dalam pembuatan game.
Biasanya berupa pengecekan antara 2 objeck ketika bersinggungan, contohnya
ketika karakter tertembak. Pada Sprite, terdapat fungsi collision detection yang
simpel. Dengan nilai kembalian true atau false

Tentukan daerah collision Sprite kita dengan defineCollisionRectangle(int x, int y, int
width, int height)
3 cara pengecekan Sprite
1. spr.CollidesWith(Sprite sprLain, boolean arg);
2. spr.CollidesWith(TiledLayer tileMap, boolean arg);
3. spr.CollidesWith(Image img, boolean arg);

                   spr.defineCollisionRectangle(x, y, fWidth, fHeight)
                   if(spr.CollidesWith(imgPeluru, true))
                   {
                           health--;
                           sprMeledak.paint(g);
                   }
Mobile Game Developer War 4: Online Camp

                    Transformasi Sprite
Untuk men-
transform sebuah
sprite, bisa kita
lakukan dengan
setTransform()
Mobile Game Developer War 4: Online Camp

                  Animated Sprite

//sprite                                     Sprite adalah objek untuk menyimpan
Image runImg;                                gambar dengan banyak frame
Sprite spRun;
int[] seqRun = new int[] {0,0,1,1,2,2,3,3,   Kita bisa membuat urutan animasi
  4,4,5,5,6,6,7,7};                          dengan membuat array berisi index
int cX, cY;                                  frame animasinya



 void initChar(){                            52 dan 40 adalah ukuran setiap
       spRun = new Sprite(runImg, 52, 40);   frame animasi pada sprite
       spRun.setFrameSequence(seqRun);
       cX = width/2;                         setFrameSequence digunakan untuk
       cY = height-runImg.getHeight();       menyimpan urutan animasi
 }
Mobile Game Developer War 4: Online Camp

                   Animated Sprite - 2

                                      Untuk menggambar Sprite tidak menggunakan
                                      drawImage, tapi menggunakan Sprite.Paint
void drawChar(){
      spRun.setPosition(cX, cY);
      if (!jumping && !falling) {
            spRun.nextFrame();        nextFrame() akan merubah frame yang ditampilkan menjadi
      }else                           frame berikutnya di urutan yang sudah kita buat
            spRun.setFrame(0);
      spRun.paint(g);
}
                                      Khusus saat kondisi jumping atau falling, kita menampilkan
                                      frame pertama, agar karakter tidak berlari di udara.
Mobile Game Developer War 4: Online Camp

                    Quest – Parallax Effect
    •    Parallax adalah efek dimana beberapa bagian latar belakang bergerak
         dengan kecepatan yang berbeda.
    •    Biasanya digunakan pada game sidescrolling seperti Mario Bros atau
         Megaman.
    •    Contohnya bisa dilihat di http://youtu.be/KZF8n0opmW8
    •    Contoh lain (menggunakan 3 layer: bulan, awan, dan tiang layar):




                                                               Awan akan bergerak lebih lambat
Jika kita menekan
kanan, latar                                                   dari tiang layar karena lebih jauh
                                                               dari karakter, dan bulan terlihat
belakang akan
                                                               hampir tidak bergerak.
bergerak ke kiri.
Mobile Game Developer War 4: Online Camp

       Quest – Parallax Effect
• Coba buat implementasi efek parallax dengan
  menggunakan 3 layer seperti pada contoh.
• Kalian bisa gunakan gambar apa saja untuk quest
  ini. (Tidak harus sama persis dengan contoh)
Mobile Game Developer War 4: Online Camp

   Cara menyelesaikan Quest
1. Kirim source code MainCanvas.java ke
   email: quest@agateacademy.com
2. Gunakan subject “Quest Online Camp 04
   – Parallax Effect”
Mobile Game Developer War 4: Online Camp




• Untuk menyelesaikan materi, kunjungi
  http://bit.ly/NF03fU

• Untuk pertanyaan atau diskusi, bisa
  dilakukan via forum:
  http://bit.ly/mgdw4forum

Mais conteúdo relacionado

Mais de Agate Studio

Freemium conceptanalytics leemarvin
Freemium conceptanalytics leemarvinFreemium conceptanalytics leemarvin
Freemium conceptanalytics leemarvinAgate Studio
 
Game Programming Pattern by Restya
Game Programming Pattern by RestyaGame Programming Pattern by Restya
Game Programming Pattern by RestyaAgate Studio
 
Community Management by Yudhit
Community Management by YudhitCommunity Management by Yudhit
Community Management by YudhitAgate Studio
 
[Habli] tds agustus
[Habli] tds agustus[Habli] tds agustus
[Habli] tds agustusAgate Studio
 
Wp quality bar tedy
Wp quality bar   tedyWp quality bar   tedy
Wp quality bar tedyAgate Studio
 
Lee marvin pitching-hacks
Lee marvin pitching-hacksLee marvin pitching-hacks
Lee marvin pitching-hacksAgate Studio
 
Emotiv EPOC by Neneng
Emotiv EPOC by NenengEmotiv EPOC by Neneng
Emotiv EPOC by NenengAgate Studio
 
Aksi – Koneksi – Deviasi by Valent
Aksi – Koneksi – Deviasi by ValentAksi – Koneksi – Deviasi by Valent
Aksi – Koneksi – Deviasi by ValentAgate Studio
 
MMO Design Architecture by Andrew
MMO Design Architecture by AndrewMMO Design Architecture by Andrew
MMO Design Architecture by AndrewAgate Studio
 
How to Persuade People by Dave
How to Persuade People by DaveHow to Persuade People by Dave
How to Persuade People by DaveAgate Studio
 
Eddie supersmash goodminton
Eddie   supersmash goodmintonEddie   supersmash goodminton
Eddie supersmash goodmintonAgate Studio
 
Satriyo digital audio gears
Satriyo   digital audio gearsSatriyo   digital audio gears
Satriyo digital audio gearsAgate Studio
 
Yinan heroes of-the_strom
Yinan   heroes of-the_stromYinan   heroes of-the_strom
Yinan heroes of-the_stromAgate Studio
 
Advanced encryption standard (aes) epul
Advanced encryption standard (aes)   epulAdvanced encryption standard (aes)   epul
Advanced encryption standard (aes) epulAgate Studio
 
Real Time Framework by Tonny
Real Time Framework by TonnyReal Time Framework by Tonny
Real Time Framework by TonnyAgate Studio
 
Unity Camera & Simple Image Editing by Puthut
Unity Camera & Simple Image Editing by PuthutUnity Camera & Simple Image Editing by Puthut
Unity Camera & Simple Image Editing by PuthutAgate Studio
 
Hibernate by Jason
Hibernate by JasonHibernate by Jason
Hibernate by JasonAgate Studio
 
Hardening Apache Web Server by Aswin
Hardening Apache Web Server by AswinHardening Apache Web Server by Aswin
Hardening Apache Web Server by AswinAgate Studio
 
Introduction to Global Illumination by Aryo
Introduction to Global Illumination by AryoIntroduction to Global Illumination by Aryo
Introduction to Global Illumination by AryoAgate Studio
 

Mais de Agate Studio (20)

Freemium conceptanalytics leemarvin
Freemium conceptanalytics leemarvinFreemium conceptanalytics leemarvin
Freemium conceptanalytics leemarvin
 
Game Programming Pattern by Restya
Game Programming Pattern by RestyaGame Programming Pattern by Restya
Game Programming Pattern by Restya
 
Community Management by Yudhit
Community Management by YudhitCommunity Management by Yudhit
Community Management by Yudhit
 
[Habli] tds agustus
[Habli] tds agustus[Habli] tds agustus
[Habli] tds agustus
 
Wp quality bar tedy
Wp quality bar   tedyWp quality bar   tedy
Wp quality bar tedy
 
Toku DB by Aswin
Toku DB by AswinToku DB by Aswin
Toku DB by Aswin
 
Lee marvin pitching-hacks
Lee marvin pitching-hacksLee marvin pitching-hacks
Lee marvin pitching-hacks
 
Emotiv EPOC by Neneng
Emotiv EPOC by NenengEmotiv EPOC by Neneng
Emotiv EPOC by Neneng
 
Aksi – Koneksi – Deviasi by Valent
Aksi – Koneksi – Deviasi by ValentAksi – Koneksi – Deviasi by Valent
Aksi – Koneksi – Deviasi by Valent
 
MMO Design Architecture by Andrew
MMO Design Architecture by AndrewMMO Design Architecture by Andrew
MMO Design Architecture by Andrew
 
How to Persuade People by Dave
How to Persuade People by DaveHow to Persuade People by Dave
How to Persuade People by Dave
 
Eddie supersmash goodminton
Eddie   supersmash goodmintonEddie   supersmash goodminton
Eddie supersmash goodminton
 
Satriyo digital audio gears
Satriyo   digital audio gearsSatriyo   digital audio gears
Satriyo digital audio gears
 
Yinan heroes of-the_strom
Yinan   heroes of-the_stromYinan   heroes of-the_strom
Yinan heroes of-the_strom
 
Advanced encryption standard (aes) epul
Advanced encryption standard (aes)   epulAdvanced encryption standard (aes)   epul
Advanced encryption standard (aes) epul
 
Real Time Framework by Tonny
Real Time Framework by TonnyReal Time Framework by Tonny
Real Time Framework by Tonny
 
Unity Camera & Simple Image Editing by Puthut
Unity Camera & Simple Image Editing by PuthutUnity Camera & Simple Image Editing by Puthut
Unity Camera & Simple Image Editing by Puthut
 
Hibernate by Jason
Hibernate by JasonHibernate by Jason
Hibernate by Jason
 
Hardening Apache Web Server by Aswin
Hardening Apache Web Server by AswinHardening Apache Web Server by Aswin
Hardening Apache Web Server by Aswin
 
Introduction to Global Illumination by Aryo
Introduction to Global Illumination by AryoIntroduction to Global Illumination by Aryo
Introduction to Global Illumination by Aryo
 

Último

Panduan Mengisi Dokumen Tindak Lanjut.pdf
Panduan Mengisi Dokumen Tindak Lanjut.pdfPanduan Mengisi Dokumen Tindak Lanjut.pdf
Panduan Mengisi Dokumen Tindak Lanjut.pdfandriasyulianto57
 
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 TesalonikaMateri Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 TesalonikaSABDA
 
Modul Ajar Bahasa Indonesia Kelas 1 Fase A - [abdiera.com]
Modul Ajar Bahasa Indonesia Kelas 1 Fase A - [abdiera.com]Modul Ajar Bahasa Indonesia Kelas 1 Fase A - [abdiera.com]
Modul Ajar Bahasa Indonesia Kelas 1 Fase A - [abdiera.com]Abdiera
 
Buku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfBuku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfWahyudinST
 
Product Knowledge Rapor Pendidikan - Satuan Pendidikan Dasmen&Vokasi.pptx
Product Knowledge Rapor Pendidikan - Satuan Pendidikan Dasmen&Vokasi.pptxProduct Knowledge Rapor Pendidikan - Satuan Pendidikan Dasmen&Vokasi.pptx
Product Knowledge Rapor Pendidikan - Satuan Pendidikan Dasmen&Vokasi.pptxKaista Glow
 
(NEW) Template Presentasi UGM yang terbaru
(NEW) Template Presentasi UGM yang terbaru(NEW) Template Presentasi UGM yang terbaru
(NEW) Template Presentasi UGM yang terbaruSilvanaAyu
 
Pelatihan Asesor 2024_KEBIJAKAN DAN MEKANISME AKREDITASI PAUD TAHUN 2024 .pdf
Pelatihan Asesor 2024_KEBIJAKAN DAN  MEKANISME AKREDITASI PAUD TAHUN 2024 .pdfPelatihan Asesor 2024_KEBIJAKAN DAN  MEKANISME AKREDITASI PAUD TAHUN 2024 .pdf
Pelatihan Asesor 2024_KEBIJAKAN DAN MEKANISME AKREDITASI PAUD TAHUN 2024 .pdfEmeldaSpd
 
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKA
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKAPPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKA
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKARenoMardhatillahS
 
Modul Ajar IPA Kelas 7 Fase D Kurikulum Merdeka
Modul Ajar IPA Kelas 7 Fase D Kurikulum MerdekaModul Ajar IPA Kelas 7 Fase D Kurikulum Merdeka
Modul Ajar IPA Kelas 7 Fase D Kurikulum MerdekaAbdiera
 
rpp bangun-ruang-sisi-datar kelas 8 smp.pdf
rpp bangun-ruang-sisi-datar kelas 8 smp.pdfrpp bangun-ruang-sisi-datar kelas 8 smp.pdf
rpp bangun-ruang-sisi-datar kelas 8 smp.pdfGugunGunawan93
 
Modul persamaan perakaunan prinsip akaun
Modul persamaan perakaunan prinsip akaunModul persamaan perakaunan prinsip akaun
Modul persamaan perakaunan prinsip akaunnhsani2006
 
PPT Hukum Adat Keberadaan Hukum Adat Di Kehidupan Masyarakat.pdf
PPT Hukum Adat Keberadaan Hukum Adat Di Kehidupan Masyarakat.pdfPPT Hukum Adat Keberadaan Hukum Adat Di Kehidupan Masyarakat.pdf
PPT Hukum Adat Keberadaan Hukum Adat Di Kehidupan Masyarakat.pdfSBMNessyaPutriPaulan
 
Pembuktian rumus volume dan luas permukaan bangung ruang Tabung, Limas, Keruc...
Pembuktian rumus volume dan luas permukaan bangung ruang Tabung, Limas, Keruc...Pembuktian rumus volume dan luas permukaan bangung ruang Tabung, Limas, Keruc...
Pembuktian rumus volume dan luas permukaan bangung ruang Tabung, Limas, Keruc...NiswatuzZahroh
 
AKSI NYATA MODUL 1.3 VISI GURU PENGGERAK.pdf
AKSI NYATA MODUL 1.3 VISI GURU PENGGERAK.pdfAKSI NYATA MODUL 1.3 VISI GURU PENGGERAK.pdf
AKSI NYATA MODUL 1.3 VISI GURU PENGGERAK.pdfHeriyantoHeriyanto44
 
PAMPHLET PENGAKAP aktiviti pengakap 2024
PAMPHLET PENGAKAP aktiviti pengakap 2024PAMPHLET PENGAKAP aktiviti pengakap 2024
PAMPHLET PENGAKAP aktiviti pengakap 2024MALISAAININOORBINTIA
 
Workshop penulisan buku (Buku referensi, monograf, BUKU...
Workshop penulisan buku                       (Buku referensi, monograf, BUKU...Workshop penulisan buku                       (Buku referensi, monograf, BUKU...
Workshop penulisan buku (Buku referensi, monograf, BUKU...Riyan Hidayatullah
 
Modul Ajar Matematika Kelas 2 Fase A Kurikulum Merdeka
Modul Ajar Matematika Kelas 2 Fase A Kurikulum MerdekaModul Ajar Matematika Kelas 2 Fase A Kurikulum Merdeka
Modul Ajar Matematika Kelas 2 Fase A Kurikulum MerdekaAbdiera
 
Sejarah Perkembangan Teori Manajemen.ppt
Sejarah Perkembangan Teori Manajemen.pptSejarah Perkembangan Teori Manajemen.ppt
Sejarah Perkembangan Teori Manajemen.pptssuser940815
 
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptxKeberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptxLeniMawarti1
 
Elemen Jurnalistik Ilmu Komunikasii.pptx
Elemen Jurnalistik Ilmu Komunikasii.pptxElemen Jurnalistik Ilmu Komunikasii.pptx
Elemen Jurnalistik Ilmu Komunikasii.pptxGyaCahyaPratiwi
 

Último (20)

Panduan Mengisi Dokumen Tindak Lanjut.pdf
Panduan Mengisi Dokumen Tindak Lanjut.pdfPanduan Mengisi Dokumen Tindak Lanjut.pdf
Panduan Mengisi Dokumen Tindak Lanjut.pdf
 
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 TesalonikaMateri Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
Materi Kelas Online Ministry Learning Center - Bedah Kitab 1 Tesalonika
 
Modul Ajar Bahasa Indonesia Kelas 1 Fase A - [abdiera.com]
Modul Ajar Bahasa Indonesia Kelas 1 Fase A - [abdiera.com]Modul Ajar Bahasa Indonesia Kelas 1 Fase A - [abdiera.com]
Modul Ajar Bahasa Indonesia Kelas 1 Fase A - [abdiera.com]
 
Buku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdfBuku Saku Layanan Haji Ramah Lansia 2.pdf
Buku Saku Layanan Haji Ramah Lansia 2.pdf
 
Product Knowledge Rapor Pendidikan - Satuan Pendidikan Dasmen&Vokasi.pptx
Product Knowledge Rapor Pendidikan - Satuan Pendidikan Dasmen&Vokasi.pptxProduct Knowledge Rapor Pendidikan - Satuan Pendidikan Dasmen&Vokasi.pptx
Product Knowledge Rapor Pendidikan - Satuan Pendidikan Dasmen&Vokasi.pptx
 
(NEW) Template Presentasi UGM yang terbaru
(NEW) Template Presentasi UGM yang terbaru(NEW) Template Presentasi UGM yang terbaru
(NEW) Template Presentasi UGM yang terbaru
 
Pelatihan Asesor 2024_KEBIJAKAN DAN MEKANISME AKREDITASI PAUD TAHUN 2024 .pdf
Pelatihan Asesor 2024_KEBIJAKAN DAN  MEKANISME AKREDITASI PAUD TAHUN 2024 .pdfPelatihan Asesor 2024_KEBIJAKAN DAN  MEKANISME AKREDITASI PAUD TAHUN 2024 .pdf
Pelatihan Asesor 2024_KEBIJAKAN DAN MEKANISME AKREDITASI PAUD TAHUN 2024 .pdf
 
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKA
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKAPPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKA
PPT TEKS TANGGAPAN KELAS 7 KURIKUKULM MERDEKA
 
Modul Ajar IPA Kelas 7 Fase D Kurikulum Merdeka
Modul Ajar IPA Kelas 7 Fase D Kurikulum MerdekaModul Ajar IPA Kelas 7 Fase D Kurikulum Merdeka
Modul Ajar IPA Kelas 7 Fase D Kurikulum Merdeka
 
rpp bangun-ruang-sisi-datar kelas 8 smp.pdf
rpp bangun-ruang-sisi-datar kelas 8 smp.pdfrpp bangun-ruang-sisi-datar kelas 8 smp.pdf
rpp bangun-ruang-sisi-datar kelas 8 smp.pdf
 
Modul persamaan perakaunan prinsip akaun
Modul persamaan perakaunan prinsip akaunModul persamaan perakaunan prinsip akaun
Modul persamaan perakaunan prinsip akaun
 
PPT Hukum Adat Keberadaan Hukum Adat Di Kehidupan Masyarakat.pdf
PPT Hukum Adat Keberadaan Hukum Adat Di Kehidupan Masyarakat.pdfPPT Hukum Adat Keberadaan Hukum Adat Di Kehidupan Masyarakat.pdf
PPT Hukum Adat Keberadaan Hukum Adat Di Kehidupan Masyarakat.pdf
 
Pembuktian rumus volume dan luas permukaan bangung ruang Tabung, Limas, Keruc...
Pembuktian rumus volume dan luas permukaan bangung ruang Tabung, Limas, Keruc...Pembuktian rumus volume dan luas permukaan bangung ruang Tabung, Limas, Keruc...
Pembuktian rumus volume dan luas permukaan bangung ruang Tabung, Limas, Keruc...
 
AKSI NYATA MODUL 1.3 VISI GURU PENGGERAK.pdf
AKSI NYATA MODUL 1.3 VISI GURU PENGGERAK.pdfAKSI NYATA MODUL 1.3 VISI GURU PENGGERAK.pdf
AKSI NYATA MODUL 1.3 VISI GURU PENGGERAK.pdf
 
PAMPHLET PENGAKAP aktiviti pengakap 2024
PAMPHLET PENGAKAP aktiviti pengakap 2024PAMPHLET PENGAKAP aktiviti pengakap 2024
PAMPHLET PENGAKAP aktiviti pengakap 2024
 
Workshop penulisan buku (Buku referensi, monograf, BUKU...
Workshop penulisan buku                       (Buku referensi, monograf, BUKU...Workshop penulisan buku                       (Buku referensi, monograf, BUKU...
Workshop penulisan buku (Buku referensi, monograf, BUKU...
 
Modul Ajar Matematika Kelas 2 Fase A Kurikulum Merdeka
Modul Ajar Matematika Kelas 2 Fase A Kurikulum MerdekaModul Ajar Matematika Kelas 2 Fase A Kurikulum Merdeka
Modul Ajar Matematika Kelas 2 Fase A Kurikulum Merdeka
 
Sejarah Perkembangan Teori Manajemen.ppt
Sejarah Perkembangan Teori Manajemen.pptSejarah Perkembangan Teori Manajemen.ppt
Sejarah Perkembangan Teori Manajemen.ppt
 
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptxKeberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
Keberagaman-Peserta-Didik-dalam-Psikologi-Pendidikan.pptx
 
Elemen Jurnalistik Ilmu Komunikasii.pptx
Elemen Jurnalistik Ilmu Komunikasii.pptxElemen Jurnalistik Ilmu Komunikasii.pptx
Elemen Jurnalistik Ilmu Komunikasii.pptx
 

MGDW4 Online Camp 04 - Image dan Sprite

  • 1. Mobile Game Developer War 4: Online Camp MGDW4 Online Camp #4 Image dan Sprite
  • 2. Mobile Game Developer War 4: Online Camp Introduction • Pada game J2ME, biasanya terdapat 2 jenis gambar: 1. Primitif grafik 2. Image 3. Sprite Primitif grafik sudah dijelaskan pada materi terdahulu. Sekarang akan fokus pada image dan sprite
  • 3. Mobile Game Developer War 4: Online Camp Pengenalan Image • Image merupakan proses memanggil gambar dari file image, dengan menggunakan fungsi drawImage() • Image digunakan ketika terlalu sulit dan kompleks jika dikerjakan dengan primitif grafik
  • 4. Mobile Game Developer War 4: Online Camp Penggunaan Image • Untuk membuat background • Untuk membuat menu, tombol, dll • Untuk membuat tilemap
  • 5. Mobile Game Developer War 4: Online Camp Insert image – inisialisasi variable 2. Buat variable global pada game canvas kita Image b_about_off, b_about_on, b_exit_off, b_exit_on, b_play_off, b_play_on, bg_about, bg_mainmenu, hand_pointer; 1. Masukkan file gambar ke folder res/mainMenu
  • 6. Mobile Game Developer War 4: Online Camp Insert image – inisialisasi variable Buat fungsi init(), untuk memuat file gambar yang dibutuhkan private void init(){ gameover = false; screenState = SCREEN_MAIN_MENU; //Initialize image try { //main menu b_about_off = Image.createImage("/mainMenu/b_about_off.png"); b_about_on = Image.createImage("/mainMenu/b_about_on.png"); b_exit_off = Image.createImage("/mainMenu/b_exit_off.png"); b_exit_on = Image.createImage("/mainMenu/b_exit_on.png"); b_play_off = Image.createImage("/mainMenu/b_play_off.png"); b_play_on = Image.createImage("/mainMenu/b_play_on.png"); bg_about = Image.createImage("/mainMenu/bg_about.png"); bg_mainmenu = Image.createImage("/mainMenu/bg_mainmenu.png"); hand_pointer = Image.createImage("/mainMenu/hand_pointer.png"); } catch (IOException e) { e.printStackTrace(); } }
  • 7. Mobile Game Developer War 4: Online Camp Insert image – drawImage() private void draw(){ switch (screenState) { 1 Lalu rubah pada fungsi case SCREEN_MAIN_MENU: draw(), untuk g.drawImage(bg_mainmenu, 0, 0, 0); switch (curMenu) { menggambar main menu. case 1: Case 1, 2, dan 3 untuk g.drawImage(b_play_on, getWidth()/2, 180, Graphics.HCENTER | Graphics.VCENTER); “mengganti” posisi dari g.drawImage(b_about_off, getWidth()/2, 220, pointer. Graphics.HCENTER | Graphics.VCENTER); g.drawImage(b_exit_off, getWidth()/2, 260, Graphics.HCENTER | Graphics.VCENTER); case 3: g.drawImage(hand_pointer, getWidth()/5+5, 180, g.drawImage(b_play_off, getWidth()/2, 180, 3 Graphics.HCENTER | Graphics.VCENTER); Graphics.HCENTER | Graphics.VCENTER); break; g.drawImage(b_about_off, getWidth()/2, 220, Graphics.HCENTER | Graphics.VCENTER); case 2: g.drawImage(b_exit_on, getWidth()/2, 260, g.drawImage(b_play_off, getWidth()/2, 180, 2 Graphics.HCENTER | Graphics.VCENTER); Graphics.HCENTER | Graphics.VCENTER); g.drawImage(hand_pointer, getWidth()/5+5, 260, g.drawImage(b_about_on, getWidth()/2, 220, Graphics.HCENTER | Graphics.VCENTER); Graphics.HCENTER | Graphics.VCENTER); break; g.drawImage(b_exit_off, getWidth()/2, 260, break; Graphics.HCENTER | Graphics.VCENTER); g.drawImage(hand_pointer, getWidth()/5+5, 220, case SCREEN_OPTION: Graphics.HCENTER | Graphics.VCENTER); ... break; ...
  • 8. Mobile Game Developer War 4: Online Camp Change menu private void getInput() 1 Lalu rubah kode pada bagian { getInput(), khususnya pada case int keystate = getKeyStates(); switch (screenState) { SCREEN_MENU. case SCREEN_MAIN_MENU: int keyState = getKeyStates(); curMenu akan mengubah posisi pointer if ((keyState & UP_PRESSED) != 0) { if (curMenu <= 1) { pada fungsi draw() sebelumnya. curMenu = 3; }else Ketika ditekan FIRE, maka screenState curMenu--; akan berubah dan mengubah state }else if ((keyState & DOWN_PRESSED) != 0) { if (curMenu >= 3) { pada fungsi draw() curMenu = 1; if ((keyState & FIRE_PRESSED) != 0) { }else if (curMenu == 1) { curMenu++; screenState = SCREEN_IN_GAME; } }else if (curMenu == 2) { screenState = SCREEN_ABOUT; }else if (curMenu == 3) { screenState = SCREEN_EXIT; } } break; case SCREEN_OPTION: ... 2 ...
  • 9. Mobile Game Developer War 4: Online Camp Pengenalan Sprite • Sprite merupakan deretan gambar yang membentuk sebuah animasi • Sprite dapat berupa peluru, monster, karakter utama, spesial efek, dan sebagainya
  • 10. Mobile Game Developer War 4: Online Camp Sprite Constructor Ada 3 konstruktor yang disediakan oleh kelas Sprite: 1. Sprite(Image img) membuat frame sprite tunggal, tidak beranimasi 2. Sprite(Sprite spr) membuat Sprite baru dari Sprite lainnya 3. Sprite(Image img, int frameWidth, int frameHeight) membuat animasi sprite dari 2 frame atau lebih, frameWidth adalah lebar dari sebuah frame, dan frameHeight adalah tinggi dari sebuah frame. Frame merupakan tinggi dan lebar dari sebuah animasi yang ingin ditampilkan. Pada contoh dibawah, satu frame memiliki dimensi 52x40 pixel per framenya. Dengan total 8 frame, maka dimensi totalnya 416x40 pixel.
  • 11. Mobile Game Developer War 4: Online Camp Playing Sprite spr.nextFrame() 0 1 2 3 4 5 6 7 Awalnya frame yang dimainkan adalah Untuk mengatur urutan dari frame dapat frame 0, menuju ke 1, lalu 2, dan menggunakan kode berikut seterusnya hingga kembali ke 0 int[] seqRun = new int[] { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7}; spRun.setFrameSequence(seqRun); Untuk menset frame secara manual, dapat menggunakan fungsi setFrame() spr.setFrame(int frameYangDituju)
  • 12. Mobile Game Developer War 4: Online Camp Sprite Collision Collision detection merupakan hal yang akan sering ditemui dalam pembuatan game. Biasanya berupa pengecekan antara 2 objeck ketika bersinggungan, contohnya ketika karakter tertembak. Pada Sprite, terdapat fungsi collision detection yang simpel. Dengan nilai kembalian true atau false Tentukan daerah collision Sprite kita dengan defineCollisionRectangle(int x, int y, int width, int height) 3 cara pengecekan Sprite 1. spr.CollidesWith(Sprite sprLain, boolean arg); 2. spr.CollidesWith(TiledLayer tileMap, boolean arg); 3. spr.CollidesWith(Image img, boolean arg); spr.defineCollisionRectangle(x, y, fWidth, fHeight) if(spr.CollidesWith(imgPeluru, true)) { health--; sprMeledak.paint(g); }
  • 13. Mobile Game Developer War 4: Online Camp Transformasi Sprite Untuk men- transform sebuah sprite, bisa kita lakukan dengan setTransform()
  • 14. Mobile Game Developer War 4: Online Camp Animated Sprite //sprite Sprite adalah objek untuk menyimpan Image runImg; gambar dengan banyak frame Sprite spRun; int[] seqRun = new int[] {0,0,1,1,2,2,3,3, Kita bisa membuat urutan animasi 4,4,5,5,6,6,7,7}; dengan membuat array berisi index int cX, cY; frame animasinya void initChar(){ 52 dan 40 adalah ukuran setiap spRun = new Sprite(runImg, 52, 40); frame animasi pada sprite spRun.setFrameSequence(seqRun); cX = width/2; setFrameSequence digunakan untuk cY = height-runImg.getHeight(); menyimpan urutan animasi }
  • 15. Mobile Game Developer War 4: Online Camp Animated Sprite - 2 Untuk menggambar Sprite tidak menggunakan drawImage, tapi menggunakan Sprite.Paint void drawChar(){ spRun.setPosition(cX, cY); if (!jumping && !falling) { spRun.nextFrame(); nextFrame() akan merubah frame yang ditampilkan menjadi }else frame berikutnya di urutan yang sudah kita buat spRun.setFrame(0); spRun.paint(g); } Khusus saat kondisi jumping atau falling, kita menampilkan frame pertama, agar karakter tidak berlari di udara.
  • 16. Mobile Game Developer War 4: Online Camp Quest – Parallax Effect • Parallax adalah efek dimana beberapa bagian latar belakang bergerak dengan kecepatan yang berbeda. • Biasanya digunakan pada game sidescrolling seperti Mario Bros atau Megaman. • Contohnya bisa dilihat di http://youtu.be/KZF8n0opmW8 • Contoh lain (menggunakan 3 layer: bulan, awan, dan tiang layar): Awan akan bergerak lebih lambat Jika kita menekan kanan, latar dari tiang layar karena lebih jauh dari karakter, dan bulan terlihat belakang akan hampir tidak bergerak. bergerak ke kiri.
  • 17. Mobile Game Developer War 4: Online Camp Quest – Parallax Effect • Coba buat implementasi efek parallax dengan menggunakan 3 layer seperti pada contoh. • Kalian bisa gunakan gambar apa saja untuk quest ini. (Tidak harus sama persis dengan contoh)
  • 18. Mobile Game Developer War 4: Online Camp Cara menyelesaikan Quest 1. Kirim source code MainCanvas.java ke email: quest@agateacademy.com 2. Gunakan subject “Quest Online Camp 04 – Parallax Effect”
  • 19. Mobile Game Developer War 4: Online Camp • Untuk menyelesaikan materi, kunjungi http://bit.ly/NF03fU • Untuk pertanyaan atau diskusi, bisa dilakukan via forum: http://bit.ly/mgdw4forum

Notas do Editor

  1. seqRunmerupakan sequence darianimasilari, ketikainisialisasi sprite spRundi set frame sequencenya. Kemudianketika jumping dan falling bernilai false makanextframe(). Else mainkan frame 0
  2. seqRunmerupakan sequence darianimasilari, ketikainisialisasi sprite spRundi set frame sequencenya. Kemudianketika jumping dan falling bernilai false makanextframe(). Else mainkan frame 0