BAB 4 SPRITE. Contoh sebuah Sprite

dokumen-dokumen yang mirip
BAB 5 SPRITE. Contoh sebuah Sprite

GameCanvas digunakan untuk memperluas fungsi yang dimiliki oleh class Canvas

Agate Mobile Game Developer Camp

Bab 7. TiledLayer. Menyusun graphics dari TiledLayer dan di masukkan dalam LayerManager

Bab 6. Layer Manager

Score: 40.0 Persentage: % ~ u ~ Generated by Foxit PDF Creator Foxit Software For evaluation only.

PEWARISAN D E W I S A R T I K A, M. K O M

Pemrograman. Pertemuan-3 Fery Updi,M.Kom

BAB IV HASIL DAN UJI COBA

TAMBAHAN MATERI BAB 15 BUKU DIKLAT PEMROGRAMAN KOMPUTER 2

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

OBJECT ORIENTED PROGRAMMING (OOP)

Variabel dengan tipe dasar hanya dapat menyimpan sebuah nilai

Modul Pelatihan : Pembuatan Game Animasi Menggunakan Greenfoot

Modul 8: awt. Setelah mengikuti mata kuliah ini mahasiswa dapat membuat program sederhana dalam lingkungan window. Modul 8 - awt 1

Chapter 1 Buat aplikasi kita menggunakan VisualMidlet

Score: Persentage: % ~ u ~ Generated by Foxit PDF Creator Foxit Software For evaluation only.

Sprite di-render dengan urutan index yang paling besar ke index yang paling kecil (descending)

BAB IV DESKRIPSI PEKERJAAN. media promosi digital bernama Advergame. Dalam kerja praktik ini penulis

Array Pendeklarasian Array

BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS

BAB 4 ARRAY. number1 = 10; number2 = 20; number3 = 30;

PEMROGRAMAN GAME MOBILE Tugas III Contoh Sprite. Oleh : I Dewa Made Yuda Aditya Putra

TIPE DATA PADA JAVA. Pertemuan (K-04/L-04)

Inheritance dan Polimorfisme

Modul Praktikum Bahasa Pemrograman 1

Didalam menampilkan peta yang sudah kita buat, kita akan menggunakan Slick2D sebagai sebuah frameworknya.

Dwiny Meidelfi, M.Cs

PERTEMUAN 2 PEMOGRAMAN BERORIENTASI OBJEK L/O/G/O

Dasar Pemrograman Java

MODUL 3. Classes and Objects (part I)

BAB 3 PERANCANGAN SISTEM

Modul 2. [access specifier] [tipe data] [nama variabel];

Tipe data primitif adalah tipe data dasar yang dikenali oleh Java dan bukan merupakan class. Tipe data primitif ini dapat dikenali dengan ciri

Objek Data, Variabel, dan Konstanta. Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom

SUMBER BELAJAR PENUNJANG PLPG

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method

Array 1 Dimensi pada Java

BAB III ANALISA DAN PERANCANGAN

PERTEMUAN 3 OBJEK DAN CLASS

Inheritance dan Kata Kunci static

2011 Hak cipta di tangan penulis Budi Susanto TI UKDW Yogyakarta.

Cara Membaca File Text di JAVA

Modul 7 IMPORT DAN EXPORT MEDIA

ANALISA PERANCANGAN SISTEM

BAB IV IMPLEMENTASI DAN EVALUASI

2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.

INTERAKSI ANTAR OBJECT

Pemrograman Lanjut Review Class dan Object PTIIK

Kreatif dan Produktif di Internet : Pengenalan dan Pelatihan Scratch

BAB 7. Sebagai contoh, kita memiliki tiga variabel dengan tipe data int yang memiliki identifier berbeda untuk tiap variabel.

Class & Object 2. Imam Fahrur Rozi

BAB III ANALISIS MASALAH DAN RANCANGAN PROGRAM

Tabel 1. Instruksi untuk menampilkan teks No. Bahasa Pemrograman Instruksi 1. Pascal WRITE ( Bahasa pemrograman itu mudah );

OBJECT, CLASS DAN METHOD. 1. Mengetahui pengertian dari objek & class 2. Dapat membuat program sederhana dari java dengan menggunakna objek dan class

I. Tujuan Instruksional Umum Mengenal konsep dasar berorientasi objek Memahami dan dapat mengimplementasikan Kelas dan Objek pada java.

SILABUS MATAKULIAH. Pendahuluan Mengenal Tools Air for Android. - Menu bar - Component Inspektor - Tool Box - Libraries - Stage

