Final Project PBO B
Game 2️⃣0️⃣4️⃣8️⃣
➖➖➖➖➖➖➖➖➖➖➖
Planning 🔽
Saya berencana membuat game 2D menggunakan bahasa java. Tipe game yang ingin saya buat adalah game Puzzle Matematika. Game ini membutuhkan blok untuk menyimpan angka. Setiap blok angka dapat berpindah sesuai sumbu x dan y. Jika terdapat kedua blok yang memiliki besaran angka yang sama, maka blok tersebut akan menjadi satu blok utuh. Setiap blok yang telah menjadi blok utuh tersebut akan bernilai x kelipatan sesuai dengan banyaknya blok (x blok) yng memiliki nilai yang sama. Setiap pergerakan, blok akan turun mengisi puzzle yang kosong sesuai sumbu yang digerakkan. Game ini seperti game 2048, namun yang berbeda adalah blok yang menjadi satu dapat berasal dari lebih 2 blok, tidak hanya dari 2 blok saja.
➖➖➖➖➖➖➖➖➖➖➖
Final Result 🔽
Main Screen & Game Screen 🔽
⛳ Gameplay : Pemain menggeser blok ke arah ⬅️➡️⬆️⬇️ menggunakan key WASD atau Panah
➖➖➖➖➖➖➖➖➖➖➖
Link Demo Video : https://youtu.be/kk_79HPUnRg
Reference : https://its.id/m/ReferencePBO
Keterangan : di contributors terdapat 2 akun, akun tersebut merupakan akun saya yang satu lagi, dikarenakan saya memakai aplikasi sourcetree untuk push n pull dari laptop, saya baru tersadar jika akun github yang terhubung dengan aplikasi source tree merupakan akun saya yang kedua 🙏
➖➖➖➖➖➖➖➖➖➖➖
OOP Implementation 🔽
1️⃣ Casting/Conversion
scr : Main.java
ket : Casting dilakukan pada bentuk perkalian dengan variable scale. Karena scale di awal didefinisikan sebagai float
2️⃣ Constructor
scr : MainScreen.java
ket : Constuctor dalam hal ini digunakan untuk membuat object screen yang akan ditampilkan sebagai mainScreen. Setelah user menekan tombol play, dibuat juga object main untuk ditampilkan sebagai gameScreen
3️⃣ Overloading
scr : GameObject.java
ket : Overloading digunakan di fungsi yang sama namun dengan pelemparan parameter yang berbeda, antara dengan atau tidaknya x.position dan y.position
4️⃣ Overriding
scr : Game.java
ket : Overiding digunakan untuk fungsi paintComponent dengan kondisi yang berbeda antara Win dan Lose
5️⃣ Inheritance
scr : LoseBoard.java-WinBoard.java & Game.java & MainScreen.java
ket : Inheritance terlihat pada fungsi extends untuk mengambil sifat dari fungsi classnya
6️⃣ Polymorphism
scr : LoseBoard.java-WinBoard.java
ket : Polymorphism digunakan dengan metode overiding yang memanggil fungsi yang sama untuk mendapatkan berbagai bentuk (Win/Lose)
7️⃣ ArrayList
scr : Game.java
ket : Arraylist digunakan sebagai tempat untuk menyimpan sprite/object balok yang masih tersisa
8️⃣ Exception Handling
scr : MainScreen.java
ket : Exception Handling menggunakan metode try-catch digunakan saat kondisi gambar dari background tidak terdeteksi(error) sehingga bisa memberikan keterangan
9️⃣ GUI
scr : MainScreen.java
ket : MainScreen merupakan frame awal yang timbul ketika program di run, di sini saya membuat tombol play, highscore, dan menambahkan gambar sebagai background game
🔟 Interface
scr : Game.java
ket : Interface di atas untuk melacak input yang diberikan oleh user, apakah ('Left', 'Right', 'Up', 'Down', 'Reset')
1️⃣1️⃣ Abstract Class
scr : Game.java
ket : Abstract Class digunakan sebagai fungsi res() untuk mengoutputkan hasil score game nya apakah win atau lose, dengan menggunakan fungsi hs(untuk kondisional) dan fungsi res() untuk memberikan batas setelah beberapa kali percobaan
1️⃣2️⃣ Generics
scr : MainScreen.java
ket : Generics Class di sini digunakan untuk menjadikan highscore ataupun string menjadi object yang dapat digunakan dalam fungsi otuput
1️⃣3️⃣ Input Output
scr : Game.java
ket : Untuk input saya hanya menambahkan input untuk perintah reset dengan menekan keyboard 'R', Output yang diberikan berupa hasil dari game apakah menang atau kalah beserta score yang didapat juga score tertinggi yang berhasil diraih