Pendahuluan
Game snake telah popular sejak pertama kali telepon selular menambahkan fasilitas game
didalamnya. Yaitu snake game dalam ponsel Nokia. Gameplay dari Snake Game akan memiliki
sama dengan Snake game yang terdapat pada ponsel Nokia. Berawal dari kepala ular, kemudian
ketika memakan apel akan memanjang. Dan akan game over ketika menabrak tubuhnya sendiri
ataupun objek lain yang dikatakan sebagai obstacle. Sehingga dalam modul ini akan dibahas
bagaimana menggerakkan tokoh ular, mengatur gerakan ular, mengenalkan mekanisme collision
detection dan memperpanjang tubuh ular jika telah memakan apel. Sebelum membuat SnakeGame
lebih lanjut, maka tentukan rule untuk gameplay yang menarik. Rule pada game tersebut
(mechanics) adalah:
1. Ular (texture snakehead) dapat bergerak ke kanan, kiri, atas dan bawah menggunakan
masukan dari keyboard
2. Ular degenerate di sisi berlawanan ketika berkolisi dengan tepian (bounding box)
3. NPC apel secara acak ditempatkan di layar, tidak boleh ditempatkan di atas karakter ular,
4. Tempatkan hanya satu karakter apel jika tidak ada apel di layar
5. Apel hilang saat berkolisi dengan kepala ular
6. Tubuh ular memanjang setelah berkolisi dengan apel
Halaman
21 / 37
Teori game
OLEH : REZKI YUNIARTI, S.Si.,M.T.
//some code
//some code
Kemudian untuk memeriksa status arah, dan pergerakan, tambahkan method baru yaitu
moveSnake( ) dengan tipe kembalian void. Lengkapi program 2.1
//some code
Halaman
22 / 37
Teori game
OLEH : REZKI YUNIARTI, S.Si.,M.T.
//some code
Untuk arah atas bawah, dapat mengikuti koordinat kartesian di dunia nyata. Sehingga arah ke atas
(UP) adalah :
snakeY += SNAKE_MOVEMENT;
Halaman
23 / 37
Teori game
OLEH : REZKI YUNIARTI, S.Si.,M.T.
Tugas A
Periksa untuk setiap kondisi status arah snakehead apakah sudah sesuai?
Hints : ubah nilai private int snakeDirection = DOWN; menjadi ke-empat arah. Periksa
satu persatu.
Halaman
24 / 37
Teori game
OLEH : REZKI YUNIARTI, S.Si.,M.T.
Tugas B
1) Game harus bisa menerima input dari keyboard untuk menentukan arah jalan snakehead.
2) Berikan penjelasan mengenai method isKeyPressed
3) Berikan penjelasan mengenai Input.Keys
Periksakan apakah apel tersedia (memenuhi syarat untuk ditampilkan di layar), jika memenuhi
syarat (true) maka apel akan digambarkan di layer saat rendering. Tambahkan code di dalam
method render( )
Penggunaan Random
Apel harus diletakkan secara random sesuai dengan gameplay. Namun peletakan apel
hanya dapat dilakukan dengan mempertimbangkan nilai apelavail. Method random dapat
Halaman
25 / 37
Teori game
OLEH : REZKI YUNIARTI, S.Si.,M.T.
Halaman
26 / 37
Teori game
OLEH : REZKI YUNIARTI, S.Si.,M.T.
Hints : di dalam method draw berisi semua pekerjaan penggambaran yang dilakukan objek batch
(instance dari SpriteBatch)
Tugas C
1. Buatlah method clearScreen( ) dan draw( ), serta perbaiki render( )
2. Snakehead harus sudah berjalan, dan terdapat apel yang ditempatkan secara random. Cobalah
running gradlew berkali-kali dan perhatikan apakah posisi apel berubah-ubah?
Menambahkan Kolisi
Rule berikutnya adalah jika snakehead berkolisi dengan apel, maka apel akan menghilang
(lihat rule game nomor 5). Secara sederhana, hal ini dapat dilakukan dengan memeriksa posisi
apel dan snakehead apakah pada posisi yang sama atau tidak. Tambahkan method
checkAppleCollision() untuk memeriksa kolisi
Tugas D
1. Buatlah method checkAppleCollision() dan tambahkan pemanggilan checkAppleCollision() di
dalam render( )
2. Selesaikan Program 2.7
27 / 37
Teori game
OLEH : REZKI YUNIARTI, S.Si.,M.T.
BodyPart
x:int
y:int
tekstur : Texture
updatePosisi (x:int, y:int)
draw(batch:Batch)
BodyPart akan memiliki koordinat x, y dan tekstur. Tekstur dapat diinisialisasi di konstruktor
BodyPart. Hal ini akan membuat objek BodyPart dapat berganti Texture sesuai kebutuhan (lebih
dinamis). BodyPart memiliki behavior update (setter) nilai posisi x dan y. juga memiliki behavior
menggambar atau draw. Jika posisi snakehead dan body sama, maka tidak Digambar. Artinya nilai
posisi snakehead dan body harus berbeda supaya dapat Digambar.
Tugas E
Pelajari class Batch
Halaman
28 / 37
Teori game
OLEH : REZKI YUNIARTI, S.Si.,M.T.
b) Tambahkan code untuk instansiasi objek snakebody dan melakukan inisialisasi menambah
Texture snakebody.png di method show( )
c) Gunakan generics variable untuk menyimpan bodypart ke dalam Array bodyparts.
Deklarasikan di instance variable class GameScreen.java
private Array<BodyPart> bodyParts = new Array<BodyPart>();
d) Lihat pada rule a, yaitu menambahkan bodypart jika snakehead memakan apel. Untuk itu
perbaiki method checkAppleCollision(), jika berkolisi dengan apel, maka tambahkan bodypart
ke dalam Array bodyParts.
Proses rendering texture snakebody dilakukan dengan memanggil texture yang sama yaitu
snakebody.png.
Tugas F
Analisa method checkAppleCollision(), jelaskan dengan detail.
TUGAS AKHIR
1. Lengkapi program, hingga tercapai game mechanics rule a) hingga c). tambahkan code berikut
ini:
Halaman
29 / 37
Teori game
OLEH : REZKI YUNIARTI, S.Si.,M.T.
4. Akhir modul 2 harus menampilkan ular yang berjalan sesuai dengan control pemain, apel
tersimpan random di layar. Jika ular memakan apel, maka badan memanjang, dan apel akan di
generate di lokasi lain
5. Analisa seluruh code yang ditambahkan di tugas akhir
6. Kumpulkan laporan minggu ke-3 praktikum
Halaman
30 / 37