JAVA BASIC PROGRAMMING Joobshet

Fajar Yusran Zebua DASAR ANIMASI

Dasar-Dasar OOP di Java

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB III METODE PENELITIAN. Metode penelitian yang digunakan adalah dengan cara mencoba

FM-UDINUS-BM-08-05/R0

Badiyanto, S.Kom., M.Kom. PBO java

Tutorial A Menggambar Bendera Merah Putih Pada Frame

LAPORAN PERCOBAAN V ( APLIKASI NILAI MAHASISWA) BERBASIS JAVA

DateField adalah objek yang dapat digunakan untuk menampilkan atau mengedit objek yang bertipe Date.

Pemrograman Berorientasi. Inheritance

BAB III ANALISIS DAN RANCANGAN PROGRAM

KELAS DAN OBJEK KELAS

Berikut merupakan langkah langkah instalasi game Di sini ada Hantu. 1. Copyfile Di sini ada Hantu.xap ke dalam folder aplikasi Windows Phone

Pengenalan OOP. Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program.

Mobile Computing. Ramos Somya

Preliminary Test Axioo Class Program

1. Tujuan. 2. Latar Belakang. 3. Percobaan. Modul Praktikum Layer Manager

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

MODUL 6 PERULANGAN. A. String. 1. Instansiasi dan Inisialisasi. M0601xxyyy.jar

BONUS. Dasar Java Mobile. Mengenal Java Mobile Mengenal MIDlet Mobile Grafis Mobile Animasi Latihan Soal

Bahasa Pemrograman 2.

BAB III ANALISA DAN PERANCANGAN

1. Keyword mana yang memiliki fungsi sama dengan keyword this dan menyediakan reference ke atribut turunan dari objek? super

HASIL DAN PEMBAHASAN Analisis Pola Word Graph Kata Benda 1 Listen to Customer 2 Build or Revise Mock-up Customer Test Drives Mock-up

KONSEP OOP: PEWARISAN / INHERITANCE

BAB IV PENGALAMAN KERJA PRAKTEK

MODUL PEMOGRAMAN WEB II STMIK IM BANDUNG MODUL PEMOGRAMAN WEB II. Oleh: CHALIFA CHAZAR. Chalifa Chazar edu.script.id

Modul Praktikum 4 Pemograman Berorientasi Objek

COURSE OUTLINE PEMROGRAMAN BERORIENTASI OBJEK

BAB Argument Command-Line dan System Properties

2.1 if Jenis-jenis Percabangan if adalah if, if else, If else if else if - else

Permainan Remi Sederhana

Gambar 4.1 Macam-macam Komponen dengan Bentuk Kompleks

BAB IV HASIL DAN UJI COBA

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

BAB 4 IMPLEMENTASI DAN EVALUASI

Praktikum 3 Konsep Class, Attribute dan Method

BAB IV IMPLEMENTASI DAN PENGUJIAN

PENERAPAN METODE COLLISION DETECTION DALAM PERMAINAN BERBASIS ANDROID. Yulianti Haerun Nisa,Prihastuti Harsani dan Arie Qur ania.

BAB III ANALISA, KONSEP DAN PERANCANGAN

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

Transkripsi:

BAB 4 SPRITE 4.1 PENGENALAN SPRITE Salah satu faktor yang membuat keberhasilan game adalah grafis yang unggul. Sebagian besar objek pada sebuah game dikategorikan sebagai grafis khusus yang disebut sprites. Sebuah sprite dapat berupa bullet, monster, karakter utama, musuh, kekuatan spesial, kunci dan pintu. Contoh sebuah Sprite Pada umumnya Sprite adalah grafis animasi. Grafis animasi dibuat dari sprite yang sama namun berbeda penampakannya. Kumpulan sprite biasanya mengacu sebagai sebuah kumpulan frame. Frame ini dapat dibuat secara terurut ataupun tidak terurut. Umumnya sprites ditampilkan secara terurut untuk memudahkan pengkodean. Contoh kumpulan beberapa sprite Gambar diatas adalah ilustrasi dari kumpulan sprite yang menampilkan frame tunggu dan 4 frame dasar lainnya. 4.2 SPRITE CONSTRUCTOR Ada 3 konstruktor yang disediakan oleh kelas sprite 1. Sprite (Image image) membuat frame sprite tunggal, tidak dianimasikan. 2. Sprite (Sprite sprite) membuat sprite baru dari sprite lainnya 3. Sprite (Image image, int framewidth, int frameheight) membuat animasi sprite dengan lebih dari 2 frame, framewidth adalah lebar dari sebuah sprite dan frameheight adalah tinggi dari sebuah sprite. Pengembangan Mobile Game 1

