SlideShare a Scribd company logo
1 of 24
Mobile Game Developer War 4: Online Camp




MGDW4 Online Camp #2

 Game Loop, Game Logic, dan
        Game Input
Mobile Game Developer War 4: Online Camp


               Definisi



Potongan kode utama yang dijalankan terus
               menerus.
Mobile Game Developer War 4: Online Camp

Contoh Game Loop
sederhana
Mobile Game Developer War 4: Online Camp

Contoh game loop   public void run() {
pada J2ME            //Inisialisasi variable yang hanya dibuat1x
                     while (gameIsRun) {
                            //Berisi fungsi-fungsi yang dipanggil
                     agar game berjalan
                            getInput();
                            update();
                            draw();
                            flushGraphics();
                            try {
                                       Thread.sleep(30);
                            }catch (InterruptedException ie) {
                            }
                     }
                   }
Mobile Game Developer War 4: Online Camp




Game Logic
Mobile Game Developer War 4: Online Camp


           Definisi



Implementasi game design menjadi
     algoritma pemrograman.
Mobile Game Developer War 4: Online Camp


Contoh: Minesweeper
    • Tampilkan semua kotak tergantung
      statusnya
       – Tertutup, terbuka kosong, terbuka
         berisi, ditandai bendera
    • Acak posisi bom
    • Hitung nilai petunjuk di setiap kotak
    • Jika ada kotak yang dibuka,
      tampilkan isinya
       – Jika ternyata kosong, buka kotak di
         sekitarnya
    • Game selesai kalau semua kotak
      yang bukan bom sudah terbuka
Mobile Game Developer War 4: Online Camp


                   Contoh: Pong
• Tampilkan skor, paddle, dan bola
• Bola:
   – Bola bergerak dengan kecepatan
     tertentu
   – Bola memantul ke tembok dan paddle
• Gameplay
   – Jika bola lewat sisi kanan/kiri, maka
     skor untuk pemain di sisi berlawanan
• Input:
   – Jika ada input pemain A, gerakkan
     paddle A
   – Jika ada input pemain B, gerakkan
     paddle B
Mobile Game Developer War 4: Online Camp


Contoh: Magic Cups
  • Acak posisi bola
  • Jika pemain memilih gelas
    tertentu, buka dan tampilkan
    isinya
Mobile Game Developer War 4: Online Camp




WAKTUNYA PRAKTEK!
Mobile Game Developer War 4: Online Camp


                                Game Input
   •   Menerima input keypad dari pemain           public void run() {
                                                                                            1
                                                     while(true){
   •   Memproses aksi yang bersangkutan                //System.out.println("Testing dulu
                                                   yah...");
private void getInput()                                getInput();
{
                                        2              flushGraphics();
                                                       try {
  int keystate = getKeyStates();                         Thread.sleep(SLEEP_TIME);
  if(keystate == UP_PRESSED){                          } catch (InterruptedException e) {
    System.out.println("UP");                            e.printStackTrace();
  }else if (keystate == LEFT_PRESSED){                 }
    System.out.println("LEFT");                      }
  }else if (keystate == DOWN_PRESSED){
                                                   }
    System.out.println("DOWN");
  }else if (keystate == RIGHT_PRESSED){
    System.out.println("RIGHT");
  }
}

Catatan: kemungkinan besar input akan terdeteksi lebih dari satu kali,
karena Update() dipanggil beberapa kali dalam waktu yang singkat.
Error ini akan kita tangani di materi berikutnya.

                                                                                                3
Mobile Game Developer War 4: Online Camp


    Bedah Game Magic Cups
• Visual:
  – Tiga buah gelas (tertutup dan terbuka)
  – *untuk praktek pertama kita menggunakan
    text saja
• Data penting
  – Posisi bola (di balik gelas)
  – Pilihan pemain
Mobile Game Developer War 4: Online Camp


                   Magic Cups Logic
public static int SLEEP_TIME = 1000/30;
int posisiBola;
                                          • Init
int pilihanPemain;                            – Inisialisasi objek penting
Random r;
boolean gameover;                         • AcakBola
boolean sudahJawab;
                                              – Mengacak variabel
