Nama : Safa Mashita
NRP : 5025241022
Pertemuan 15 - Pemrograman Game
Pada pertemuan ini, saya mempelajari cara membuat permainan klasik Pong menggunakan bahasa pemrograman Java dengan library Java Swing dan OOP (Object-Oriented Programming). Pong merupakan game sederhana yang meniru permainan tenis meja, terdiri dari dua paddle, satu bola, dan sistem skor.
A. Struktur Kelas dan Hubungan Antar Kelas
Program ini terdiri dari beberapa kelas utama:
-
Pong
-
Class utama, mengelola game state, input, dan update logic.
-
-
Ball
-
Mengatur pergerakan bola, deteksi tumbukan, dan sistem skor.
-
-
Paddle
-
Objek pemain (player 1 dan player 2/bot).
-
-
Renderer
-
Class untuk menggambar objek ke layar menggunakan
paintComponent.
-
Hubungan antar kelas:
-
Pong membuat objek Ball, Paddle, dan Renderer.
-
Renderer memanggil method
render()pada classPong. -
Ball berinteraksi langsung dengan objek
Paddleuntuk memeriksa tabrakan. -
Seluruh kelas saling bekerja sesuai prinsip OOP untuk membentuk game lengkap.
Program dimulai dari
main()pada classPong.-
Window game dibuat menggunakan JFrame.
-
Timerberjalan setiap 20ms untuk meng-update game (game loop). -
Ketika pemain menekan Space, permainan dimulai.
-
Setiap frame:
-
Bola bergerak sesuai kecepatan (motionX, motionY).
-
Paddle bergerak mengikuti input keyboard (W/S atau Up/Down).
-
Jika menggunakan mode bot, paddle kanan digerakkan otomatis.
-
-
Bola memantul ketika menyentuh batas atas/bawah atau paddle.
-
Jika bola melewati paddle, pemain lawan mendapat skor.
-
Game berakhir ketika skor mencapai limit.
Kegunaan :Mengatur bola dalam permainan: posisi, pergerakan, pantulan, tabrakan, dan kondisi ketika mencetak skor.
Atribut:
x, y : posisi bola di layar.
-
width, height : ukuran bola.
-
motionX, motionY : arah gerakan bola secara horizontal dan vertikal.
-
random : untuk menghasilkan arah acak ketika memantul atau spawn.
-
pong : mengakses ukuran layar dan objek utama.
-
amountOfHits : menghitung jumlah pantulan agar bola makin cepat.
Method:
Ball(Pong pong) : constructor, menyimpan referensi ke kelas Pong dan memanggil
spawn().-
update(paddle1, paddle2) : menggerakkan bola, mengecek tabrakan, mengecek skor, memberi pantulan.
-
spawn() : mereset posisi bola ke tengah dan memberi arah acak.
-
checkCollision(paddle) : mendeteksi tabrakan atau bola lewat paddle.
-
render(Graphics g) : menggambar bola sebagai lingkaran putih.
Kegunaan :Mengatur paddle pemain, posisinya, gerakannya, dan tampilannya.
Atribut:
paddleNumber : menentukan paddle kiri (1) atau kanan (2).
-
x, y : posisi paddle.
-
width, height : ukuran paddle.
-
score : skor pemain tersebut.
Method:
Paddle(Pong, int) → constructor, menentukan posisi awal paddle berdasarkan nomor.
-
render(Graphics g) → menggambar paddle sebagai kotak putih.
-
move(boolean up) → menggerakkan paddle ke atas atau ke bawah dengan batas layar.
Kegunaan :Menjadi inti game. Mengatur jendela permainan, update logika, input pemain, mode bot, scoring, dan menggambar semua objek.
Atribut:
pong : instance global
-
width, height : ukuran layar game
-
renderer : panel gambar
-
player1, player2 : paddle pemain
-
ball : bola
-
bot : apakah mode bot aktif
-
selectingDifficulty : apakah sedang memilih tingkat bot
-
w, s, up, down : status tombol keyboard
-
gameStatus : status game (menu, pause, main, selesai)
-
scoreLimit : batas skor untuk menang
-
playerWon : menyimpan nomor pemain yang menang
-
botDifficulty : tingkat kesulitan bot
-
botMoves, botCooldown : pengaturan perilaku bot
-
random : generator angka random
-
jframe : jendela game
Method:
Pong() : constructor, membuat window, timer, dan input listener
-
start() : memulai ulang game (buat objek paddle dan bola baru)
-
update() : logika game seperti gerakan pemain, bot, dan bola
-
render(Graphics2D g) : menggambar semua elemen game sesuai statusnya
-
actionPerformed() : dipanggil oleh timer untuk update dan repaint
-
keyPressed() / keyReleased() / keyTyped() : menangani input keyboard
-
main() : menjalankan game
Kegunaan :Menggambar ulang tampilan game di layar setiap frame.
Atribut:
Tidak ada yang penting selain
serialVersionUID.
Method:
paintComponent(Graphics g) : membersihkan layar dan memanggil
pong.render().
Dari tugas ini, saya mempelajari konsep dasar pemrograman game menggunakan Java, yaitu:
-
Game Loop (update dan render) menggunakan
Timer. -
Pemodelan objek game dengan OOP, seperti Ball dan Paddle.
-
Collision detection antara bola dan paddle.
-
Handling keyboard input untuk kontrol permainan.
-
AI sederhana untuk bot yang mengikuti posisi bola.
-
Pembuatan antarmuka grafik menggunakan Java Swing.
Tidak ada komentar:
Posting Komentar