Contoh kumpulan Sprite dengan bingkai di sekelilingnya Sesuai dengan gambar di atas, kita dapat memecah kumpulan sprite menjadi frame secara tersendiri. Pada contoh ini total lebar kumpulan sprite adalah 160 pixel, yang dibagi dengan 5 sehingga menjadi 5 buah frame dengan lebar masing-masing 32 pixel. Tinggi masing-masing frame adalah 32 pixel. Tinggi dan lebar tidaklah selalu sama, tetapi lebar dan tinggi harus konstan untuk semua sprite pada kumpulan sprite. Dengan kata lain, Anda tidak bisa memiliki sebuah frame dengan lebar 32 pixel dan sprite yang tersisa hanya memiliki lebar 16 pixel, semua fame harus memiliki lebar yang sama. Di dalam konstruktor Sprite (Image image, int framewidth, int frameheight) Anda akan diberitahu bahwa Anda tidak dapat menetapkan angka pada frame, hal ini secara otomatis dihitung oleh kelas Sprite. 4.3 MENGAPA 8 BIT, 16 BIT, 32 BIT? Anda akan diberitahu bahwa kebanyakan grafis termasuk sprite didalamnya, biasanya akan mengalami ketidaksesuaian tampilan antara batas lebar dan tinggi layar. Hal ini dikarenakan jumlah pixel yang digunakan berhubungan dengan jumlah warna yang digunakan. Ini mengacu pada kedalaman bit atau kedalaman warna. Banyak bit per pixel berarti banyak pula warna yang terdapat didalamnya. Rumusnya : 2 # bit = jumlah warna Gunakan rumus di atas untuk mengukur kedalaman 8, 16, 24 dan 32 bit, sehingga hasilnya : 2 8 = 256 warna 2 16 = 65.536 warna 2 24 = 16,7 juta warna 2 32 = 16,7 juta warna ditambah 8 bit channel alpha, sebuah channel alpha merupakan sebuah mask, ini menentukan bagaimana sebuah warna pada satu pixel ketika digabungkan dengan pixel yang lain. Penggabungan terjadi ketika satu pixel berada di atas pixel lainnya. Pengembangan Mobile Game 2

Walaupun demikian, Anda dapat memiliki sprite dengan ukuran lebih besar dari 8 pixel dan 256 warna. Idealnya, ini memungkinkan Anda untuk mencari pilihan terbaik ketika berhubungan dengan grafis untuk perangkat mobile. Semakin banyak warna yang digunakan maka semakin banyak pula proses yang diperlukan untuk me-render grafis. 4.4 SPRITE COLLISION (TUBRUKAN SPRITE) Tubrukan sprite adalah satu dari fungsi dasar pada berbagai aksi interaktif seperti pada game. Diantaranya adalah sprite yang berlari di dinding, sprite yang menembakkan sebuah peluru atau dua sprite saling mendahului satu sama lain. Deteksi tubrukan tidak diperlukan ketika suatu game berahir. Jadi tubrukan sprite jumlahnya tidak terbatas seperti tambahan level (level ups), tambahan kekuatan (power ups), kehilangan tenaga pada game balapan, membuka sebuah pintu, atau indikator yang mengijinkan pemain untuk menaiki tangga. Jadi bagaimana caranya mendeteksi tubrukan sprite? Tentu saja kita akan deteksi jika pixel dari sebuah sprite saling melengkapi/bertubrukan dengan pixel lain dari sprite lainnya. Tubrukan Sprite Untungnya, ada kelas spite yang dapat menangani hal tersebut. collideswith(image image, int x, int y, boolean pixellevel) atau collideswith(sprite sprite, boolean pixellevel) Pengembangan Mobile Game 3

