Anda di halaman 1dari 27

LAPORAN HASIL PRAKTIKUM

PEMROGRAMAN BERORIENTASI OBJEK

NAMA : KEIVIN IMMANUEL AKTA PURBA


NIM : 223020503114
KELAS : LABORATARIUM DATA SCIENCE
MODUL : ( II ) PENERAPAN OOP PADA GREENFOOT

JURUSAN TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS PALANGKA RAYA
2023/2024

UNIVERSITAS PALANGKA RAYA.FTEKNIK 1


LAPORAN HASIL PRAKTIKUM
BASIS DATA 1

NAMA : KEIVIN IMMANUEL AKTA PURBA


NIM : 223020503114
KELAS : LABORATARIUM DATA SCIENCE
MODUL : ( II ) PENERAPAN OOP PADA GREENFOOT

KOMPOSISI MAX NILAI


BAB I Tujuan dan Landasan Teori 10
BAB II Pembahasan 60
BAB III Kesimpulan 20
Daftar Pustaka 5
Lampiran 5
Jumlah 100

Penilai
Asisten Pratikum

MICHAEL HENOKH

UNIVERSITAS PALANGKA RAYA.FTEKNIK 2


BAB I
TUJUAN DAN LANDASAN TEORI
1.1. Tujuan
1.1.1 Mahasiswa mampu memahami konsep OOP melalui pemrograman IDE
Greenfoot.
1.1.2 Mahasiswa mampu mengimplementasikan OOP pada scenario/adegan
yang dibuat.
1.2. Landasan Teori.
1.2.1 Scenario.
Scenario adalah sebuah permainan atau simulasi yang
diimplementasikan di Greenfoot. Untuk mengeksekusi suatu scenario,
dapat menggunakan control eksekusi yang terdiri dari :
a. Act, menjalankna semua aksi diskenario satu kali.
b. Run, menjalankan semua aksi diskenario atau mengulang
skenario kembali keposisi awal.
c. Reset, memberhentikan sebentar skenario atau mengulang
skenario kembali keposisi awal
d. Speed, menjalankan aksi lebih cepat atau lambat.

Gambar 1.1 Kontrol eksekusi


1.2.2 Superclass.
Greenfoot memiliki beberapa tipe superclass, yaitu:
a.World, memegang sub-class yang menyediakan background
gambar untuk skenario world dan mendefenisikan ukuran dan
resolusi world.

Gambar 1.2 Merubah ukuran world

UNIVERSITAS PALANGKA RAYA.FTEKNIK 3


Kata kunci “super” menandakan bahwa constructor
DukeWorld memanggil constructor dari superclass-nya yaitu
constructor World(). #Class DukeWorld adalah subclass dari
class World.
b. Actor, memegang subclass-subclass yang menghasilkan
instances yang bereaksi diskenario.

Gambar 1.3 Superclass World dan Actor


1.2.3 Subclass.
Subclass adalah kelas turunan dari superclass.
a. Menurunkan semua properti superclass Actor, contohnya
mendefenisikan lebih awal aksi-aksi yang dapat dilakukan
oleh aktor subclass.
b. Dapat memiliki properti baru yang dibuat programmer khusus
untuk subclass seperti gambar dan aksi.
c. Properti subclass.
1. Subclass memiliki hubungan “is-a” terhadap Superclass
contoh : Lebah is a subclass of the actor superclass.
2. Properti dapat dimodifikasi (seperti nama class, gambar
yang ditampilkan, atau aksi-aksi yang dilakukan).
3. Panah pada hirarki class menunjukkan hubungan antara
subclass dengan superclass.

Gambar 1.4 Subclass Actor

UNIVERSITAS PALANGKA RAYA.FTEKNIK 4


1.2.4 Class Definition.
Class Definition mencakup:
1. Kata kunci “class” untuk mendefenisikan class.
2. Kata kunci “extends” untuk mendefenisikan pewarisan.
3. Nama class (subclass).
4. Nama supeclass yang diwarisi subclass dari sebuah class.

Gambar 1.5 Class defenition


