Proposal Algoritma dan Struktur Data ASD (1)

LAPORAN TUGAS BESAR
DASAR ALGORITMA & PEMOGRAMAN
JUDUL PROGRAM
“2048”
BIDANG KEGIATAN:
MATH GAMES

Diusulkan oleh:
Dhia Aziz Rizqi Arrahman (Ketua/1301140364/2014)
Lanny Septiani (Anggota1/1301144034/2014)
Renaldy Hardyanto (Anggota2/1301144334/2014)
Budi Santiko (Anggota3/1301144404/2014)

UNIVERSITAS TELKOM
BANDUNG
2014
1

RINGKASAN

Proyek yang kami buat untuk tugas besar mata kuliah Dasar algoritma & pemograman kali

ini adalah Game. Judul game ini adalah “2048”. Game ini termasuk kategori game puzzle
matematika yang cukup menarik dan dapat membuat penggunanya ketagihan. Selain dapat
menghibur, game ini juga interaktif dan dapat mengasah kemampuan berhitung penggunanya.
Didalam game ini pemain harus mengumpulkan beberapa angka hingga berjumlah 2048.
Angka yang disediakan hanya angka angka genap saja.

2

A. JUDUL
Judul game yang kami ajukan adalah 2048.

B. LATAR BELAKANG MASALAH
Saat ini teknologi sudah sangat berkembang. Begitu pula berdampak pada game-game yang
ditawarkan pada gadget anda. Apabila kita mencari game, maka akan banyak bermunculan
banyak judul game yang tentunya memiliki ciri khas masing-masing. Dari sekian banyak
game yang sudah ada saat ini, beberapa diantaranya dapat dibuat melalui program pascal.
Termasuk salah satu game yang cukup menarik yakni game 2048. Game ini sederhana,
namun dapat membuat penggunanya ketagihan untuk bermain. Selain menarik, game ini juga
dapat mengasah kemampuan berhitung anda. Sehingga kami memutuskan untuk membuat
game 2048 ini untuk tugas Dasar algoritma & pemograman kali ini.


C. RUMUSAN MASALAH
1. Apa itu game 2048?
2. Bagaimana cara membuat game 2048 menggunakan pascal?

D. TUJUAN
1. Untuk mengetahui lebih dalam mengenai game 2048
2. Untuk mengetahui cara membuat game 2048 melalui pascal

3

E. PERSOALAN
Untuk memenuhi tugas Dasar algoritma & pemograman, kami membuat sebuah program
game dengan judul 2048. Game 2048 adalah sebuah game puzzle matematika yang
membutuhkan strategi untuk mencapai angka 2048. Dalam game ini, tersedia beberapa kotak
kosong yang nantinya beberapa kotak akan diisi oleh angka 2 atau 4 secara random. Kotak
akan bergeser ketika pemain menekan salah satu tombol arah pada keyboard. Angka-angka
dalam kotak tersebut hanya bisa dijumlahkan dengan angka yang sama (misalkan, angka 2
hanya bisa dijumlahkan dengan angka 2 lagi yang akan menghasilkan angka 4 pada satu
kotak), dan seterusnya. Tujuan dari game ini adalah menjumlahkan angka angka yang ada

pada kotak hingga muncul kotak dengan jumlah angka 2048. Angka 2 atau 4 akan muncul
secara random ketika pemain menekan tombol arah.

Papan skor dikanan atas akan terus memperbarui skor pemain. Skor pemain berawal dari
angka nol, lalu bertambah ketika dua kotak bergabung dan membentuk kotak bernomor baru
dan seterusnya seiring dengan kotak kotak yang berhasil dijumlahkan. Seperti permainan
arcade lainnya, skor terbaik pemain akan ditampilkan bersandingan dengan skor saat itu.

Pemain baru menang ketika sebuah kotak bernomor 2048 muncul di papan. Setelah mencapai
skor target, pemain masih bisa terus bermain hingga mencapai skor yang tinggi. Permainan
akan terhenti ketika tidak ada lagi ruang kosong yang bisa digeserkan karena angka angka di
papan tidak bisa lagi dijumlahkan.

4

