Chapter 2 : Sprite Bola
Untuk chapter ini saya akan membuat bola tenis, Buatlah class baru dengan nama Bola.java. Disini saya akan menggunakan Graphics 2D untuk menggambar bola tersebut. Langsung saja :
Itu source code untuk keseluruhan sprite"Bola", mari kita bahas lebih dalam :
Menentukan Variabel
Nah untuk variabelnya, tentukan dengan berpikir.... bayangkan di bola 2D ada apa saja yang mungkin. Yang pertama bola itu punya diameter kan ?, saya namakan private final int D_BOLA = 30; dengan tipe int dan konstan (tidak berubah), ok sipp... sekarang adalah bagaiman naruh bolanya di koordinat (0,0) pada frame. Nah, karena Graphics 2D hanya punya dua koordinat mau tidak mau harus membuat variabel untuk posisi bolanya yaitu int x=0 dan int y=0 dengan tipe int .
Untuk gerak, variabel x dan y perlu bertransformasikan ?, nah perpindahannya saya beri delta x dan y-nya juga, singkat menjadi d_x = 1 dan d_y = 1 tipe int. Kenapa valuenya 1, saya akan bahas pada point selanjutnya. Dan kurang lebih codenya seperti ini :
Untuk gerak, variabel x dan y perlu bertransformasikan ?, nah perpindahannya saya beri delta x dan y-nya juga, singkat menjadi d_x = 1 dan d_y = 1 tipe int. Kenapa valuenya 1, saya akan bahas pada point selanjutnya. Dan kurang lebih codenya seperti ini :
Algorima bolaGerak() pada Bola
Kriteria bergeraknya bola :
- Bola terpantul jika terkena oleh dinding atau raket
- Jika melewati raket maka akan game over
- Jika bola terkena raket maka skor bertambah satu
Secara umum, penggambarannya yaitu "jika posisi + perpindahan = 0 maka perpindahan bernilai 1". Mengapa ? karena jika posisi + perpindahan bernilai di bawah satu maka bola tidak akan terpantul melainkan menghilang /menerus dari frame. Begitu juga dengan kode :
"if (x + d_x > game.getWidth() - D_BOLA)",
sama saja yang berbeda, kode ini dipakai di sisi kanan frame dan perpindahannya bernilai -1 atau terpantul kedalam.
Nah disinilah mengapa d_x dan d_y di beri value 1 agar perpindahannya satu pixel, anda bisa mencobanya dengan memberikan sembarang nilai namun jika diberi 0 maka perpindahannya tidak ada atau tidak bergerak.
Sintaks kode :
if (y + d_y > 400 - D_BOLA)
{game.gameOver();}
Artinya jika "posisi y + perpindahan y lebih besar daripada ukuran frame - Diameter bola" make game akan Game over, method gameOver() saya akan bahas pada Chapter "Check Collision" selanjutnya.
Method paint(Graphics 2D g)
"if (x + d_x > game.getWidth() - D_BOLA)",
sama saja yang berbeda, kode ini dipakai di sisi kanan frame dan perpindahannya bernilai -1 atau terpantul kedalam.
Nah disinilah mengapa d_x dan d_y di beri value 1 agar perpindahannya satu pixel, anda bisa mencobanya dengan memberikan sembarang nilai namun jika diberi 0 maka perpindahannya tidak ada atau tidak bergerak.
if (y + d_y > 400 - D_BOLA)
{game.gameOver();}
Artinya jika "posisi y + perpindahan y lebih besar daripada ukuran frame - Diameter bola" make game akan Game over, method gameOver() saya akan bahas pada Chapter "Check Collision" selanjutnya.
Ini adalah method untuk menggambar / memberikan gambar bola pada frame nantinya, "g.fillOval(x, y, D_BOLA, D_BOLA)" artinya menggambar fillOval (lingkaran berwarna) dengan parameter (posisi x, posisi y, Lebar, tinggi) disini kita memakai Diameter bola sebagai lebar dan tinggi
Pada kode juga terdapat g.drawString() yang digunakan nantinya menggambar String bertuliskan "Score :" selanjutnya.
Method Rectangle getBatasBola()
Ini adalah method mengambil informasi tentang kondisi ukuran bola, yang nantinya akan difungsikan pada saat cek collision(), selanjutnya collision() akan kita bahas pada chapter "Check Collision"
Subscribe to:
Post Comments
(
Atom
)

No comments :
Post a Comment