Selasa, 05 Januari 2021

FINAL PROJECT PBO A - Stack Game

FINAL PROJECT PBO A

Oleh:
Ega Prabu Pamungkas (05111940000014)
Inez Yulia Amanda (05111940000208)


STACK GAME


Stack game adalah game dimana pemain ditugaskan untuk menyusun blok-blok yang bergerak secara menyamping, setinggi mungkin, layaknya game untuk anak kecil dimana dia menyusun balok-balok setinggi mungkin. Salah satu contoh game digital yang menggunakan sistem ini adalah game android bernama “STACK” oleh Ketchap. Dengan visualisasi yang bagus dan game yang simple dapat menarik jutaan orang untuk mendownload aplikasi game tersebut.

Abstraksi:

Stack game akan memiliki beberapa blok bergerak secara satu-satu dan tugas dari player adalah menyusunnya setinggi mungkin. Beberapa fitur yang dimiliki, yaitu dapat menyimpan highscore dari permainan yang telah dimainkan, mengubah warna tema dari aplikasi , event blok yang akan menguntungkan pemain, serta sound effect dan background music.

Modulasi:

Berdasarkan penjelasan abstraksi beberapa class object yang akan dibuat adalah:

a. Main Class - untuk menjalankan game dan mengatur frame game
b. Stack Class - untuk mengatur apa yang ditampilkan di dalam game
c. Game Class - untuk mengatur sistem game berjalan
d. MainMenu Class - untuk mengatur apa yang ditampilkan di main menu
e. Playing Class - untuk mengatur apa yang ditampilkan saat bermain
f. GameOver Class - untuk mengatur apa yang ditamplikan di GameOver
g. GameObject Class - yang mengatur object blok dari game
h. Sprite Class - yang mengatur warna object blok dari game
i. Renderer - yang digunakan untuk merefresh game
j. Keyboard Class - untuk mengatur input dari keyboard
k. Theme Class - untuk mengatur tema aplikasi yang akan digunakan
l. Configuration Class - untuk menyimpan dan me-load best score
m. Resources Class - untuk me-load resources yang ada
n. Audio Class - untuk memutar musik yang telah di-load
o. GameComment Class - untuk mengatur comment game yang akan keluar

Penjelasan Source Code

Dokumentasi Source code lengkap dapat dilihat di link berikut yang berada di path "src/superrstack"
Link: Source Code (github)

1. Main Class
=> Di class ini akan diatur sifat-sifat dari JFrame yang digunakan, serta akan ada beberapa methode yang akan memanggil object Stack untuk dijalankan. Di class ini juga ada fungsi main yang akan menjalankan aplikasi.

2. Stack Class
=> Di class ini yang akan mengatur apa yang akan ditampilkan di dalam JFrame. Class ini menggunakan package Java Canvas. Class ini juga mengimplementasikan ActionListener untuk looping programnya. Method-method yang ada di class ini berfungsi untuk mengatur apakah akan menampilkan tampilan main menu, saat in-game, atau tampilan game over dengan memanggil method dari object class yang sesai dengan yang ingin ditampilkan. Di class ini juga dibuat lebar dan panjang dimensi canvas dengan scale tertentu.

3. Game Class
=> Di class ini akan dibuat object class yang berkaitan dengan game yang akan berjalan seperti menyimpan variabel bestScore, membuat object Resources untuk me-load resources yang ada, membuat object theme untuk me-load theme yang akan digunakan, serta method di class ini adalah me-load bestScore sebelumnya dengan memanggil method class yang mengaturnya, yaitu Configuration Class.

4. MainMenu Class
=> Di class ini akan diatur apa saja yang akan ditampilkan di main menu. Method-method class ini juga yang akan memanggil Renderer untuk merender background serta menggunakan "drawString" untuk menggambar text yang akan ditampilkan.

5. Playing Class
=> Di class ini akan diatur apa saja yang ditampilkan saat bermain, seperti text apa yang ditampilkan, blok-blok awal yang akan ditampilkan, mengatur saat game over apa yang dilakukan, serta mengatur jika blok baru akan muncul apa yang harus dilakukan. Sama seperti main class juga memiliki method untuk menggambar text dan merender background sekaligus sprite blok yang akan muncul

6. GameOver Class
=> Di class ini akan diatur apa saja yang akan ditampilkan di game over. Method-method class ini juga yang akan memanggil Renderer untuk merender background serta menggunakan "drawString" untuk menggambar text yang akan ditampilkan.

7. GameObject Class
=> Di class ini akan mengatur bagaimana object blok yang ada di game. Method update di class ini akan meilhat jika object masih bergerak apa yang dilakukan, jika ada input space akan meletakkan blok serta melihat berapa persen ketepatan meletakkan bloknya yang juga akan mengatur apa game comment yang akan muncul jika "excellent" persentasenya 90 keatas, jika "good" 50 ke atas dan di bawah 90, jika "bad" 50 persen ke bawah, jika "gold event" akan mengatur strig comment yang berkaitan dengan "gold event", serta gerakan blok dengan mengubah posisi x blok saat input space dibaca.

8. Sprite Class
=> Di class ini yang akan mengatur lebar, panjang, dan warna warna dari sprite blok itu sendiri.

9. Renderer Class
=> Method-method class ini yang akan mengatur warna apa yang akan ditampilkan di background serta sprite nya, dimana sprite akan dilihat posisi dari x dan y dari blok itu sendiri.

10. Keyboard Class
=> Class ini yang mengatur input dari keyboard, dimana method-method yang ada mengatur key yang akan dibaca, apakah saat ditekan atau dilepas, serta abstract method dari KeyListener.

11. Theme Calss
=> Class ini yang mengatur theme apa saja yang tersedia untuk aplikasi game. Dimana method yang ada akan digunakan class lain untuk mengatur warna background, text, maupun sprite blok-nya.

12. Configuration Class
=> Class ini yang akan membaca dan menulis save file untuk skor terbaik yang tercetak dengan menggunakan nama dan path file "config.xml". Method-method yang ada adalah untuk membaca "config.xml" jika tidak ada akan dibuat file baru dengan skor terbaik 0, serta untuk menulis file dengan skor terbaik terbaru yang telah dicetak.

13. Resources Class
=> Class ini untuk mengatur apa saja resources yang akan digunakan, serta me-load nya dengan membuat variabel baru yang akan digunakan di class lain. Path yang akan diguankan adalah "res/(namafile)".

14. Audio Class
=> Class ini yang mengatur bgm dan sfx yang akan dimainkan saat bermain dan game over. Audio ini menggunakan file extension berupa wav. Method-method yang ada di class ini digunakan class lain untuk memutar audio dan menghentikan audio yang dimainkan, serta ada method untuk membaca audio file yang dilempar ke dalam class ini.

15. GameComment Class
=> Class ini yang akan mengatur game comment yang akan muncul saat menekan space di saat game sedang berjalan atau keadaan "Playing". Method-mehod yang ada akan digunakan di class lain untuk memanggil game comment yang telah diinisiasi di class ini. Terdapat 4 jenis comment, yaitu saat excellent, good, bad, serta saat gold blok event.

Aplikasi "Super Stack Game"

Aplikasi Super Stack Game dapat kalian download berupa zip dilink berikut ini.

Video Demo Final Project

Video Demo dari Super Stack Game ini dapat dilihat di link youtube berikut.

Penutup

Sekian dari kami selaku kelompok Final Project PBO A, jika ada salah kata mohon dimaklumi. Terima kasih atas perhatiannya dan semoga apa yang disampaikan dapat bermanfaat.

~F