Selasa, 12 Juni 2012

UNIT III - Bab 3 - MIDP 2.0 Permainan


UNIT III - Bab 3 - MIDP 2.0 Permainan

Game mobile telah menjadi sangat populer hari ini. Hal ini sebenarnya menjadi roti dan mentega untuk kebanyakan perusahaan perangkat lunak mobile. Juga merupakan hal besar berikutnya menurut analis industri. Tapi meskipun semua hype generasi platform MIDP pertama tidak memiliki dukungan langsung untuk mobile gaming. Kami sebagai pengembang harus menulis mesin kita sendiri permainan. Ini disajikan sebuah penghalang yang sangat besar untuk kreativitas pengembang game. Tampilan dan nuansa permainan ini sangat berkorelasi dengan kualitas mesin permainan yang digunakan. Karena tidak ada mesin permainan standar yang tersedia setiap perusahaan mengembangkan permainan sendiri mesin sehingga meningkatkan biaya pengembangan dan waktu. Juga sejak menulis mesin permainan yang tidak mudah perangkat lunak profesional yang paling yang mencoba memasuki jalur ini tanpa dukungan apapun harus meninggalkan pengembangan game.
Menjaga ini dalam pikiran para pengembang dari MIDP 2.0 telah memberi kita mesin permainan standar. Mereka telah memberi kami beberapa kelas standar yang bisa membuat pengembangan game 2D jauh lebih mudah. Bahkan saya secara pribadi dapat menjamin bahwa membuat game di MIDP 2.0 adalah paling sedikit 70% lebih sederhana dari membuat game yang sama di MIDP 1.0.
javax.microedition.lcdui.game
Kelas-kelas pengembangan game di MIDP 2.0 yang terkandung dalam paket ini. Paket ini berisi kelas-kelas berikut untuk menyederhanakan tugas penciptaan permainan:
·    GameCanvas
·    Lapisan
·    LayerManager
·    Sprite
·    TiledLayer
Masing-masing kelas telah dijelaskan di bawah ini secara rinci.
publik GameCanvas kelas abstrak
Apa itu?
Kelas GameCanvas adalah tambahan baru yang sangat penting dalam MIDP 2.0. Ini memberikan dasar untuk antarmuka pengguna permainan penuh baku. Kelas Canvas sebelumnya dalam MIDP 1.0 memiliki kelemahan tertentu yang terkait dengan game. Kelas ini mewarisi dari kanvas fungsi yang berhubungan dengan perintah, peristiwa input dll juga menyediakan game-spesifik kemampuan seperti buffer grafis off-layar dan kemampuan untuk query status kunci.
o     Konstruktor
  • dilindungi GameCanvas (boolean suppressKeyEvents)
Konstruktor ini membuat turunan baru dari GameCanvas. Konstruktor ini juga menciptakan buffer baru untuk GameCanvas yang awalnya diisi dengan piksel putih.
o     Bidang
  • int akhir public static DOWN_PRESSED
Bit ini merupakan kunci DOWN.
Konstan Nilai: 0x0040
  • KEBAKARAN public int static final _PRESSED
             Bit ini merupakan kunci KEBAKARAN.
Konstan Nilai: 0x0100
  • int akhir public static GAME_A_PRESSED
Bit ini merupakan kunci GAME_A (Kunci ini mungkin tidak didukung pada semua perangkat).
Konstan Nilai: 0x0200
  • int akhir public static GAME_B_PRESSED
Bit ini merupakan kunci GAME_B (Kunci ini mungkin tidak didukung pada semua perangkat).
Konstan Nilai: 0x0400
  • int akhir public static GAME_C_PRESSED
Bit ini merupakan kunci GAME_C (Kunci ini mungkin tidak didukung pada semua perangkat).
Konstan Nilai: 0x0800
  • int akhir public static GAME_D_PRESSED
Bit ini merupakan kunci GAME_D (Kunci ini mungkin tidak didukung pada semua perangkat).
Konstan Nilai: 0x1000
  • int akhir public static LEFT_PRESSED
             Bit ini merupakan kunci KIRI.