5. Variabel (atau field) : menyimpan data dalam objek/instace.
6. Sebuah variabel memiliki syntax penulisan sebagai berikut:
a. Access modifier: public/protected/default/private
b. Tipe data yang disimpan
c. Nama variabel contoh

Gambar 1.6 Contoh variabel.


1.2.5 Objek/Instances.
Instances adalah objek-objek dari sebuah class yang beraksi pada
sebuah skenario. Sebuah instances memiliki karakteristik Class, akan
tetapi dapat dimanipulasi dan diubah.
1.2.6 Method.
Method adalah sebuah kumpulan operasi atau tugas dimana
instances sebuah class dapat dijalankan. Ketika sebuah method dipanggil
/ di-invoke, method tersebut akan menjalankan operasi atau tugas yang
dituliskan disource code.
Sebuah method memiliki beberapa komponen yang
mendeskripsikan operasi-operasi atau tugas-tugas yang dijalankan.
1. Return type : Menspesifikasikan data yang dikembalikan
oleh method.
2. Method name : Mendeskripsikan pekerjaannya si method.
3. Parameter List : Informasi yang masuk kedalam panggilan
method.

Gambar 1.7 Contoh method

UNIVERSITAS PALANGKA RAYA.FTEKNIK 5


BAB II
PEMBAHASAN
Pada modul ini mahasiswa diminta unutk membuat permainan yang
menyerupai game “Flappy Bird” dengan menggunakan beberapa pengaturan yang
dilakukan seperti.
1. Jika Flappy bird menabrak pipa, GameOver
2. Jika Flappy bird menyentuh edge(sudut bawah layar), GameOver
3. Jika Flappy bird melewati pipa dan dead!=TRUE, SCORE +1
4. Jika Space button pressed, Flappy bird terbang(flap)
2.1 Penambahan World dan Actor.
Pada tahapan awal, sebelum membuat game. Akan ditambahkan terlebih
dahulu world dan actor yang merupakan superclass dari dunia Flappy Bird. Pada
superclass world ditambahkan subclass background yang menjadi tampilan dari
latar belakang dari game. Lalu berikutnya, akan ditambahkan objek atau subclass
berupa burung yang akan menjadi objek utama dalam permainan dimana objek
burung ini akan digunakan sebagai objek permainan yang bisa digerakkan.
Berikutnya akan ditambahkan objek/subclass game_over yang akan berfungsi
sebagai penanda berakhirnya game setelah beberapa ketentuan tercapai. Lalu, ada
penambahan objek/subclass berupa ground dimana ground ini akan berfungsi
sebagai pembatas tambahan pada dunia Flappy Bird. Berikutnya, terdapat
objek/subclass berupa pipe/pipa yang akan menjadi rintangan yang harus dilalui
oleh burung untuk mendapatkan skor. Terakhir terdapat penambahan
objek/subclass berupa score yang akan menjadi penghitung jumlah skor ketika
burung melewati pipe/pipa.

Gambar 2.1 penambahan world dan objek

UNIVERSITAS PALANGKA RAYA.FTEKNIK 6


2.2 Program Background.
Pada tahapan ini akan ditambahkan program ke objek/class background.
Dimana, akan dilakukan penambahan dengan menggunakan perintah. Dengan
menggunakan kode program berikut.
addObject ( [objek/class] (), X,Y ) ;
Program akan secara otomatis menambahkan objek yang diinginkan lalu objek
dapat diatur terkait posisi yang diingingkan. Penerapannya sendiri dapat dilihat
seperti gambar dibawah.

Gambar 2.2 Program background.


2.3 Program Ground.
Pada bagian objek atau subclass dari groun tidak ada perubahan hal ini
karena ia tidak melakukan beberapa perubahan ketika permainan dimulai. Hal ini
dapat diperhatikan pada gambar berikut.

UNIVERSITAS PALANGKA RAYA.FTEKNIK 7