Seperti yang anda lihat Anda dapat mendeteksi tubrukan dengan sprite lainnya atau dengan sebuah gambar. Metode dengan gambar sebagai sebuah masukan, Anda perlu menentukan lokasi gambar tersebut, hal ini mengacu pada x dan y pada sudut kiri atas gambar. pixellevel adalah sebuah nilai boolean dimana nilai true (benar) mengindikasikan deteksi level dari pixel dan false (salah) mengindikasikan perpotongan persegi. Anda dapat menetapkan ukuran dari perpotongan persegi, Anda juga boleh menetapkan bahwa perpotongan persegi lebih kecil daripada gambar itu sendiri. Hal ini akan menghilangkan area yang berlebih pada sprite dimana tubrukan terjadi dikarenakan tidak terlihatnya tubrukan persegi tetapi disana tidak ada pixel buram yang telah bertubrukan. Deteksi tingkatan pixel adalah ketika pixel buram dari sebuah sprite melewati pixel buram sprite lainnya. Metode yang sederhana dari deteksi tubrukan adalah perpotongan dari dua sprite yang melewati batas ukuran gambar dari sprite tersebut. Ini adalah metode yang ketiga : collideswidth(tiledlayer tiledlayer, Boolean pixellevel) Ini serupa dengan dua metode sebelumnya. TiledLayer akan dijelaskan secara detil pada seksi selanjutnya. 4.5 TAMPILAN SPRITE Untuk menampilkan atau membuat sprite secara sederhana dengan memanggil metode paint, Anda perlu menandai objek Graphics adalah parameter yang diperlukan. Mengingat bahwa Anda harus menggunakan metode setvisible(boolean) yang pertama dipanggil pada metode paint, Anda perlu menentukan agar nilai boolean didalamnya adalah true. 4.6 URUTAN TAMPILAN SPRITE Ada beberapa metode yang tersedia : Pengembangan Mobile Game 4

getframesequencelength() o mengembalikan jumlah elemen pada sebuah rangkan frame getframe() o mendapatkan kembali indeks angka pada rangkaian frame, tetapi ini tidak berlaku untuk frame yang saat ini telah ditampilkan nextframe() o menset rangkaian frame pada frame selanjutnya, jika rangkaian berada pada frame terakhir maka akan diset menjadi frame pertama. prevframe() o menset rangkaian frame pada frame sebelumnya, jika rangkaian berada pada frame pertama maka akan diset menjadi frame terakhir. setframe(int sequenceindex) o untuk menset rangkaian frame secara manual. setframesequence(int[] sequence) o untuk menset frame yang belum ditetapkan secara manual. Untuk lebih jelasnya lihat J2ME API. 4.7 KELEMAHAN SPRITE Anda perlu berhati-hati pada penggunaan gambar transparan dan tidak transparan. Game sederhana seperti TicTacToe, gambar transparan mungkin saja tidak penting atau diperlukan. Pada game interaktif tingkat tinggi dimana ada banyak potensi untuk tubrukan antar sprite dan/atau gambar latar belakang yang bervariasi, Anda mungkin akan memepertimbangkan untuk menggunakan gambar transparan. Sebaiknya Anda mencek apakah perangkat mobile yang akan Anda gunakan mendukung gambar transparan jika Anda ingin menggunakannya. Pengembangan Mobile Game 5

Non Transparan Sprite vs Transparan Sprite 4.8 TRANSFORMASI SPRITE Ada metode yang dapat memanipulasi rotasi Sprite. Transformasi diset dengan memakai metode settransform(transform). Parameternya bernilai integer; walaupun demikian, ada nilai statis yang tersedia yang dapat Anda gunakan: Static Fields Integer Value TRANS_NONE 0 TRANS_MIRROR_ROT180 1 TRANS_MIRROR 2 TRANS_ROT180 3 TRANS_MIRROR_ROT270 4 TRANS_ROT90 5 TRANS_ROT270 6 TRANS_MIRROR_ROT90 7 Pengembangan Mobile Game 6

Ketika tansformasi diterapkan, sprite secara otomatis akan memposisikan dirinya berada ditengah (center). Oleh karena itu, referensi titik untuk sprite tidak berubah, namun nilai yang dikembalikan dari getx() dan gety() akan berubah menurut posisi yang sekarang dari sudut kiri atas sprite. 4.9 OPTIMALISASI SPRITE Optimalisasi gambar biasanya merupakan proses menghilangkan warna yang tidak dapt dilihat oleh mata manusia. Keuntungan dari optimalisasi adalah untuk mereduksi ukuran gambar, yang dikemas dalam file jar. Pengembangan Mobile Game 7

Contoh sederhana pada emulator Sprite 4.10 PERLUASAN KELAS SPRITE Ada beberapa alasan mengapa anda boleh mewariskan kelas sprite, yaitu : 1. Dapat menambah kegunaan sprite 2. Kelas sprite dapat digunakan seperti kelas sprite dasar pada semua game sprite 3. Meringkas fungsi sprite Mengacu pada point pertama, Anda mungkin menemukan kelas sprite telah disediakan oleh sun, tidak semua fitur yang ada akan Anda gunakan, sebagai contoh ketika Anda membuat game balap mobil. Pada game balapan kebanyakan kecepatan Pengembangan Mobile Game 8