Konstan Nilai: 0x0004
  • int akhir public static RIGHT_PRESSED
             Bit ini merupakan kunci KANAN.
Konstan Nilai: 0x0020
  • int akhir public static UP_PRESSED
Bit ini merupakan kunci UP.
Konstan Nilai: 0x0002
o     Metode
  • public void flushGraphics ()
Metode ini flushes buffer off-layar ke layar. Ukuran area yang memerah adalah sama dengan ukuran ini GameCanvas. Metode ini tidak mengubah isi dari buffer off-layar.
  • public void flushGraphics (int x, int y, int width, int tinggi)
Ini flushes metode wilayah tertentu dari buffer off-layar ke layar. Metode ini tidak mengubah isi dari buffer off-layar.
  • dilindungi javax.microedition.lcdui.Graphics getGraphics ()
Metode ini mengembalikan objek Graphics yang membuat off-screen buffer ini GameCanvas.
  • public int getKeyStates ()
Metode ini mengembalikan integer yang berisi informasi negara kunci (satu bit per kunci). Ini kembali metode ini 0 jika GameCanvas ini saat ini tidak ditampilkan.
  • public void paint (javax.microedition.lcdui.Graphics g)
Metode ini melukiskan ini GameCanvas.
Lapisan masyarakat kelas abstrak
Apa itu?
Layer adalah kelas abstrak.   Ini merupakan elemen visual dari permainan. Lapisan Masing-masing memiliki sifat tertentu seperti:
  • X koordinat
  • Koordinat Y
  • Lebar
  • Tinggi
  • Visibilitas statusnya  
Subclass dari kelas layer harus menerapkan metode cat sehingga mereka dapat diberikan.
o     Metode
  • public int getHeight ()
Metode ini mengembalikan ketinggian dari objek Layer dalam piksel.
  • public int getWidth ()
Metode ini mengembalikan lebar objek Layer dalam piksel
  • public int getX ()
Metode ini mengembalikan objek Layer horisontal posisi.
  • public int getY ()
Metode ini mengembalikan objek Layer vertikal posisi.
  • public boolean isVisible ()
Metode ini mengembalikan benar jika Layer terlihat. Jika tidak, akan return false bila layer tidak terlihat.
  • public void bergerak (int dx, int dy)
Metode ini bergerak objek layer dengan jarak horisontal dan vertikal ditentukan.
  • public void cat abstrak (javax.microedition.lcdui.Graphics g)
Metode ini melukiskan Lapisan ini jika terlihat. Objek Lapisan diberikan pada x saat ini dan posisi y pada layar. Misalnya jika posisi dari objek layer adalah pada x: 100 y: 100 maka objek ini akan diberikan mulai dari posisi ini.
  • public void setPosition (int x, int y)
Metode ini menetapkan posisi ini Layer sehingga kiri atas pojok beralamat di (x, y) posisi dalam sistem koordinat pelukis.
  • public void setVisible (boolean terlihat)
Metode ini menetapkan visibilitas Layer ini. Sebuah Layer terlihat diberikan ketika metode cat yang disebut sementara layer terlihat tidak diberikan.
masyarakat kelas LayerManager
Apa itu?
Kelas LayerManager digunakan untuk mengelola serangkaian Layers. Ini tidak berarti bahwa lLayers tidak dapat digunakan tanpa kelas ini tapi kelas LayerManager menyederhanakan proses rendering Lapisan yang telah ditambahkan ke dalamnya dengan secara otomatis rendering daerah yang benar dari setiap layer dalam urutan yang sesuai. Bahkan LayerManager adalah salah satu fitur baru yang paling kuat dari MIDP 2.0. Perlu diketahui bahwa LayerManager yang melukis Layers di z - order yaitu yang terakhir ditambahkan dicat pertama dan satu ditambahkan pertama dicat yang terakhir.
o     Konstruktor
  • publik LayerManager ()
Konstruktor ini menciptakan LayerManager baru.
o     Metode
  • public void append (javax.microedition.lcdui.game.Layer l)