Gambar 2.3 Program ground.
2.4 Program Pipa/Pipe.
Pada program ini akan dilakukan sedikit perubahan dengan beberapa
perintah program seperti.
Public pipe () {
GreenfootImage image = getImage();
Image.scale(500,900);
}
Dimana penggalan program diatas berfungsi sebagai pengambilan gambar dari
objek pipe yang sedang digunakan. Sedangkan pada penggalan program,
public void act () {
setLocation(getX) -2, getY());
if (getX() <= 1) {
setLocation(getX() + 600, Greenfoot.getRandomNumber(250)+50);
}
}
program ini ditujukan untuk perubahan terkait posisi objek. Dimana setiap iterasi
atau perulangan yang terjadi akan dilakukan perubaan posisi sebesar 2 pixel
‘setLocation(getX) -2, getY());’ . Selanjutnya akan dilakukan pemeriksaan kondisi
terhadap objek jika telah mencapai batas layar sebelah kiri ‘if (getX() <= 1)’.
Namun jika ‘getX’ (koordinat X objek) kurang dari atau sama dengan 1, berarti
objek telah bergerak diluar batas layar sebelah kiri. Setelah itu, jika objek telah

UNIVERSITAS PALANGKA RAYA.FTEKNIK 8


mencapai batas layar sebelah kiri,‘{setLocation(getX() + 600,
Greenfoot.getRandomNumber(250)+50);} ’, baris ini akan memindahkan objek
kelokasi baru dengan koordinat yang acak. Berikut merupakan gambaran dari
penerapan program pada objek pipe.

Gambar 2.4 Program Pipe.


2.5 Program burung.
Pada program yang terdapat pada subclass burung terdapat kode program
yang dirancang sedemikian rupa sehingga subclass burung dapat berjalan sesuai
harapan seperti burung yang dapat bergerak jika tombol spasi ditekan. Selain
daripada itu, jika terdapat juga pengaturan terkait kondisi subclass burung jika ia
menabrak subclass lainnya. Pada gambar dibawah ini terdapat program yang
berfungsi sebagai penggambaran gravitasi subclass burung ‘private double g=1;’.
Dimana setiap iterasi act, nilai g akan bertambah 0.1, yang menggambarkan
percepatan gravitasi yang menarik burung ke bawah. Sedangkan ‘private int y =
300;’ dimana ia berfungsi ini menyimpan posisi vertikal burung di layar. Posisi ini
akan diperbarui setiap iterasi act berdasarkan nilai g, yang menciptakan efek burung
jatuh ke bawah jika tidak ada input. Lalu pada ‘private boolean haspressed = false;’

UNIVERSITAS PALANGKA RAYA.FTEKNIK 9


memiliki fungsi untuk mendeteksi apakah tombol spasi telah ditekan. Lalu ‘private
boolean isalive = true ;’ digunakan untuk keperluan apakah subclass burung masih
hidup atau tidak. Sedangkan pada ‘private boolean isacross = false ;’ digunakan
untuk mendeteksi apakah subclass burung sudah melewati subclass pipe. Terakhir
penggunaan ‘private boolean hasaddscore = false ;’ yang berfungsi untuk
memastikan bahwa skor te;ah ditambahkan sekali apabila subclass burung telah
melewati subclass pipe.

Gambar 2.5 Program burung.


Lalu dilanjutkan dengan progam penyesuaian ukuran dari subclass burung
dengan menggunakan ‘image.scale(30, 20);’. Selanjutnya, dengan menggunakan
program “if(spacePressed()){g= -2;}”,objek berupa burung akan terbang keatas
seiring dengan berkurangnya koordinat Y ketika tombol spasi ditekan. Lalu pada
program ‘if (getY() >= getWorld().getHeight()){isalive = false;}’ akan mendeteksi
apabila burung jatuh kebawah layar maka permainan akan berakhir. Begitu juga
apabila burung menabrak pipa permainan juga akan berakhir ‘if(isTouchpipe())
{isalive = false;}’. Namun apabila burung melewati subclass pipe maka akan
dilakukan penambahan skor setiap melewati 1 pipa ‘if (!hasaddscore && isacross
&& isalive){ score.add(1);} hasaddscore = isacross;’. Hanya saja apabila burung

UNIVERSITAS PALANGKA RAYA.FTEKNIK 10