protected MainCanvas() {             1          posisiBola
public void run() {
                                          • PilihGelas
  init();                                     – Meminta pemain memilih
  acakBola();
  pilihGelas();
                                                gelas
  while(!gameover){
    getInput();
                                          • CekPilihanPemain
    cekPilihanPemain();                       – Jika pemain sudah memilih,
    flushGraphics();
    try {
                                                beri tahu hasilnya
      Thread.sleep(SLEEP_TIME);
    } catch (InterruptedException e) {                                    Penting! Jangan lupa
      e.printStackTrace();                                                menambahkan import
    }                                                                     untuk objek Random.
  }                                       import javax.microedition.lcdui.game.GameCanvas;
  System.out.println("Game over.");       import javax.microedition.lcdui.Graphics;
}                                    2    import java.util.Random;                          3
Mobile Game Developer War 4: Online Camp


         Fungsi-fungsi yang dibuat
• Init
    – Inisialisasi objek penting             private void init(){
                                                                       1
• AcakBola                                     r = new Random();
                                               gameover = false;
    – Mengacak variabel posisiBola             sudahJawab = false;
• PilihGelas                                 }
                                               pilihanPemain = -1;

    – Meminta pemain memilih gelas


private void acakBola(){                         2
  posisiBola = r.nextInt(3); //0-2
  //System.out.println("Posisi bola: "+posisiBola);
}

private void pilihGelas(){
  System.out.println("[ ] [ ] [ ]");
                                                                   3
  System.out.println("Tebak bola ada di mana.");
  System.out.println("Tekan kiri, atas, atau kanan untuk menebak!");
}                                2
Mobile Game Developer War 4: Online Camp


           Fungsi-fungsi yang dibuat
• CekPilihanPemain
     – Jika pemain sudah memilih, beri tahu hasilnya
private void cekPilihanPemain(){
  if(sudahJawab)                                                      1
  {
    //cek jawaban
    if(pilihanPemain == posisiBola)
    {
      System.out.println("Selamat! Tebakan anda benar!");
    }else{
      System.out.println("Sayang sekali tebakan anda salah! :(");
    }
                                                    private void gambarHasil() {
    gambarHasil();
                                                      if(posisiBola==0){                                2
    gameover=true;                                      System.out.println("[o] [ ] [ ]");
  }                                                     System.out.println("Bola ada di kiri");
}                                                     }
                                                          else if(posisiBola==1){
                                                            System.out.println("[ ] [o] [ ]");
                                                            System.out.println("Bola ada di tengah");
                                                          }
                                                          else if(posisiBola==2){
                                                            System.out.println("[ ] [ ] [o]");
                                                            System.out.println("Bola ada di kanan");
                                                          }
                                                      }
Mobile Game Developer War 4: Online Camp


           Fungsi yang diubah
• Update fungsi getInput()
  untuk menerima kiri, atas,   private void getInput()
                               {
  dan kanan sebagai              int keystate = getKeyStates();
                                 if(!sudahJawab){
  jawaban                          if (keystate == LEFT_PRESSED){
                                     //System.out.println("LEFT");
                                     pilihanPemain =0;
                                     sudahJawab=true;
                                   }else if(keystate == UP_PRESSED){
                                     //System.out.println("UP");
                                     pilihanPemain =1;
                                     sudahJawab=true;
                                   }else if (keystate == RIGHT_PRESSED){
                                     //System.out.println("RIGHT");
                                     pilihanPemain =2;
                                     sudahJawab=true;
                                   }
                                 }

                               }
Mobile Game Developer War 4: Online Camp


                 Hasil
Jawaban salah.             Jawaban benar.




Namun game baru berjalan sekali saja.
Mobile Game Developer War 4: Online Camp




Buat permainan bisa dimainkan terus
            menerus.
Mobile Game Developer War 4: Online Camp


                                   Solusi
private void cekPilihanPemain(){
  if(sudahJawab)                          1
  {                                                public void run() {
    //cek jawaban                                    init();
    if(pilihanPemain == posisiBola)                  acakBola();
    {                                                pilihGelas();
      System.out.println("Selamat!                   while(!gameover){
Tebakan anda benar!");                                 getInput();           resetGame()
    }else{                                             cekPilihanPemain();
      System.out.println("Sayang sekali                flushGraphics();
tebakan anda salah! :(");                              try {
    }                                                    Thread.sleep(SLEEP_TIME);
    gambarHasil();                                     } catch (InterruptedException e) {
    //gameover=true;                                     e.printStackTrace();
    resetGame();                                       }
  }                                                  }
}                                                    System.out.println("Game over.");
                                                   }


private void resetGame() {
  acakBola();
  pilihGelas();                           Catatan: error pada slide 11 (Game
  pilihanPemain=-1;                       Input) akan masih terjadi, kita akan
  sudahJawab=false;                       perbaiki di Materi berikutnya.
}                       2
Mobile Game Developer War 4: Online Camp




          Catatan: error pada slide 11 (Game
          Input) akan masih terjadi, kita akan
          perbaiki di Materi berikutnya.
Mobile Game Developer War 4: Online Camp




Finish mini quest to get exp!

MINI QUEST
Mobile Game Developer War 4: Online Camp


 Quest (Tantangan tambahan!)
1. Review sebuah game, dan jelaskan
   game logic dari game tersebut (bebas,
   kecuali game yang sudah dibahas di
   materi ini)!
Mobile Game Developer War 4: Online Camp


   Cara menyelesaikan Quest
1. Tulis jawaban pada email, atau dokumen
   word / open office (jika menggunakan
   gambar), dengan format nama file, nama-
   materikeberapa.doc
  – Contoh: Danang-materi2.doc
2. Kirim email ke:
   quest@agateacademy.com
3. Gunakan subject “Quest Online Camp
   02”
Mobile Game Developer War 4: Online Camp




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

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

More Related Content

More from Agate Studio

Lee marvin pitching-hacks
Lee marvin pitching-hacksLee marvin pitching-hacks
Lee marvin pitching-hacks
Agate Studio
 
Emotiv EPOC by Neneng
Emotiv EPOC by NenengEmotiv EPOC by Neneng
Emotiv EPOC by Neneng
Agate Studio
 
MMO Design Architecture by Andrew
MMO Design Architecture by AndrewMMO Design Architecture by Andrew
MMO Design Architecture by Andrew
Agate Studio
 
How to Persuade People by Dave
How to Persuade People by DaveHow to Persuade People by Dave
How to Persuade People by Dave
Agate Studio
 
Eddie supersmash goodminton
Eddie   supersmash goodmintonEddie   supersmash goodminton
Eddie supersmash goodminton
Agate Studio
 
Satriyo digital audio gears
Satriyo   digital audio gearsSatriyo   digital audio gears
Satriyo digital audio gears
Agate Studio
 
Advanced encryption standard (aes) epul
Advanced encryption standard (aes)   epulAdvanced encryption standard (aes)   epul
Advanced encryption standard (aes) epul
Agate Studio
 
Real Time Framework by Tonny
Real Time Framework by TonnyReal Time Framework by Tonny
Real Time Framework by Tonny
Agate 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 Puthut
Agate Studio
 
Hibernate by Jason
Hibernate by JasonHibernate by Jason
Hibernate by Jason
Agate Studio
 
Hardening Apache Web Server by Aswin
Hardening Apache Web Server by AswinHardening Apache Web Server by Aswin
Hardening Apache Web Server by Aswin
Agate Studio
 
Introduction to Global Illumination by Aryo
Introduction to Global Illumination by AryoIntroduction to Global Illumination by Aryo
Introduction to Global Illumination by Aryo
Agate Studio
 
Mobile Games Store by Valen
Mobile Games Store by ValenMobile Games Store by Valen
Mobile Games Store by Valen
Agate Studio
 
Characteristics of Musical Keys by Satriyo
Characteristics of Musical Keys by SatriyoCharacteristics of Musical Keys by Satriyo
Characteristics of Musical Keys by Satriyo
Agate Studio
 
Idol Cardgame by Naky
Idol Cardgame by NakyIdol Cardgame by Naky
Idol Cardgame by Naky
Agate Studio
 

More from Agate Studio (20)

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
 
Mobile Games Store by Valen
Mobile Games Store by ValenMobile Games Store by Valen
Mobile Games Store by Valen
 
Characteristics of Musical Keys by Satriyo
Characteristics of Musical Keys by SatriyoCharacteristics of Musical Keys by Satriyo
Characteristics of Musical Keys by Satriyo
 
Nelson easter egg
Nelson easter eggNelson easter egg
Nelson easter egg
 
Idol Cardgame by Naky
Idol Cardgame by NakyIdol Cardgame by Naky
Idol Cardgame by Naky
 

Recently uploaded

Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
pipinafindraputri1
 
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ikabab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
AtiAnggiSupriyati
 
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.pptHAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
nabilafarahdiba95
 
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxPPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
dpp11tya
 

Recently uploaded (20)

Kanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdfKanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdf
 
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
 
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxKontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
 
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ikabab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
 
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKAMODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
 
MAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdf
MAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdfMAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdf
MAKALAH KELOMPOK 7 ADMINISTRASI LAYANAN KHUSUS.pdf
 
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptxSesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
 
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMMAKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
 
Modul Projek - Batik Ecoprint - Fase B.pdf
Modul Projek  - Batik Ecoprint - Fase B.pdfModul Projek  - Batik Ecoprint - Fase B.pdf
Modul Projek - Batik Ecoprint - Fase B.pdf
 
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.pptHAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
 
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SDPPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
 
algoritma dan pemrograman komputer, tugas kelas 10
algoritma dan pemrograman komputer, tugas kelas 10algoritma dan pemrograman komputer, tugas kelas 10
algoritma dan pemrograman komputer, tugas kelas 10
 
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxPPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
 
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdfContoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
 
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptxMODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
 
CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7
 
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
 
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptxBab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
 
Pendidikan-Bahasa-Indonesia-di-SD MODUL 3 .pptx
Pendidikan-Bahasa-Indonesia-di-SD MODUL 3 .pptxPendidikan-Bahasa-Indonesia-di-SD MODUL 3 .pptx
Pendidikan-Bahasa-Indonesia-di-SD MODUL 3 .pptx
 
PPT Mean Median Modus data tunggal .pptx
PPT Mean Median Modus data tunggal .pptxPPT Mean Median Modus data tunggal .pptx
PPT Mean Median Modus data tunggal .pptx
 

MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

  • 1. Mobile Game Developer War 4: Online Camp MGDW4 Online Camp #2 Game Loop, Game Logic, dan Game Input
  • 2. Mobile Game Developer War 4: Online Camp Definisi Potongan kode utama yang dijalankan terus menerus.
  • 3. Mobile Game Developer War 4: Online Camp Contoh Game Loop sederhana
  • 4. Mobile Game Developer War 4: Online Camp Contoh game loop public void run() { pada J2ME //Inisialisasi variable yang hanya dibuat1x while (gameIsRun) { //Berisi fungsi-fungsi yang dipanggil agar game berjalan getInput(); update(); draw(); flushGraphics(); try { Thread.sleep(30); }catch (InterruptedException ie) { } } }
  • 5. Mobile Game Developer War 4: Online Camp Game Logic
  • 6. Mobile Game Developer War 4: Online Camp Definisi Implementasi game design menjadi algoritma pemrograman.
  • 7. Mobile Game Developer War 4: Online Camp Contoh: Minesweeper • Tampilkan semua kotak tergantung statusnya – Tertutup, terbuka kosong, terbuka berisi, ditandai bendera • Acak posisi bom • Hitung nilai petunjuk di setiap kotak • Jika ada kotak yang dibuka, tampilkan isinya – Jika ternyata kosong, buka kotak di sekitarnya • Game selesai kalau semua kotak yang bukan bom sudah terbuka
  • 8. Mobile Game Developer War 4: Online Camp Contoh: Pong • Tampilkan skor, paddle, dan bola • Bola: – Bola bergerak dengan kecepatan tertentu – Bola memantul ke tembok dan paddle • Gameplay – Jika bola lewat sisi kanan/kiri, maka skor untuk pemain di sisi berlawanan • Input: – Jika ada input pemain A, gerakkan paddle A – Jika ada input pemain B, gerakkan paddle B
  • 9. Mobile Game Developer War 4: Online Camp Contoh: Magic Cups • Acak posisi bola • Jika pemain memilih gelas tertentu, buka dan tampilkan isinya
  • 10. Mobile Game Developer War 4: Online Camp WAKTUNYA PRAKTEK!
  • 11. Mobile Game Developer War 4: Online Camp Game Input • Menerima input keypad dari pemain public void run() { 1 while(true){ • Memproses aksi yang bersangkutan //System.out.println("Testing dulu yah..."); private void getInput() getInput(); { 2 flushGraphics(); try { int keystate = getKeyStates(); Thread.sleep(SLEEP_TIME); if(keystate == UP_PRESSED){ } catch (InterruptedException e) { System.out.println("UP"); e.printStackTrace(); }else if (keystate == LEFT_PRESSED){ } System.out.println("LEFT"); } }else if (keystate == DOWN_PRESSED){ } System.out.println("DOWN"); }else if (keystate == RIGHT_PRESSED){ System.out.println("RIGHT"); } } Catatan: kemungkinan besar input akan terdeteksi lebih dari satu kali, karena Update() dipanggil beberapa kali dalam waktu yang singkat. Error ini akan kita tangani di materi berikutnya. 3
  • 12. Mobile Game Developer War 4: Online Camp Bedah Game Magic Cups • Visual: – Tiga buah gelas (tertutup dan terbuka) – *untuk praktek pertama kita menggunakan text saja • Data penting – Posisi bola (di balik gelas) – Pilihan pemain
  • 13. Mobile Game Developer War 4: Online Camp Magic Cups Logic public static int SLEEP_TIME = 1000/30; int posisiBola; • Init int pilihanPemain; – Inisialisasi objek penting Random r; boolean gameover; • AcakBola boolean sudahJawab; – Mengacak variabel protected MainCanvas() { 1 posisiBola public void run() { • PilihGelas init(); – Meminta pemain memilih acakBola(); pilihGelas(); gelas while(!gameover){ getInput(); • CekPilihanPemain cekPilihanPemain(); – Jika pemain sudah memilih, flushGraphics(); try { beri tahu hasilnya Thread.sleep(SLEEP_TIME); } catch (InterruptedException e) { Penting! Jangan lupa e.printStackTrace(); menambahkan import } untuk objek Random. } import javax.microedition.lcdui.game.GameCanvas; System.out.println("Game over."); import javax.microedition.lcdui.Graphics; } 2 import java.util.Random; 3
  • 14. Mobile Game Developer War 4: Online Camp Fungsi-fungsi yang dibuat • Init – Inisialisasi objek penting private void init(){ 1 • AcakBola r = new Random(); gameover = false; – Mengacak variabel posisiBola sudahJawab = false; • PilihGelas } pilihanPemain = -1; – Meminta pemain memilih gelas private void acakBola(){ 2 posisiBola = r.nextInt(3); //0-2 //System.out.println("Posisi bola: "+posisiBola); } private void pilihGelas(){ System.out.println("[ ] [ ] [ ]"); 3 System.out.println("Tebak bola ada di mana."); System.out.println("Tekan kiri, atas, atau kanan untuk menebak!"); } 2
  • 15. Mobile Game Developer War 4: Online Camp Fungsi-fungsi yang dibuat • CekPilihanPemain – Jika pemain sudah memilih, beri tahu hasilnya private void cekPilihanPemain(){ if(sudahJawab) 1 { //cek jawaban if(pilihanPemain == posisiBola) { System.out.println("Selamat! Tebakan anda benar!"); }else{ System.out.println("Sayang sekali tebakan anda salah! :("); } private void gambarHasil() { gambarHasil(); if(posisiBola==0){ 2 gameover=true; System.out.println("[o] [ ] [ ]"); } System.out.println("Bola ada di kiri"); } } else if(posisiBola==1){ System.out.println("[ ] [o] [ ]"); System.out.println("Bola ada di tengah"); } else if(posisiBola==2){ System.out.println("[ ] [ ] [o]"); System.out.println("Bola ada di kanan"); } }
  • 16. Mobile Game Developer War 4: Online Camp Fungsi yang diubah • Update fungsi getInput() untuk menerima kiri, atas, private void getInput() { dan kanan sebagai int keystate = getKeyStates(); if(!sudahJawab){ jawaban if (keystate == LEFT_PRESSED){ //System.out.println("LEFT"); pilihanPemain =0; sudahJawab=true; }else if(keystate == UP_PRESSED){ //System.out.println("UP"); pilihanPemain =1; sudahJawab=true; }else if (keystate == RIGHT_PRESSED){ //System.out.println("RIGHT"); pilihanPemain =2; sudahJawab=true; } } }
  • 17. Mobile Game Developer War 4: Online Camp Hasil Jawaban salah. Jawaban benar. Namun game baru berjalan sekali saja.
  • 18. Mobile Game Developer War 4: Online Camp Buat permainan bisa dimainkan terus menerus.
  • 19. Mobile Game Developer War 4: Online Camp Solusi private void cekPilihanPemain(){ if(sudahJawab) 1 { public void run() { //cek jawaban init(); if(pilihanPemain == posisiBola) acakBola(); { pilihGelas(); System.out.println("Selamat! while(!gameover){ Tebakan anda benar!"); getInput(); resetGame() }else{ cekPilihanPemain(); System.out.println("Sayang sekali flushGraphics(); tebakan anda salah! :("); try { } Thread.sleep(SLEEP_TIME); gambarHasil(); } catch (InterruptedException e) { //gameover=true; e.printStackTrace(); resetGame(); } } } } System.out.println("Game over."); } private void resetGame() { acakBola(); pilihGelas(); Catatan: error pada slide 11 (Game pilihanPemain=-1; Input) akan masih terjadi, kita akan sudahJawab=false; perbaiki di Materi berikutnya. } 2
  • 20. Mobile Game Developer War 4: Online Camp Catatan: error pada slide 11 (Game Input) akan masih terjadi, kita akan perbaiki di Materi berikutnya.
  • 21. Mobile Game Developer War 4: Online Camp Finish mini quest to get exp! MINI QUEST
  • 22. Mobile Game Developer War 4: Online Camp Quest (Tantangan tambahan!) 1. Review sebuah game, dan jelaskan game logic dari game tersebut (bebas, kecuali game yang sudah dibahas di materi ini)!
  • 23. Mobile Game Developer War 4: Online Camp Cara menyelesaikan Quest 1. Tulis jawaban pada email, atau dokumen word / open office (jika menggunakan gambar), dengan format nama file, nama- materikeberapa.doc – Contoh: Danang-materi2.doc 2. Kirim email ke: quest@agateacademy.com 3. Gunakan subject “Quest Online Camp 02”
  • 24. Mobile Game Developer War 4: Online Camp • Untuk menyelesaikan materi, kunjungi http://bit.ly/NxI8aZ • Untuk pertanyaan atau diskusi, bisa dilakukan via forum: http://bit.ly/mgdw4forum

Editor's Notes

  1. Game Loop merupakan jantung dari sebuah game. Biasanya Game Loop menangani user input, update game state, menangani AI, memainkan musik dan sound effect, dan menampilkan display game.
  2. Bikin beberapa contoh game loop dan hal yang dilakukan: pong, minesweeper
  3. Contoh game loop yang general
  4. Prosesmemasukkanide game kedalamsebuahmekanikapermainanseringdisebutjuga Game Logic.Dimana game logic inimengaturbagaimanamekanisme game terbentuk. Mulaidaribagaimana char bergerak, melompat, bertemumusuh, highscore, dan lain – lain. Bahkanuntuk game puzzle, game logic lebihfokusterhadap problem solving.Misalnyapada game Sudoku, kitafokuskepadabagaimanamelakukanpengecekanterhadap angka yang kitamasukkankedalamkotak, cekapakahada angka yang samadalamsatukolomataubarisdancekapakahdalamkotak 3x3 ada angka yang samaatautidak.