Metode ini menambahkan suatu Layer untuk LayerManager ini. Layer ditambahkan ke daftar Layers yang ada seperti bahwa ia memiliki indeks tertinggi yaitu akan dicat terjauh dari pengguna.
  • javax.microedition.lcdui.game.Layer publik getLayer Pada (int indeks)
              Metode ini mengembalikan Layer yang memiliki indeks tertentu.
  • public int getSize ()
             Metode ini mengembalikan jumlah Layers
  • public void saya nsert (javax.microedition.lcdui.game.Layer l, int index)
Metode ini memasukkan Layer baru di LayerManager ini pada indeks tertentu. Lapisan pertama ini dihapus dari LayerManager ini jika telah ditambahkan.
  • public void paint (javax.microedition.lcdui.Graphics g, int x, int y)
Metode ini membuat tampilan jendela saat ini LayerManager di lokasi yang ditentukan.
  • public void hapus (javax.microedition.lcdui.game.Layer l)
Metode ini akan menghapus layer tertentu dari LayerManager ini.
  • public void se tViewWindow (int x, int y, int width, int tinggi)
Metode ini menentukan jendela tampilan di LayerManager tersebut. Jendela tampilan mendefinisikan wilayah yang LayerManager menarik ketika metode cat nya disebut. Metode ini memungkinkan pengembang untuk mengontrol ukuran daerah tampak. Hal ini juga memungkinkan dia untuk mengontrol lokasi serta dari jendela pandang relatif terhadap sistem koordinat LayerManager tersebut.
public class Sprite
Apa itu?
Permainan umumnya terdiri dari karakter dan objek. Sprite adalah sebuah elemen yang dapat diberikan untuk menunjukkan karakter yang berbeda dan objek dalam permainan. MIDP 2.0 menyediakan kelas Sprite sangat fleksibel. Kelas ini mendukung fitur berikut:
·    Animasi
·    Gerakan
·    Collision Detection
·    Gambar Transformasi
·    Kemampuan untuk Mengubah Status Visibilitas
Kelas Sprite demikian kelas penting sementara membangun permainan animasi. Kelas ini sangat berguna untuk arcade game dan permainan sisi bergulir.
o     Konstruktor
  • publik Sprite (javax.microedition.lcdui.Image gambar)
Konstruktor ini membangun sebuah Sprite non-animasi baru menggunakan Foto di parameter.
  • publik Sprite (javax.microedition.lcdui.Image gambar, int frameWidth, int Tinggi frame)
Konstruktor ini menciptakan Sprite animasi baru menggunakan frame yang terdapat dalam Gambar disediakan. Semua frame pada gambar yang diberikan harus dengan ukuran yang sama. Parameter frameWidth dan Tinggi frame menentukan ukuran dari frame.
  • publik Sprite (javax.microedition.lcdui.Image gambar, int frameWidth, int    Tinggi frame)
             Konstruktor ini menciptakan Sprite baru dari Sprite lain.
o     Bidang
  • TRANS_MIRROR publik akhir static int
Bidang ini menyebabkan Sprite muncul tercermin tentang pusat vertikal.
Nilai: 2
  • TRANS_MIRROR_ROT publik akhir static int
Bidang ini menyebabkan Sprite muncul tercermin tentang pusat vertikal dan kemudian diputar searah jarum jam dengan 180 derajat.
Nilai: 1
  • TRANS_MIRROR_ROT publik akhir static int
Bidang ini menyebabkan Sprite muncul tercermin tentang pusat vertikal dan kemudian diputar searah jarum jam dengan 270 derajat.
Nilai: 4
  • TRANS_MIRROR_ROT publik akhir static int
Bidang ini menyebabkan Sprite muncul tercermin tentang pusat vertikal dan kemudian diputar searah jarum jam sebesar 90 derajat.
Nilai: 7
  • TRANS_NONE publik akhir static int
Bidang ini mengatakan bahwa transformasi tidak harus diterapkan pada Sprite.
Nilai: 0
  • TRANS_ROT publik akhir static int
Bidang ini menyebabkan Sprite muncul diputar searah jarum jam dengan 180 derajat.
Nilai: 3
  • TRANS_ROT publik akhir static int