jatuh atau menabrak pipa maka permainan akan berakhir dan akan dilakukan
pemanggilan terhadap subclass game_over hal ini sesuai dengan penggalan
program ‘if(!isalive){ getWorld().addObject(new game_over(), 300, 200);
getWorld().removeObject(this);}’.

Gambar 2.6 Program burung lanjutan.


Sedangkan pada bagian penggalan program berikut:
public boolean spacePressed(){
boolean pressed = false;
if(Greenfoot.isKeyDown("space")){
if(!haspressed){//Jika belum melepaskan spasi, jangan kembali true
pressed = true;
}
haspressed = true; //spasi telah ditekan
}else{
haspressed = false;
}
return pressed; }

UNIVERSITAS PALANGKA RAYA.FTEKNIK 11


Memiliki fungsi untuk mendeteksi apakah tombol spasi sedang ditekan
dalam permainan dan mengembalikan nilai true jika tombol spasi sedang ditekan.
Ini digunakan untuk mengendalikan perilaku burung, yaitu membuatnya melompat
atau terbang ke atas ketika pemain menekan tombol spasi. Namun apabila tombol
spasi tidak dilepaskan maka nilai tidak akan kembali bernilai true.
Sedangkan pada program :
public boolean isTouchpipe() {
for (pipe pipe : getWorld().getObjects(pipe.class)) {
if (getX() + 15 >= pipe.getX() - 30 && getX() - 15 <= pipe.getX() + 30) {
if (getY() + 15 >= pipe.getY() - 60 || getY() - 15 <= pipe.getY() - 200) {
isalive = false;
return true;
}
}
}
return false;
}
Memiliki fungsi untuk mendeteksi apakah burung sedang bersentuhan
dengan pipa.

Gambar 2.7 Program burung lanjutan.

UNIVERSITAS PALANGKA RAYA.FTEKNIK 12


2.6 Program Game_over.
Pada bagian objek atau subclass dari game_over tidak ada perubahan yang
dilakukan, hal ini dapat diperhatikan pada gambar dibawah. Hal ini karena ia tidak
melakukan beberapa perubahan ketika permainan dimulai. Hanya saja akan
dilakukan pemanggilan ketika game sudah selesai.

Gambar 2.8 Program burung lanjutan


2.7 Program Score.
Pada subclass score terdapat penggunaan program dimana program ini
berfungsi sebagai penghitung skor yang didapatkan pemain ketika subclass
burung telah melewati subclass pipe. Dimana skor awal akan dimulai dengan 0
setelah itu perhitungan skor akan dilakukukan sesuai dari urutan numerik
‘score+num;’. Dimana teks dari skor sendiri akan dimunculkan pada koordinat
300(X),100(Y). ‘myWorld.showText(String.valueOf(score), 300, 100);’.

UNIVERSITAS PALANGKA RAYA.FTEKNIK 13


Gambar 2.9 Program burung lanjutan

2.8 Final Game (Hasil Akhir).

Setelah program selesai dibuat maka game akan dapat dimainkan. Berikut
merupakan tampilan awal dari game ketika hendak akan dimulai.

Gambar 2.10 Tampilan awal.

Terdapat beberapa pengaturan yang dilakukan sesuai dengan program


yang telah dibuat sebelumya. Dimana jika burung menyentuh ground atau
melewati tampilan bawah layar maka permainan akan berakhir. Hal ini dapat

UNIVERSITAS PALANGKA RAYA.FTEKNIK 14


diperhatikan sesuai dengan gambar dibawah.

Gambar 2.11 Apabila burung jatuh.

Gambar 2.12 Permainan berakhir.


Adapun dipengaturan berikutnya, apabila burung menabrak subclass
pipa/pipe maka secara otomatis game akan berakhir dan akan memunculkan
subclass game_over dan akan menampilkan poin akhir pemain (jika ada).

Gambar 2.13 Apabila burung menabrak pipa.

UNIVERSITAS PALANGKA RAYA.FTEKNIK 15


Gambar 2.14 Permainan berakhir

Namun apabila subclass burung tidak menemui 2 kondisi tersebut dan mampu
melewati setiap subclass pipe / pipa yang ada poin akan dihitung 1 dari setiap
pipa/ subclass pipe yang dilewatinya. Sesuai dengan gambar berikut ini.