F. FUNGSIONALITAS
Menjawab persoalan diatas , kami membuat suatu program yang memiliki fungsionalitas sebagai
berikut :
1. Input Direction  Perintah yang diinputkan oleh user untuk menentukan arah sebagai
langkah selanjutnya

2. Add, delete, edit nilai table Perintah untuk menambahkan nilai pada table kosong,
mengedit nilai kolom bernilai sama, dan menghapuskan tabael penjumlah sebelumnya.
3. Pengisian table kosong secara random berisi perintah untuk mengecek posisi-posisi
tabel yang memiliki nilai kosong kemudian menginputkan nilai 2 atau 4 secara random di
salah satu tabel kosong tadi.
4. 2048!  perintah yang dilakukan secara berkala untuk mengecek ada tidaknya kolom
yang bernilai 2048 yang merupakan kondisi untuk mengakhiri game.
5. Score merupakan perintah untuk menambah score dari perbuatan sesuai kolom-kolom
yang saling di jumlahkan. Apabila telah menemukan agnka 2048 akan diberi score
tambahan.
6. View rankingPerintah untuk menampilkan urutan score yang tersimpan.
7. Game over  Perintah untuk pengecekan kondisi game telah berakhir atau tudak

5

G. SPESIFIKASI PENJELASAN PROGRAM DAN FUNGSIONALITAS
Pada program ini angka-angka genap yang akan dimainkan disimpan dalam array dua dimensi
yang terdiri dari 4 buah kolom dan 4 buah baris. Sedangkan procedure dan function dibuat
berdasarkan Fungsionalitas yang telah ditentukan, yakni:
1. Input Direction

Procedure InDirection = Procedure yang berisi perintah untuk menginputkan
arah(up,down,left,right) sebagai langkah selanjutnya dalam permainan.
Function CekAvailable = Fungsi bertipe yang mengembalikan nilai boolean untuk
mengecek apakah terdapat kolom yang bias kosong dan bisa dijumlahkan sesuai
ketentuan, apabila false maka akan mengulang ke procedure InDirection.
2. Add, delete, edit nilai table
Terdiri dari fungsi add table yang mengembalikan nilai integer dari tabel kosong
menjadi bernilai, fungsi edit table yang mengembalikan nilai integer dengan
menjumlahkan antara 2 buah tabel, dan fungsi delete tabel yang mengembalikan nilai
integer dengan merubah tabel yang menjumlahkan menjadi nol.
3. Pengisian table kosong secara random
Dengan memanfaatkan procedure IsiRandom yang menghasilkan nilai integer pada
salah satu tabel yang bernilai kosong untuk dimasukkan nilai 2 atau 4 secara random,
baik pemilihan tabelnya ataupun pemilihan angkanya.
4. 2048!
Berisi Fungsi Cek2048 yang berfungsi untuk mengecek keberadaan kolom yang
bernilai 2048, apabila terdapat nilai 2048 maka game akan berakhir dengan kondisi
menang.
5. Score
Score merupakan tujuan yang dicari pada game ini, untuk mendapatkan score

digunakan fungsi sumscore yang mengembalikan nilai integer dengan menjumlahkan
score itu sendiri berdasarkan penjumlah kolom yang diproses pada fungsi edit table
sebelumnya. Score dimulai dari nilai nol. Score disimpan dalam bentuk file sederhana
berupa bentuk teks.
6. View ranking
Berisi procedure ViewRank untuk memunculkan data ranking berdasarkan score yang
telah disorting dari tinggi ke rendah sebelumnya. Ranking hanya menampung 10 data
jadi data yang terkecil akan tereleminasi.

7. Game Over

6

Berisi procedure CekStep untuk mengecek masih terdapat langkah atau tidak untuk
melanjutkan permainan ini, yang dicek adalah ada tidaknya bilangan yang dapat
dijumlah dan banyaknya kotak kosong, apabila tidak terdapat bilangan yang dapat
dijumlah dan semua kotak penuh maka game akan berkahir.

Program dalam algoritma:


7

8

9

10

11

12

Program ketika di Run

13

KESIMPULAN

Game 2048 yang kami buat menggunakan bahasa pascal memerlukan sekiranya 500 baris.
Dalam program yang kami buat dibutuhkan banyak prosedur dan fungsi. Game yang kami

buat mengadopsi game aslinya yaitu 2048.

14