Bidang ini menyebabkan Sprite muncul diputar searah jarum jam dengan 270 derajat.
Nilai: 6
  • TRANS_ROT publik akhir static int
Bidang ini menyebabkan Sprite muncul diputar searah jarum jam sebesar 90 derajat.
Nilai: 5
o     Metode
  • public boolean collidesWith (javax.microedition.lcdui.Image gambar, int x, int y, boolean pixelLevel)
Metode ini mengembalikan benar jika Sprite ini bertabrakan dengan gambar yang lain itu akan kembali palsu. Jika parameter pixelLevel benar maka tumbukan diperiksa pixel demi pixel. Jika parameter pixelLevel adalah palsu maka tabrakan kotak berlari digunakan.
  • public boolean collidesWith (Sprite s, boolean pixelLevel)
Metode ini mengembalikan true jika dua Sprite telah bertabrakan lain itu akan kembali palsu. Jika parameter pixelLevel benar maka tumbukan diperiksa pixel demi pixel. Jika parameter pixelLevel adalah palsu maka tabrakan kotak berlari digunakan.
  • public boolean collidesWith (TiledLayer t, boolean pixelLevel)
Metode ini mengembalikan benar jika Sprite ini bertabrakan dengan TiledLayer yang lain itu akan kembali palsu. Jika parameter pixelLevel benar maka tumbukan diperiksa pixel demi pixel. Jika parameter pixelLevel adalah palsu maka tabrakan kotak berlari digunakan.
CATATAN
Dalam pixel dengan tabrakan pixel piksel transparan tidak diperhitungkan. Jadi tabrakan terlihat sangat nyata. Dalam berlari tabrakan kotak pengguna mungkin beberapa kali melihat tabrakan bahkan ketika gambar yang sebenarnya tidak bertabrakan karena wilayah bertabrakan mungkin akan mengalami piksel transparan atau memiliki piksel yang menyatu dengan warna latar belakang.
  • public void defineCollisionRectangle (int x, int y, int lebar, intheight)
Metode ini mendefinisikan persegi panjang Sprite berlari yang digunakan untuk tujuan deteksi tabrakan di kotak berlari tabrakan. X dan y parameter dalam metode ini menentukan koordinat relatif terhadap ujung atas sprite untransformed kiri.
  • public void defineReferencePixel (int x, int y)
Metode ini mendefinisikan piksel referensi untuk Sprite ini. X dan y parameter dalam metode ini menentukan koordinat relatif terhadap ujung atas sprite untransformed kiri. Ini mungkin terletak di luar batas-batas frame.
  • public int getFrame ()
             Metode ini mengembalikan indeks saat ini dari frame dari sprite.
  • public int getFrameSequenceLength ()
             Metode ini mengembalikan jumlah elemen dalam urutan frame ini Sprite.
  • public int getRawFrameCount ()
             Metode ini mengembalikan jumlah frame baku Sprite ini.
  • public int getRefPixelX ()
             Metode ini mengembalikan lokasi horizontal pixel referensi
  • public int getRefPixelY ()
             Metode ini mengembalikan lokasi vertikal dari pixel referensi
  • public void nextFrame ()
Metode ini memilih frame berikutnya dalam urutan frame.
  • public void paint (javax.microedition.lcdui.Graphics g)
             Metode ini menarik Sprite.
  • public void prevFrame ()
             Metode ini memilih frame sebelumnya dalam urutan frame.
  • public void setFrame (int sequenceIndex)
              Metode ini memilih frame dalam urutan frame.
  • public void setFrameSequence (int [] urutan)
             Metode ini digunakan untuk pengaturan urutan frame untuk Sprite ini.
  • public void setImage (javax.microedition.lcdui.Image img, int frameWidth, int Tinggi frame)
             Metode ini digunakan untuk mengubah gambar yang mengandung frame Sprite itu.
  • public void setRefPixelPosition (int x, int y)
Metode ini menetapkan posisi ini Sprite sehingga pixel referensi terletak pada posisi x dan y dalam sistem koordinat pelukis.
  • public void setTransform (int mengubah)