adalah sebuah faktor, Jadi Anda boleh mewariskan kelas sprite dan menambahkan variabel yang diperlukan dan metode yang perlu digunakan. Contoh lainnya yaitu dimana Anda ingin mewariskan kelas Sprite adalah Say misalnya, anda memiliki beberapa jenis sprite yang berbeda tetapi setiap jenis memiliki karakteristik yang telah ditentukan. Sebagai contoh, say adalah sprite yang bertindak sebagai pemain memiliki atribut seperti tenaga, ketangkasan, kecepatan, kecerdasan dan sprite yang bertindak sebagai musuh memiliki atribut yang mengindikasikan ragam musuh yang ada dan bar kehidupan. Kedua sprite tersebut masih memberitahukan karakteristik yang sama seperti posisi dan nama mereka. Anda sekarang dapat membuat sebuah kelas sprite dasar yang berisi fitur umum untuk semua sprite, sebagaimana membuat sprite child yang berisi kedua karakteristik mereka dan sifat yang diwariskan masih disimpan pada karakteristik umum. Anda mungkin telah diberitahu pada contoh sederhana sprite pergerakan sprite hanyalah kiri, kanan, atas dan bawah. Jika Anda mencoba untuk menekan tombol 2 sekali sepertimengarah pada kanan dan atas sehingga menciptakan sebuah arah sudut, ini adalah salah satu contoh dari dasar arah lainnya. Untuk menciptakan gerakan ke arah barat daya, tenggara, barat laut atau timur laut, Anda perlu mendefinisikan sprite yang tepat dan kalkulasi yang tepat. Ini hanyalah beberapa dasar manipulasi menggunakan perhitungan matematika, tetapi yang lebih penting manakah yang harus dikerjakan? Untuk menajaga kode Anda menjadi sedikit lebih teratur dan bersih mungkin Anda perlu mempertimbangkan untuk meng-enkapsulasi pekerjaan ini ke dalam sebuah Sprite sesuai selera Anda. 4.11 Membuat Kelas Sprite Anda Sendiri Jika kelas Sprite secara total tidak sesuai dengan keperluan Anda, Anda memiliki pilihan untuk mewariskan kelas Layer atau secara total memulai dari scratch dan menerapkannya pada kelas sprite Anda sendiri, tentu saja Anda harus memberinya nama yang berbeda. Di bawah ini adalah contoh tidak lengkap dari kelas sprite yang diimplementasikan dari scratch, Anda dapat mengambil contoh ini dan melengkapinya sesuai dengan kebutuhan Anda. Pengembangan Mobile Game 9

import java.microedition.lcdui.*; public class MySprite { private Image image; private int positionx; private int positiony; private int framewidth; private int frameheight; private int numframes; private int currentframe; private boolean visible; public MySprite(Image image, int framewidth, int frameheight, int numframes) throws Exception { this.image = image; this.framewidth = framewidth; this.frameheight = frameheight; this.numframes = numframes; public int getx() { return this.positionx; public void setx(int positionx) { this.positionx = positionx; public int gety() { return this.positiony; public void sety(int positiony) { this.positiony = position Y; // Dilanjutkan dengan code Anda disini Pengembangan Mobile Game 10

4.12 LINK MENCARI SPRITE Kebanyakan developer (pengembang) seperti Anda kemungkinan tidak memiliki keterampilan untuk menciptakan sprite yang indah. Beberapa link yang menyediakan sprite antara lain : 1. http://www.arifeldman.com 2. http://www.idevgames.com 3. http://www.spriteworks.com Pilihan Anda yang lain adalah menyewa desainer professional sprite yang terkadang disebut pixel pusher. Akhirnya Anda akan selalu dapat belajar untuk membuat sprite Anda sendiri. Ini mungkin bukanlah ide yang buruk jika Anda berencana untuk membuat sebuah game 2D sederhana dan jika Anda tidak ingin menghabiskan waktu berpikir untuk mempelajari lebih banyak tentang menggambar sprite. Silakan jika Anda tidak memiliki kemampuan artistik Anda mungkin lebih baik memilih 2 saran yang pertama. Tetapi ingatlah grafis penting tetapi mengerjakan pembuatan game juga lebih penting. Jadi pada awalnya Anda mungkin hanya ingin menggunakan grafis yang sederhana tetapi tidak terlalu baik sampai Anda memiliki sebuah game yang berfungsi penuh. Kemudaian Anda dapat memperhatikan perkembangan grafis. Pengembangan Mobile Game 11