Gambar 2.15 Penambahan skor apabila melewati pipa.

UNIVERSITAS PALANGKA RAYA.FTEKNIK 16


BAB III
KESIMPULAN
3.1 Kesimpulan.
Melalui penggunaan IDE Greenfoot sebagai media implementasi
pembelajaran OOP, penulis mampu memahami lebih dalam terkait konsep
dasar dasar dari Pemrograman Berorientasi Objek (OOP) selain itu penulis
juga mampu mengimplementasikannya dalam pembuatan scenario atau
adegan permainan. Dalam praktikum ini, penulis telah mengaplikasikan
prinsip-prinsip OOP seperti penggunaan kelas dan metode untuk
mengontrol perilaku objek dalam permainan Flappy Bird yang telah dibuat.
Ini memberikan penulis pemahaman praktis tentang cara OOP digunakan
dalam pengembangan permainan, yang merupakan kompetensi yang
berharga dalam pengembangan perangkat lunak yang lebih kompleks dan
berorientasi objek.

UNIVERSITAS PALANGKA RAYA.FTEKNIK 17


DAFTAR PUSTAKA.
Oracle. (2019). Java Fundamental. Oracle Academy.

ORACLE. (2023, oktober 23). Greenfoot. Retrieved from Greenfoot:


https://www.greenfoot.org/door

Tim Dosen Pemrograman Berorientasi Objek. (2023). MODUL PRAKTIKUM


PEMROGRAMAN BERORIENTASI OBJEK. Palangka Raya: Universitas Palangka
Raya.

UNIVERSITAS PALANGKA RAYA.FTEKNIK 18


LAMPIRAN
Format Penulisan Laporan Hasil Praktikum
Spasi : 1,5
Font : Times New Roman
Font Size : 12
Margins : Top 3 cm, Left 4 cm, Right 3 cm, Bottom 4 cm
Kertas : A4
Penilaian Laporan Hasil Praktikum :
Bab I. Tujuan dan LandasanTeori Nilai 10
Bab II. Pembahasan Nilai 60
Bab III. Kesimpulan Nilai 20
Daftar Pustaka Nilai 5
Lampiran Nilai 5
Total 100
Daftar Gambar yang terdapat pada Laporan

Gambar 1.1 Kontrol eksekusi

Gambar 1.2 Merubah ukuran world

Gambar 1.3 Superclass World dan Actor

UNIVERSITAS PALANGKA RAYA.FTEKNIK 19


Gambar 1.4 Subclass Actor

Gambar 1.5 Class defenition

Gambar 1.6 Contoh variabel.

Gambar 1.7 Contoh method

Gambar 2.1 penambahan world dan objek

UNIVERSITAS PALANGKA RAYA.FTEKNIK 20


Gambar 2.2 Program background.

Gambar 2.3 Program ground.

UNIVERSITAS PALANGKA RAYA.FTEKNIK 21


Gambar 2.4 Program Pipe.

Gambar 2.5 Program burung.

UNIVERSITAS PALANGKA RAYA.FTEKNIK 22


Gambar 2.6 Program burung lanjutan.

Gambar 2.7 Program burung lanjutan.

UNIVERSITAS PALANGKA RAYA.FTEKNIK 23


Gambar 2.8 Program burung lanjutan

Gambar 2.9 Program burung lanjutan

UNIVERSITAS PALANGKA RAYA.FTEKNIK 24


Gambar 2.10 Tampilan awal.

.
Gambar 2.11 Apabila burung jatuh.

Gambar 2.12 Permainan berakhir.

UNIVERSITAS PALANGKA RAYA.FTEKNIK 25


Gambar 2.13 Apabila burung menabrak pipa.

Gambar 2.14 Permainan berakhir

Gambar 2.15 Penambahan skor apabila melewati pipa.

UNIVERSITAS PALANGKA RAYA.FTEKNIK 26


Lampiran Laporan Rencana Praktikuk modul sebelumnya.

UNIVERSITAS PALANGKA RAYA.FTEKNIK 27

Anda mungkin juga menyukai