Metode ini menetapkan jenis transformasi untuk Sprite ini. Transformasi dapat diterapkan untuk Sprite untuk mengubah penampilan diberikan.
masyarakat kelas TiledLayer
Apa itu?
Game dengan latar belakang bergulir sangat populer. Namun dalam MIDP 1.0 menciptakan latar belakang seperti dengan penggunaan ubin berulang untuk menghemat ruang sangat sulit. Oleh karena itu dalam MIDP 2.0 elemen TiledLayer telah ditambahkan. Ini adalah elemen visual terdiri dari kotak sel yang dapat diisi dengan serangkaian gambar ubin. Kelas ini memungkinkan lapisan virtual yang besar yang akan dibuat hanya dengan beberapa ubin. Teknik ini bukan teknik baru. Bahkan saya tahu teknik ini dari lebih dari satu dekade. Apa yang baru adalah dukungan dalam lingkungan pengembangan ponsel. Bahkan dalam lingkungan pengembangan mobile kelas ini sangat penting karena memori terbatas dan sumber daya komputasi yang tersedia bagi kita untuk menciptakan game.
TiledLayer bisa meskipun sebagai grid sel berukuran sama seperti MS Excel. Setiap sel dapat memiliki indeks ubin tertentu yang menentukan rendering dari sel itu. TiledLayer bisa menjadi lebih besar dalam ukuran dari layar ponsel. Juga MIDP 2.0 mendukung ubin animasi.
o     Konstruktor
  • publik TiledLayer (int kolom, baris int, javax.microedition.lcdui.Image gambar, int tileWidth, int tileHeight)
Konstruktor ini membangun sebuah TiledLayer baru. Dua parameter pertama menentukan jumlah kolom dan baris dalam TiledLayer tersebut. Parameter citra menentukan gambar yang berisi ubin. Parameter terakhir menentukan ukuran ubin individu dalam TiledLayer tersebut.
o     Metode
  • public int createAnimatedTile (int staticTileIndex)
Metode ini mengembalikan indeks dari genteng animasi yang baru dibuat. Indeks untuk ubin animasi selalu negatif.
  • public void fillCells (int col, int row, int numCols, int numRows, int tileIndex)
Metode ini mengisi sel daerah dengan ubin tertentu. Indeks ubin bisa merujuk ke indeks ubin statis, ubin animasi atau bahkan mungkin sengaja kosong kiri. Bahkan dalam permainan kompleks dengan berbagai objek TiledLayer ditumpangkan meninggalkan ubin bank beberapa waktu kebutuhan.
  • public int getAnimatedTile (int animatedTileIndex)
      Metode ini mendapatkan ubin direferensikan oleh ubin animasi.
  • public int getCell (int col, int baris)
             Metode ini mengembalikan indeks dari genteng di sel.
  • public int getCellHeight ()
             Metode ini mengembalikan tinggi dalam pixel dari sebuah sel tunggal dalam jaringan TiledLayer.
  • public int getCellWidth ()
             Metode ini mengembalikan lebar dalam pixel dari sebuah sel tunggal dalam jaringan TiledLayer.
  • public int getColumns ()
             Metode ini mengembalikan lebar dalam kolom dari grid TiledLayer.
  • public int getRows ()
             Metode ini mengembalikan tinggi dalam baris dari grid TiledLayer.
  • public void paint (javax.microedition.lcdui.Graphics g)
Metode ini menarik TiledLayer tersebut. Hal ini diberikan sesuai dengan wilayah klip dari objek Graphics.
  • public void setAnimatedTile (int animatedTileIndex, int staticTileIndex)
             Ini rekan metode ubin animasi dengan ubin statis tertentu.
  • public void setCell (int col, int row, int tileIndex)
            Metode ini menetapkan isi suatu sel tertentu.
  • public void setStaticTileSet (javax.microedition.lcdui.Image gambar, int tileWidth, int tileHeight)
Perubahan metode itu set ubin statis. Ini menggantikan genteng saat ini ditetapkan dengan genteng baru ditetapkan seperti yang diberikan dalam parameter.

Tidak ada komentar:

Posting Komentar