Anda di halaman 1dari 3

Algoritma 4x4 Slider Puzzle Game

A. Algoritma Utama :
1. Buat array 2 dimensi bernama kotak dan kotak2 dengan ordo 4x4.

2. Beri nilai 1 sampai 16 pada kedua array secara berurutan.

(array kotak adalah array yang akan diacak dan digunakan dalam permainan,
sedangkan array kotak2 adalah array yang akan digunakan untuk mengecek apakah
urutan puzzle sudah benar).

3. Selama mainlagi = ‘y’, lakukan :

1) Inisialisasi variable baris dan kolom penunjuk kotak kosong yaitu kotak ke 16
sehingga b = 3 dan k = 3.

(Pada permainan, kotak yang ditampilkan adalah dari 1 sampai 15 sedangkan


kotak dengan nilai 16 ditampilkan sebagai acuan kotak kosong yang akan
berpindah – pindah posisi saat digeser dalam permainan).

2) Lakukan fungsi pengacakan terhadap array kotak untuk mengacak posisi angka
menjadi urutan yang salah.

(Jumlah pengacakan sudah ditentukan dalam permainan yaitu maksimal terjadi


40 kali acak, termasuk gerakan yang gagal dilakukan oleh fungsi random. Setiap
gerakan yang berhasil dilakukan, maka akan merubah nilai b dan k yang menunjuk
kotak kosong).

3) Inisialisasi variable penghitung gerakan (count) = 0.

(untuk menghapus history gerakan yang sebelumnya dilakukan oleh fungsi


pengacacakan).

4) Tampilkan nilai setiap index pada array kotak yang sudah diacak tadi, dan khusus
untuk index array yang memiliki nilai 16, tampilkan sebagai kotak kosong.

5) Selama move!= ‘q’

a) Scan move.

b) Jika move = ‘z’

 Jika count = 0

o Cetak pesan error


Jika tidak

o Lakukan undo dengan melakukan fungsi gerakan sesuai dengan move


terakhir (tersimpan dalam blok yang ditunjuk lastmove) yang sudah di
invert kan.

o Decrement 2 count.

o Hapus gerbong terakhir.

Jika tidak

 Lakukan fungsi gerakan sesuai input move.

c) Lakukan fungsi check


 Jika fungsi check = TRUE
o Cetak pesan permainan telah terselesaikan.
o move = ‘q’ (untuk keluar dari perulangan while karena permainan telah
selesai).
6) Jika count!= 0
a) Lakukan perulangan untuk mencetak history gerakan yang tersimpan dalam
linkedlist mulai dari pointer c (pointer penunjuk head) sampai menunjuk NULL.
7) Cetak Apakah ingin mengulang program, scan input kedalam variable mainlagi.

B. Algoritma Fungsi Gerakan


1. Inisialisasi nilai moved = 0 (variable moved sebagai variable penanda apakah
suatu gerakan berpindah berhasil dilakukan).
2. Jika move = ‘w’ (gerakan ke atas)
 Jika b<3 (masih memungkinkan sebuah kotak berpindah ke atas)
o Tukar nilai kotak[b][k] dengan kotak[b+1][k]
o moved = 1 (penanda bahwa gerakan berhasil dilakukan)
o increment b
Jika move = ‘a’ (gerakan ke kiri)
 Jika k<3 (masih memungkinkan sebuah kotak berpindah ke kiri)
o Tukar nilai kotak[b][k] dengan kotak[b][k+1]
o moved = 1 (penanda bahwa gerakan berhasil dilakukan)
o increment k
Jika move = ‘s’ (gerakan ke bawah)
 Jika b>0 (masih memungkinkan sebuah kotak berpindah ke bawah)
o Tukar nilai kotak[b][k] dengan kotak[b-1][k]
o moved = 1 (penanda bahwa gerakan berhasil dilakukan)
o decrement b
Jika move = ‘d’ (gerakan ke kanan)
 Jika k>0 (masih memungkinkan sebuah kotak berpindah ke kanan)
o Tukar nilai kotak[b][k] dengan kotak[b][k-1]
o moved = 1 (penanda bahwa gerakan berhasil dilakukan)
o decrement k
3. Jika moved = 1
 Lakukan fungsi list sesuai nilai move
 Increment count

C. Algoritma Fungsi List (Penyimpan history gerakan)


1. Jika pointer c = NULL
 Pointer c menunjuk gerbong baru, simpan move ke dalam gerbong yang
ditunjuk pointer c.
 Pointer lastmove = c
Jika tidak
 Buat gerbong baru, simpan move ke dalam gerbong baru.
 Hubungkan gerbong baru dengan lastmove sebagai doublelinkedlist.
 Buat pointer lastmove menunjuk ke gerbong baru.

D. Algoritma Fungsi Inverter/Pembalik Arah


1. Jika input masuk = ‘w’
 Nilai return = ‘s’
Jika input masuk = ‘a’
 Nilai return = ‘d’
Jika input masuk = ‘s’
 Nilai return = ‘w’
Jika input masuk = ‘d’
 Nilai return = ‘a’
E. Algoritma Fungsi Check
1. Set nilai ret = 1 (variable penanda apakah array kotak sudah sama dengan
kotak2)
2. Lakukan perbandingan untuk nilai setiap elemen array kotak dan array kotak2
3. Jika pada index yang sama ditemukan nilai yang berbeda, maka ret = 0
4. Return nilai ret.

Anda mungkin juga menyukai