Implementasi Algoritma Layer-By-Layer Untuk Menyelesaikan Permainan Rubiks Cube

(1)

SKRIPSI

Diajukan untuk Menempuh Ujian Akhir Sarjana Program Strata Satu Jurusan Teknik Informatika

Fakultas Teknik dan Ilmu Komputer Universitas Komputer Indonesia

RAHMI DJOHAN

10107823

JURUSAN TEKNIK INFORMATIKA

FAKULTAS TEKNIK DAN ILMU KOMPUTER

UNIVERSITAS KOMPUTER INDONESIA

BANDUNG


(2)

i Oleh

Rahmi Djohan

10107823

Permainan rubik merupakan permainan puzzle mekanik untuk mengembalikan kotakan–kotakan warna yang teracak kembali ke sisi-sisi yang sebenarnya sesuai dengan kelompok warnanya. Permainan rubik yang dibuat menerapkan algoritma layer by layer. Algoritma ini digunakan untuk menyelesaikan rubik secara bertahap. Saat ini, masih banyak orang yang belum berhasil dalam menyusun rubik yang teracak karena rubik memang termasuk dalam permainan yang sulit untuk diselesaikan, dikarenakan harus menghafal beberapa notasi gerakan untuk menyelesaikannya. Padahal algoritma penyelesaian rubik secara manualpun sudah ditemukan.

Penerapan algoritma layer by layer dalam permainan rubik dibuat berdasarkan prosedur layer by layer untuk mendapatkan langkah terbaik menyelesaikan permainan rubik. Algoritma layer by layer digunakan untuk menyelesaikan rubik yang teracak kembali kesisi kelompok warnanya. Algoritma ini digunakan untuk menyelesaikan rubik mulai dari layer pertama/atas, kemudian layer kedua/tengah dan yang terakhir menyelesaikan layer ketiga/bawah. Penyelesaian rubiks cube telah ditemukan dalam bentuk algoritma, oleh karena itu program komputer atau perangkat lunak untuk menyelesaikan rubiks cube dapat dibuat.

Hasil pengujian aplikasi ini, selain mendapatkan penyelesaian untuk menyusun warna yang teracak, algoritma layer by layer juga memberikan hasil pencarian solusi yang optimal yang merupakan susunan rubik kembali kepada kelompok sisi warnanya. Pengujian alpha yang dihasilkan oleh layer by layer

Secara fungsional sistem yang telah dibangun sudah dapat menghasilkan keluaran yang diharapkan, begitu juga secara perhitungan yang dilakukan dengan layer by

layer telah dihasilkan dari titik awal ke titik tujuan dalam menyelesaikan rubik

yang teracak. Langkah yang dihasilkan adalah langkah secara terstruktur untuk menyusun rubik.


(3)

ii

ABSTRACT

ALGORITHM IMPLEMENTATION OF LAYER-BY-LAYER FOR COMPLETING THE GAME RUBIKS CUBE

By

Rahmi Djohan

10107823

The Game Rubik’s Cube is a puzzle mechanics for suitable the color boxed

back to the sides which correspondend the color group. This games was created

to implement the algorithm layer by layer and used to solved rubik’s with gradually. Currently, there are many people who had not succeeded to developing

a scrambled rubik’s cube. They can not solving rubiks shuffle because game Rubik cube is one of games difficult to resolve, this games need to memorizing some movement to solve it. Whereas solve the algorithm Rubik usually had been found.

Implementation the algorithm layer by layer in a game rubik based on procedure layer by layer to get how best step to solve this games. The algorithm used to solve Rubik start of the first layer on top, then the middle layer and the layer bottom. Rubiks cube settlement hade been found in the form of algorithms, therefore a computer program or software to complete the Rubiks cube can be made.

The results of testing this application, we can find the other solution than the colors resolution to organize a randomized, algorithm layer by layer also provides search results which is the optimal solution to the group re-arrangement of the Rubik colors. Testing alpha generated by layer by layer In a functional system that has been built already able to produce the expected output, as well as calculations performed with a layer by layer has been generated from the starting point to destination point in solving a scrambled Rubik. The resulting step is a step structured way to make rubik.


(4)

iii Assalaammu’alaikum Wr. Wb.

Segala puji bagi Allah yang telah menganugerahkan kenikmatan dan kesehatan lahir batin serta kemampuan kepada penulis, sehingga skripsi yang berjudul IMPLEMENTASI ALGORITMA LAYER BY LAYER UNTUK MENYELESAIKAN PERMAINAN RUBIKS CUBE dapat diselesaikan dengan segala kekurangan, kelebihan dan keterbatasannya. Keberhasilan penulis dalam menyelesaikan skripsi ini tidak lepas dari peran serta berbagai pihak yang telah memberikan sumbangan pikiran, bimbingan, serta dorongan semangat pada penulis.

Untuk itu pada kesempatan ini, penulis menyampaikan ucapan terimakasih kepada semua pihak yang mendukung dalam proses pembuatan skripsi ini. Sungguh tiada untaian kata yang tepat yang dapat penyusun sampaikan untuk

mengucapkan rasa terimakasih, hanya do’a yang dapat penulis panjatkan kehadirat Ilahi Rabbi, semoga kebaikan dari semua pihak mendapatkan imbalan yang berlipat ganda dari Allah SWT.

Penulis menyadari sepenuhnya bahwa dalam skripsi yang disusun masih sangat jauh dari kesempurnaan. Hal ini tiada lain disebabkan oleh keterbatasan pengetahuan dan pengalaman yang penulis miliki.

Akhirnya, penulis berharap semoga dapat bermanfaat khususnya bagi penulis dan umumnya bagi pembaca. Dan penulis ingin mengucapkan terima kasih kepada yang terhormat dan tercinta :


(5)

iv

2. Yth, Kedua orang tua, ibuhanda dan ayahanda (almarhum) yang dengan tulus selalu mendo’akan, memberikan dorongan moril dan materil, masukan, perhatian, dukungan sepenuhnya, dan kasih sayang yang tidak ternilai dan tanpa batas yang telah kalian berikan serta kakak dan abangku tercinta.

3. Dr. Ir. Eddy Suryanto Soegoto, M.Sc., selaku Rektor Universitas Komputer Indonesia.

4. Dr. Arry Akhmad Arman, selaku Dekan Fakultas Teknik dan Ilmu Komputer Universitas Komputer Indonesia.

5. Ibu Mira Kania Sabariah, S.T., M.T., selaku Ketua Jurusan Teknik Informatika Fakultas Teknik dan Ilmu Komputer Unikom.

6. Ibu Tati Harihayati Mardzuki, S.T., M.T., selaku dosen wali IF-7 sekaligus dosen penguji sidang skripsi yang telah membantu dalam kelancaran dari berbagai permasalahan mengenai perkuliahan.

7. Bapak Irawan Afrianto, S.T., M.T., selaku dosen penguji yang telah memberikan saran serta kritiknya dalam penyempurnaan skripsi ini. 8. Kepada teman-temanku IF-7’06, seluruh mahasiswa Teknik Informatika


(6)

v

Akhir kata, penulis berharap semoga laporan ini bisa sangat berguna dan bermanfaat bagi penulis dan pembaca. Semoga segala jenis bantuan yang telah diberikan kepada penulis mendapat balasan dari Allah SWT. Amin.

Wassalammu’alaikum Wr. Wb.

Bandung, Agustus 2011


(7)

1 1.1 Latar Belakang

Permainan rubik adalah sebuah permainan yang membutuhkan asah otak serta perhitungan algoritma untuk bisa memecahkan teka-teki yang ada didalamnya. Rubik dipandang sebagai permainan yang positif, terjangkau, melatih motorik dan daya ingat serta melatih logika geometri atau susun bangun dalam kerangka otak pemain rubik. Rubik merupakan permainan puzzle mekanik berbentuk kubus yang memiliki warna pada setiap sisinya. Dibagi menjadi beberapa kotak kecil yang memiliki kelompok warna awalan yang sama untuk masing-masing sisinya seperti warna merah, kuning, hijau, biru, dan putih, yang dapat diputar sedemikian rupa sehingga menghasilkan kotakan-kotakan yang acak dimasing-masing sisinya. Cara memainkannya adalah dengan mengacak dan mengembalikan kotakan-kotakan tersebut kesisi-sisi yang sebenarnya sesuai dengan kelompok warnanya, dengan menggunakan berbagai cara atau algoritma penyelesaian. Untuk menyelesaikan rubik terdapat algoritma-algoritma tertentu yang harus dihafalkan agar rubik kembali tersusun sesuai dengan kelompok warnanya, karena kesulitan dalam menghafal algoritma yang begitu banyak dan rumit maka banyak cuber yang tidak dapat menyelesaikan rubik dengan optimal. Selain itu, karena tidak dapat menghafalkan algoritma penyelesaian rubik membuat waktu cuber terbuang percuma untuk


(8)

menyelesaikan rubik karena tanpa arahan dan petunjuk yang jelas yang dapat dipahami. Padahal sampai saat ini telah ada berbagai cara atau metode untuk menyelesaikan sebuah Rubik’s Cube dari keadaan acak kembali ke posisi semula, salah satunya yaitu metode layer by layer. Algoritma layer by layer digunakan oleh seorang pemain rubik beginner yaitu pemula yang ingin menyelesaikan rubik. Algoritma layer by layer dapat menyelesaikan sebuah Rubik’s Cube acak dengan menggunakan algoritma atau dengan menggunakan notasi langkah secara “layer by

layer” (layer=lapisan). Layer by Layer dapat menyelesaikan Rubik’s Cube mulai

layer pertama, kedua, lalu ketiga.

Permainan rubik dapat diselesaikan dengan beberapa langkah oleh seorang pemain. Karena penyelesaian Rubik’s Cube telah ditemukan dalam bentuk algoritma (notasi gerakan) hanya dengan beberapa langkah permainan selesai dan dapat tersusun sesuai dengan warnanya, maka program komputer atau perangkat lunak untuk menyelesaikan rubik pun dapat dibuat. Sehingga membantu dan memudahkan para cuber untuk dapat memecahkan rubiks cube yang teracak agar kembali kepada kelompok sisi sesuai dengan warnanya. Oleh karena itu penulis tertarik untuk mengambil pokok bahasan skripsi bagaimana menerapkan algoritma layer by layer

pada perangkat lunak untuk menyelesaikan permainan Rubiks Cube dengan judul

Implementasi Algoritma LayerBy-Layer Untuk Menyelesaikan Permainan


(9)

1.2 Perumusan Masalah

Berdasarkan latar belakang masalah yang telah diuraikan diatas, yang menjadi pokok permasalahan adalah sebagai berikut :

1. Bagaimana algoritma layer by layer digunakan dan diimplementasikan dalam permainan rubik untuk menyusun warna yang sama pada setiap sisinya.

2. Bagaimana efektifitas metode penyelesaian rubik dalam algoritma layer by

layer untuk memudahkan cuber dalam menyelesaikan permainan rubik.

1.3 Maksud dan Tujuan

Maksud dari perancangan permainan ini adalah menerapkan algoritma layer by

layer dalam menyusun warna yang sama pada permainan Rubik’s Cube.

Adapun tujuan dari penulisan skripsi ini adalah :

1. Menyelesaikan rubik dengan mengetahui kegunaan dan implementasi dari algoritma layer by layer dalam aplikasi permainan rubik untuk menyusun warna yang sama pada setiap sisinya.

2. Mengetahui performansi waktu dalam menyelesaikan rubik, diperiksa dari menyelesaikan rubik secara manual dan penyelesaian rubik dengan menggunakan aplikasi.


(10)

1.4 Batasan Masalah

Agar pembahasan menjadi terarah, maka permasalahan akan dibatasi terhadap masalah-masalah berikut ini:

1. Jalan yang dihasilkan dari titik awal ke titik tujuan yang akan dibuat bersifat pencarian, dengan menggunakan metode algoritma layer by layer untuk penyelesaian permainan Rubik.

2. Aplikasi permainan yang akan dibangun hanya untuk menyelesaikan rubik cube

3x3x3.

3. Skema warna rubik yang bisa diselesaikan yaitu skema rubik yang memiliki warna, dan tidak menggunakan rubik gambar.

4. Pengguna atau pemain dianggap mengetahui notasi gerak standar rubik.

5. Aplikasi ini dapat dimainkan oleh satu pemain, yaitu pemain yang menyelesaikan rubik cube.

6. Metode analisis perancangan yang digunakan adalah analisis perancangan dan pengembangan perangkat lunak berbasis objek, dimana alat yang digunakan untuk pengembangan perangkat lunak, yaitu menggunakan pemodelan

UML(Unified Modeling Language).

7. Tools yang digunakan untuk membangun aplikasi ini menggunakan program


(11)

1.5 Metodologi Penelitian

Metodologi penelitian merupakan suatu proses yang digunakan untuk memecahkan suatu masalah yang logis, dan memerlukan data untuk mendukung terlaksananya suatu penelitian. Metode penelitian yang digunakan adalah metode deskriptif. Metode deskriptif merupakan metode yang menggambarkan fakta-fakta dan informasi dalam situasi atau kejadian dimana sekarang secara sistematis, faktual dan akurat. Metode penelitian ini memiliki dua tahapan, yaitu tahap pengumpulan data dan tahap pengembangan perangkat lunak. Metodologi yang digunakan dalam penulisan skripsi ini adalah sebagai berikut :

1. Tahap pengumpulan data dengan cara :

Tahap pengumpulan data dapat diperoleh secara langsung dari objek penelitian. Cara-cara yang mendukung untuk mendapatkan data primer adalah sebagai berikut [1]:

a. Studi kepustakaan

Studi kepustakaan yaitu studi data yang dilakukan melalui penelusuran literature atau buku-buku referensi pendukung sebagai landasan berfikir atau teori dan dari data-data statistik yang didapat sebagai input sistem.

b. Studi lapangan

Studi ini dilakukan dengan cara mengunjungi tempat yang akan diteliti dan pengumpulan data dilakukan secara langsung. Hal ini meliputi :


(12)

1. Observasi

Yaitu studi yang dilakukan dengan terjun langsung pada objek atau tempat serta lingkungannya untuk mendapatkan informasi yang diperlukan.

2. Wawancara

Yaitu mengajukan pertanyaan kepada pihak terkait guna mendapatkan informasi terhadap fokus masalah yang dihadapi.

2. Tahap pengembangan perangkat lunak.

Metode pembangunan perangkat lunak yang digunakan yaitu model Waterfall,

yang meliputi beberapa proses seperti yang digambarkan pada diagram gambar 1.1 dibawah ini.


(13)

Model ini telah lama digunakan untuk pengembangan perangkat lunak yang disebut sebagai model atau paradigma siklus hidup klasik. Model ini sangat terstruktur dan bersifat linier. Model ini memerlukan pendekatan yang sistematis dan sekuensial di dalam pengembangan sistem perangkat lunaknya. Setiap tahap harus terjadi interaksi dan kerjasama yang harmonis antara pengembang perngkat lunak dengan pemesannya. Proyek akhir yang diterima oleh pengguna merupakan hasil satu siklus pengembangan (mulai dari tahap analisis dan perancangan kebutuhan sistem hingga integrasi dan pengujiannya) yang terdiri dari satu versi perangkat lunak. Adapun uraian lebih jelasnya mengenai pengembangan perangkat lunak yang terdapat dalam model waterfall (Gambar 1.1) adalah sebagai berikut [2]:

1. Rekayasa Sistem

Merupakan tahapan yang pertama kali dilakukan yaitu merumuskan aplikasi penyelesaian permainan rubiks cube yang akan kita bangun. Hal ini bertujuan agar pengembang benar-benar memahami aplikasi yang akan dibangun dan langkah-langkah serta kebijakan apa saja yang berkaitan dengan pengembangan aplikasi tersebut.

2. Analisis Sistem

Mengumpulkan kebutuhan secara lengkap mengenai penyelesaian permainan rubiks cube kemudian dianalisis dan didefinisikan kebutuhan yang harus dipenuhi oleh aplikasi yang akan dibangun. Tahap ini harus dikerjakan secara lengkap untuk bisa menghasilkan desain yang lengkap.


(14)

3. Perancangan Sistem

Perancangan antarmuka dari hasil analisis kebutuhan yang telah selesai dikumpulkan secara lengkap. Menghasilkan rancangan yang memenuhi kebutuhan yang ditentukan selama tahapan requirements analisis. Hasil akhirnya berupa spesifikasi rancangan yang sangat rinci sehinggga mudah diwujudkan pada saat pemrograman.

4. Pengkodean Sistem

Pengkodean sistem adalah mengimplementasikan hasil desain ke dalam kode atau bahasa yang dimengerti oleh mesin komputer dengan menggunakan bahasa pemrograman tertentu. Hasil perancangan sistem diterjemahkan kedalam kode-kode dengan menggunakan bahasa pemrograman yang sudah ditentukan. Aplikasi yang dibangun langsung diuji baik secara unit.

5. Pengujian Sistem

Pengujian sistem adalah melakukan pengujian yang menghasilkan kebenaran terhadap program yang sudah dibangun. Proses pengujian berfokus pada logika internal perangkat lunak, memastikan bahwa semua pernyataan sudah diuji dan memastikan apakah hasil yang diinginkan sudah tercapai atau belum. Penyatuan unit-unit program kemudian diuji secara keseluruhan.


(15)

6. Pemeliharaan Sistem

Mengoperasikan aplikasi dilingkungannya dan melakukan pemeliharaan, seperti penyesuaian atau perubahan karena adaptasi dengan situasi yang sebenarnya.

7. Umpan Balik

Umpan balik adalah respon dari pengguna sistem yang bisa digunakan untuk mengetahui sejauh mana aplikasi yang dibangun diterima oleh penggunanya.

1.6 Sistematika Penulisan

Pada sistematika penulisan laporan, penulis membagi dalam beberapa bab dengan pokok-pokok permasalahannya. Sistematika secara umum adalah sebagai berikut :

BAB I PENDAHULUAN

Bab I akan membahas mengenai latar belakang, perumusan masalah, maksud dan tujuan, batasan masalah, metodologi penelitian serta sistematika penulisan. BAB II LANDASAN TEORI

Bab II akan berisi tentang bahan, teori dan konsep yang digunakan sebagai landasan atau acuan yang diperlukan terhadap analisis dan perancangan sistem hingga implementasi dan pengujian.

BAB III ANALISIS DAN PERANCANGAN SISTEM

Bab III terbagi menjadi dua bagian yaitu analisis dan perancangan sistem. Bagian analisis sistem yaitu deskripsi masalah, analisis kasus, analisis masalah,


(16)

analisis kebutuhan, menguraikan cara pemecahan masalah dengan menggunakan algoritma layer-by-layer, kemudian akan dilakukan analisis terhadap algoritma

layer-by-layer untuk mengetahui performansi dalam rangka menyelesaikan permainan

rubiks cube. Selain itu terdapat perancangan sistem yang terbagi menjadi

perancangan komponen, perancangan prosedural dan perancangan antarmuka untuk aplikasi yang akan dibangun sesuai dengan hasil analisis yang telah dibuat.

BAB IV IMPLEMENTASI DAN PENGUJIAN

Bab ini menjelaskan implementasi dari hasil analisis dan perancangan yang telah dibuat ke dalam bentuk aplikasi pemrograman, kemudian dilakukan pengujian terhadap aplikasi yang dibangun.

BAB V KESIMPULAN DAN SARAN

Pada bab ini penulis akan mengungkapkan kesimpulan apa saja berdasarkan data hasil analisis yang diperoleh dari pengujian, serta saran yang dapat berguna bagi pengembangan aplikasi ini selanjutnya.


(17)

11

BAB II

TINJAUAN PUSTAKA

2.1 Sejarah dan Perkembangan Rubik [3]

Rubik’s Cube atau kubus Rubik adalah sebuah teka-teki (puzzle) mekanis dalam bentuk tiga dimensi, yang ditemukan pada tahun 1974 oleh seorang pemahat dan profesor arsitektur dari Hungaria bernama Erno Rubik. Pada pertengahan tahun 70-an, Erno Rubik ingin membuat sebuah model sebagai alat pembelajaran untuk membantu murid - muridnya memahami geometri tiga dimensi dan akhirnya tercipta menjadi sebuah mainan teka - teki yang paling laris didunia.

Rubik memberi nama hasil temuannya itu “Magic Cube” – Kubus Ajaib, yang

kemudian mendapatkan hak paten Hungaria dan dijual pertama kali melalui perusahaan Ideal Toy Corporation. Pada tahun 1980, perusahaan Ideal Toy mengubah nama kubus ajaib tersebut menjadi “Rubik’s Cube”. Dan hingga saat ini, lebih dari 300 juta Rubik’s Cube telah dijual di seluruh dunia.

Sebuah Rubik’s Cube standar memiliki panjang sisi yang sama ukurannya

yaitu 5.7 cm. Terbentuk dari 26 potongan kecil yang disebut juga “cubelets” atau

cubies”. Ada 6 “cubies” yang disatukan dalam sebuah kerangka yang mempunyai 6

sumbu (axis). Dan pada kerangka inilah, sisa 20 “cubies” dipasang sedemikian rupa


(18)

Rubik masuk ke Indonesia sekitar tahun 90-an dan mulai berkembang pesat ketika masuk keabad millennium yaitu tahun 2000 ke atas. Pertengahan tahun 2009, masuknya permainan kubik dengan nama speedcubing. Speedcubing adalah menyelesaikan Kubus Rubik dalam waktu secepat mungkin dengan dihitung waktunya. Dari situlah munculah komunitas - komunitas pencinta speedrubik

muncul, salah satunya Nusantara Speedcubing Association. Visi mereka adalah memopulerkan speedcubing agar sejajar dengan olahraga yang lain seperti catur, billiard, renang, dan sebagainya. Melalui misi mengadakan kompetisi dan kegiatan - kegiatan speedcubing baik yang bertaraf lokal maupun internasional.

Nusantara Speedcubing Association merupakan wadah penggemar permainan

puzzle pada umumnya dan Kubus Rubik (Rubik's Cube) pada khususnya. Berawal

dari komunitas kecil dari beberapa orang yg memiliki minat dan ketertarikan yang sama terhadap beberapa jenis puzzle terutama Rubik's Cube. Komunitas rubik ini awalnya terbentuk ketika ada beberapa remaja penyuka rubik berkumpul untuk membentuk suatu wadah atau komunitas. Nusantara Speedcubing Association

diresmikan ketika ada pertemuan Indonesia Open Cube 2009 sekitar 31 Agustus 2009 di Jakarta. Nusantara Speedcubing Association sendiri mempunyai anggota sendiri dibeberapa kota. Setiap kota sendiri menamakannya komunitas ini, sebagai contoh di Bandung yaitu Nusantara Speedcubing Association regional Bandung. Selain di Bandung, Nusantara Speedcubing Association juga terbentuk di kota - kota seperti Jakarta, Solo, Yogyakarta, Surabaya, dan Medan .


(19)

Nusantara Speedcubing Association regional Bandung memiliki anggota sekitar 12 orang. Biasanya mereka berkumpul atau diistilah mereka disebut gathering

di Foodcourt Bandung Elektronik Center. Pelaksanaan gathering mereka setiap

sebulan sekali, biasanya mereka berkumpul untuk membicarakan cara menyelesaikan rubik - rubik yang sangat sulit. Kadang-kadang mereka bertukar pengalaman bagaimana cara menyelesaikan permainan rubik. Selain itu mereka membicarakan kompetisi - kompetisi rubik yang akan diadakan di Indonesia. Biasanya kompetisi - kompetisi rubik di Indonesia dilaksanakan di kota Jakarta, Solo, dan Bandung. Akan tetapi dalam turnamen tersebut, mereka pernah menjuarainya.

2.1.1. Mengenal Rubik [4]

Terminologi yang biasa dipakai untuk menjelaskan suatu algoritma Rubik’s

Cube sebagai berikut:

1. Rubik’s Cube terdiri atas enam buah sisi: depan (front), belakang (back), kiri (left), kanan (right), atas (up), dan bawah (down) seperti pada gambar 2.1 yang menjelaskan sisi-sisi pada rubik.

2. Gerakan memutar sisi Rubik’s Cube searah jarum jam disimbolkan dengan huruf pertama dari nama sisi tersebut dalam bahasa Inggris. Untuk yang berlawanan arah dengan jarum jam, ditambahkan tanda petik (’). Contohnya, F berarti memutar sisi depan (front) searah jarum jam,


(20)

sedangkan L’ berarti memutar sisi kiri (left) berlawanan arah dengan jarum jam.

3. Gerakan memutar seluruh kubus tidak memiliki notasi yang tetap, sehingga

laporan tugas akhir yang berjudul “Implementasi Algoritma Layer By Layer Untuk Menyelesaikan Permainan Rubiks Cube” menggunakan

RotateRight”, “RotateLeft”, “RotateUp”, dan “RotateDown”. Nama

gerakan tersebut sudah menjelaskan maknanya.

Gambar 2.1. Penamaan sisi-sisi pada Rubik’s Cube

Untuk menampilkan Rubik’s Cube, digunakan tampilan dalam bentuk dua dimensi, yaitu pada gambar 2.2 sebagai berikut:


(21)

2.1.2. Algoritma Dalam Permainan Rubik [5]

Sebelum mempelajari pada pengenalan notasi atau algoritma rubik, salah satu hal yang perlu diperhatikan dalam memahami karakter rubik 3x3x3 adalah pembagian kategori piece atau kubus kecil. Pembagian peace ini terdiri dari :

1. Center Piece : Piece (kubus kecil) yang terdapat ditengah disetiap sisi rubik. Center piece berjumlah 6 buah sesuai dengan warna yang terdapat disetiap sisi.

Gambar 2.3. Center Piece Rubik

2. Corner Piece : Piece yang terdapat pada setiap sudut disemua sisi rubik, tentu jumlah seluruhnya 8 buah dimana sebuah corner piece terdiri dari 3 warna stiker.


(22)

3. Edge Piece : Piece yang mengelilingi center piece (bukan corner piece), sehingga apabila dilihat dari atas akan membentuk cross. Piece ini berjumlah 12 buah dimana sebuah edge piece terdiri dari 2 warna stiker.

Gambar 2.5. Edge Piece Rubik

Dalam menyelesaikan rubik, ada yang disebut dengan notasi. Notasi ini mengindikasikan bagian dari cube yang harus diputar. Beberapa notasi yang digabungkan menjadi satu set gerakan akan memberi efek tertentu pada rubik.

Gabungan notasi inilah yang disebut “algoritma”. Efek yang diberikan oleh algoritma

adalah efek yang dibutuhkan, sehingga sangat dibutuhkan untuk menyelesaikan cube. Cara memutar cube ditulis dalam notasi khusus menggunakan huruf F, B, U, D, L, R, dan seterusnya. Notasi tersebut digunakan secara internasional oleh para cuber di seluruh dunia. Agar lebih jelas, perhatikan penjelasan dibawah ini [6]:

1. Single Turn (Putaran Tunggal)

Notasi single turn adalah notasi yang digunakan untuk memutar sebuah sisi (layer) dari rubik sebesar seperempat putaran (90 derajat). Notasi ini memiliki beberapa macam yang ditunjukkan dengan huruf, antara lain :

a. F (front atau sisi depan)


(23)

c. U (up atau sisi atas) d. D (down atau sisi bawah)

e. R (right atau sisi kanan)

f. L (left atau sisi kiri)

Implementasi gerakan notasi huruf pada rubik dapat dilihat pada tabel 2.1 sebagai berikut :

Tabel 2.1. Single Turn Rubik (Putaran Tunggal Rubik)

Notasi Gerakan Hasil

F

F’

B

B’


(24)

R’

L

L’

U

U’

D

D’

Secara umum notasi - notasi di atas dibagi menjadi dua kelompok. Kelompok pertama yaitu: F, B, R, L, U, D yang gerakannya adalah searah jarum jam. F, berarti


(25)

gerakan Front atau depan searah jarum jam. Kelompok kedua adalah: F', B', R', L', U', dan D' yang gerakannya adalah berlawanan dengan arah jarum jam. Untuk mendapatkan notasi-notasi di atas rubik harus diletakkan di depan pemain. Setiap notasi yang ditambahkan angka 2 dibelakangnya, berarti sisi/layer tersebut diputar 180 derajat atau setengah putaran.

2. Double Turn (Putaran Ganda)

Notasi double turn adalah notasi yang digunakan untuk memutar dua sisi

(layer) dari rubik sekaligus sebesar seperempat putaran (90 derajat). Implementasi

gerakan notasi huruf pada rubik dapat dilihat pada tabel 2.2 sebagai berikut : Tabel 2.2. Double Turn Rubik (Putaran Ganda Rubik)

Notasi Gerakan Hasil

F

F’


(26)

B’

R

R’

L

L’

U


(27)

D

D’

3. Slice Turn (Putaran Iris)

Notasi slice turn adalah notasi yang digunakan untuk memutar sisi tengah rubik. Adapun notasi – notasi tersebut menggunakan huruf :

a. M (middle)

b. E (Equator)

c. S (Stand)

Implementasi gerakan notasi huruf pada rubik dapat dilihat pada tabel 2.3 sebagai berikut :

Tabel 2.3. Slice Turn Rubik (Putaran Iris Rubik)

Notasi Gerakan Hasil


(28)

M’

E

E’

S

S’

4. Rotation (Rotasi)

Pada rotasi, rubik yang diputar bukanlah lapis atau layer, melainkan cube


(29)

Tabel 2.4. Rotation Rubik (Putaran Rotasi Rubik)

Notasi Gerakan Hasil

x

x’

y

y’

z


(30)

2.1.3. Pengaruh dan Manfaat Rubik [7]

Memainkan rubik mempunyai tantangan tersendiri, biasanya tantangannya adalah untuk dapat mengembalikan seluruh enam sisi kubus menjadi warna aslinya, tampaknya memiliki efek hipnotis pada beragam individu yang luar biasa tanpa mengenal batasan umur, pekerjaan, kekayaan dan kedudukan sosial. Biasanya anak muda, anak sekolah dan mahasiswa, yang berada dibarisan terdepan dalam membuat gerakan besar - besaran perkembangan rubik yang melanda dunia. Mereka adalah orang - orang yang terbukti paling ahli dalam memecahkan teka - teki, membentuk klub rubik’s cube, mengatur tata cara kompetisi rubik, dan yang terpenting adalah bahwa mereka rela menderita sakit pergelangan tangan untuk bermain rubik terus - menerus selama berjam - jam dan bahkan berhari - hari dengan sebuah teka - teki tiga dimensi yang misterius itu.

Permainan rubik dapat dirasakan manfaatnya. Pertama, melatih saraf sensorik, ketika belajar mengenali warna dan pola dari bentuk 3D rubik. Kemudian, saraf motorik juga akan terlatih, karena koordinasi jari-jari tangan dalam bermain, terutama dalam melakukan speedcubing (bermain dengan kecepatan tinggi). Lebih jauh,

rubik’s cube akan melatih daya ingat ketika si pemain melakukan memorisasi pola-pola tertentu untuk menyelesaikan rubik yang teracak. Dan, terakhir, permainan ini akan melatih logika geometri atau susun bangun dalam kerangka otak pemain rubik.


(31)

2.1.4. Metode - Metode Penyelesaian Rubik [8]

Metode yang sangat dikenal dalam penyelesaian rubik yaitu Metode Jessica

Fridrich, Jessica Fridrich adalah seorang dosen bergelar Professor yang berhasil

menemukan metode tercepat dalam menyelesaikan rubik. Metode ini dikenal dengan sebutan CFOP (Cross-F2L-OLL-PLL). Ada 4 tahap yang perlu dilalui untuk menyamakan keenam sisi Rubiks cube dari posisi yang paling acak sekalipun. Berikut pembahasannya:

1. Cross (Metode Layer By Layer): Metode ini merupakan penyelesaian rubik secara

layer by layer. Hal pertama yang harus dilakukan untuk menyelesaikan Rubiks

cube adalah membuat Cross. Cross adalah tanda silang ( atau tanda + ) pada salah

satu sisi warna Rubiks cube. Cross yang benar bisa dilihat digambar berikut: Dari gambar disamping bisa kita lihat bahwa cross dibuat pada sisi putih. Dari gambar tersebut juga terlihat warna merah dan hijau (serta orange dan biru pada sisi sebaliknya) tergabung dengan center. Untuk membuat cross pada posisi cube teracak murni menggunakan logika dan latihan secara kontinyu. Pada awalnya seseorang pemula memerlukan waktu hingga 1 menit untuk membuat cross. Lambat laun proses ini bisa diturunkan hingga waktu idel 2-3 detik.

2. F2L : merupakan singkatan dari First two Layer atau tahap dimana kita menyelesaikan 2 layer pertama. Dalam metode full fridrich kita membentuk pasangan lalu memasukkannya ke 4 slot yang tersedia untuk menyelesaikan. Layer


(32)

1 dan 2 sekaligus. Tahap ini memerlukan latihan yang terus menerus. F2L tidak sulit untuk dipelajari, namun tingkat kesulitannya terletak pada bagaimana melakukannya secara cepat. F2L bisa ditekan hingga 8 detik rata - rata untuk menyelesaikannya. Bagi yang masih kesulitan belajar F2L bisa menggunakan metode layer by layer untuk menyelesaikan tahap ini.

Cross dan F2L digunakan untuk menyelesaikan layer 1 dan layer 2. Pada

metode pemula untuk menyelesaikan layer 1 dan 2 dibagi dalam 3 tahap yakni membuat cross, menyelesaikan layer pertama ( dengan menempatkan 4 corner ke tempat asalnya) lalu menyelesaikan layer kedua (memasukkan edge ke tempat yang sesuai). Perbedaan dengan F2L adalah, pada F2L corner dan edge

digabungkan terlebih dulu, lalu dimasukkan ketempatnya sehingga lebih menghemat langkah dan waktu. Sementara itu untuk menyelesaikan layer terakhir dibagi dalam 2 tahap, yakni mengoreksi arah (OLL) dan mengoreksi tempat (PLL).

3. OLL: merupakan singkatan dari Orientating Last Layer. Segera setelah layer 1 dan 2 selesai, akan terbentuk pola tertentu dan tujuan kita adalah

menyamakan warna sehingga „top face’ akan memiliki warna

yang sama (seringnya warna kuning, jika cross dilakukan pada warna putih dengan skema warna standar). Ada 57 kasus pada OLL yang menyebabkan kita perlu menghafal 57 langkah yang berbeda. Waktu eksekusi ideal untuk tahap ini adalah 2-3 detik. Bagi mereka yang belum mampu


(33)

menghafal 57 langkah sekaligus bisa melakukan OLL dalam 2 tahap (sebagai konsekuensinya waktu akan lebih lambat), yakni membetulkan seluruh edge dan disusul membetulkan seluruh corner. Hal ini dikenal sebagai 2 look OLL. Hanya perlu mempelajari 1-2 langkah untuk membetulkan orientasi edge dan 7 langkah untuk membetulkan orientasi corner.

4. PLL: Merupakan singkatan dari Permutation Last layer. Disini kita saling menukar posisi corner dan edge ke tempat semula. Ada 21 langkah pada tahap ini yang secara ideal rata rata diseksekusi dalam 2-4 detik. Apabila sulit dalam menghafal 21 langkah bisa melakukannya dalam 2 tahap (dikenal sebagai 2 look PLL) yaitu mengoreksi letak corner disusul edge.

2.2 Algoritma Layer by Layer [7]

Ada beberapa metode penyelesaian rubik namun metode yang paling sederhana dan mudah untuk diaplikasikan adalah metode layer by layer. Algoritma

layer by layer merupakan varian dari algoritma greedy, tetapi karena penggunaan

algoritma ini dipakai untuk menyelesaikan permainan rubik maka untuk itu pada pengaplikasiannya algoritma greedy menjadi algoritma layer by layer untuk permainan rubik. Pada algoritma greedy yang diberikan yaitu membentuk solusi langkah per langkah (step by step) sama halnya dengan algoritma layer by layer pada permainan rubik. Beberapa tahapan dalam layer by layer terkadang menyediakan


(34)

alternatif solusi untuk setiap kondisi yang “mungkin” terjadi pada cube kita. Setiap kondisi tetap memiliki algoritma kunci yang harus kita hapalkan sisanya, kondisi untuk algoritma kunci tersebut yang kita ciptakan. Pada prinsipnya metode pemecahan cube secara layer by layer akan selalu melalui tahapan berikut:

1. Form cross on first layer– pembentukan silang pada layer pertama. Kuncinya

adalah pastikan bagian tepi dari setiap cross memiliki warna yang sama dengan bagian tengah dari setiap sisi.

2. Finishing first layer – penyelesaian layer pertama. Tidak ada langkah khusus

disini – namun justru ini yang membuat tahapan penyelesaian bisa menjadi panjang jika tidak melakukan perhitungan dari awal.

3. Penyelesaian second layer – penyelesaian layer kedua. Langkah yang perlu diperhatikan hanya langkah untuk menyelesaikan bagian tepi dari layer kedua. Rata-rata setiap tahapan untuk setiap tepi memakan 9 langkah.

4. Form cross on last layer – pembentukan silang pada layer terakhir. Ada dua

langkah yang perlu diperhatikan dalam pembentukan cross dilayer terakhir, yaitu jika sebagian cross sudah terbentuk pada dua sisi dengan kondisi (1) dua sisi berdekatan sudah terbentuk, atau (2) dua sisi berseberangan sudah terbentuk. Didalam tahapan ini tidak perlu langsung menyusun cross dengan warna yang sesuai, cukup bentuk crossregardless it’s color.

5. Atur kesesuaian warna dari cross yang telah terbentuk. Satu langkah diperlukan untuk menyelesaikannya.


(35)

6. Atur masing - masing sudut pada layer terakhir. Pengaturan ini memerlukan paling tidak 2 langkah untuk mengatur posisi pada sudut yang benar dan mengatur warna pada setiap sudut.

2.3 Dasar 3D Pada Flash [9]

Rotasi disekitar sumbu (x, y, z) 3d akan membahas tentang titik-titik 3D yang berputar disekitar sebuah sumbu. Untuk memutar data sekitar x atau y atau z sumbu, sebagai contoh, kita memutar (x, y, z) sekitar sumbu Z, maka kita dapat mengabaikan nilai z dan mengambil (x, y) dalam 2D. Untuk memutar (x, y) dalam 2D untuk delta busur sudut, kita hanya mengkonversi (x, y) data ke dalam jari-jari dan sudut. Radius adalah jarak (x, y) ke (0,0), yaitu Math.sqrt (x * x + y * y); busur sudut dalam format PI adalah Math.atan2 (y, x); sekarang memutar sudut delta. Radius adalah sama. Sementara sudut harus meningkat oleh delta. Jadi, yang baru (x, y) x = jari-jari * Math.cos (sudut + delta); y = radius * Math.sin (sudut + delta).

Persamaan matematika yang sama dapat dimodifikasi dengan mudah untuk mengambil (z, x) untuk berputar disekitar sumbu Y, mengambil (y, z) untuk memutar


(36)

disekitar sumbu X. Tetapi bagaimana jika sumbu Z tidak lurus, tetapi memiliki sedikit penyimpangan? Maka kita tidak bisa hanya mengambil (x, y), kita perlu untuk menangani z. Jadi, setiap langkah adalah memutar disekitar sumbu koordinat. Pertama diputar disekitar sumbu Z, untuk membuat sumbu pada bidang YZ. Lalu memutar disekitar sumbu X untuk membuat sumbu yang sama sebagai sumbu Y, sekarang dapat dengan mudah melakukan rotasi di sekitar Y. Setelah ini, memutar dengan sudut yang sama seperti diatas untuk sumbu Y kembali ke YZ. Kemudian memutar balik sudut untuk membuat sumbu kembali ke vektor (x, y, z) asli. Lihat gambar dibawah ini untuk menunjukkan langkah-langkah.

Gambar 2.6. Rotasi sekitar sumbu 3D


(37)

Gambar 2.8. Putaran sumbu X untuk membuat sumbu sesuai dengan sumbu Z

Gambar 2.9.Putaran sumbu Z

Gambar 2.10. Putaran sumbu X


(38)

2.4 Memutar Kubus 3D [9]

Pada pembahasan ini, penulis menunjukkan cara membuat sebuah kubus 3D berputar, dengan permukaan bertekstur. Jadi langkah pertama adalah untuk setiap 8 titik data 3d untuk mewakili sebuah kubus dalam 3D.

Gambar 2.12. Kubus dalam 3D

Tidak ada efek perspektif, sehingga untuk membuat gambar 3D, kita misalkan z off. Ini 8 titik sudut untuk membangun menjadi kubus yang memiliki 6 sisi. Jadi, kita perlu 6 movieklip skewing untuk menutupi mereka. Bahkan, sebelum kita dapat menutupi sisinya, untuk praktek kita dapat mencoba untuk menggunakan 6 klip gelap


(39)

persegi untuk menutupi keenam sisi tersebut. Kemudian, kita tinggal memasang grafis pada kotak gelap untuk membuat mereka bertekstur.

Persamaan di atas adalah sebuah rotasi pada gambar 2D. Hal ini berguna ketika kita melakukan rotasi dalam 2D. Hal ini juga dapat diterapkan ke gambar 3D. Kita perlu memperluas fungsi ini sedikit. Dalam hal ini, kita perlu memutar 8 titik sudut. Jadi, saya akan menyebutnya 8 kali. Juga, kita perlu rotasi sepanjang sumbu Y atau X. Persamaan ini hanya perbedaan dari x, y, z.


(40)

Jadi, setiap 8 titik sudut condong 6 persegi klip untuk menutupi 6 sisi kubus. Hal ini diperbarui bila kita memutar ini 8 titik sepanjang x, y atau z sumbu. Kemudian, kita membuatnya mewah dengan menambahkan bayangan menurut data Z dan gambar yang melekat pada MovieClips persegi dari x, y, z.


(41)

Langkah pertama untuk membangun kubus seperti gambar diatas adalah menyiapkan 8 titik dalam ruang 3d. Langkah kedua adalah menyiapkan 6 sisi.

Kemudian disetiap movieclip wajah, dan membuatnya menggambar segi empat diisi untuk menghubungkan sudut.

2.5 UML(Unified Modeling Language ) [10]

UML (Unified Modeling Language) adalah sebuah bahasa untuk menentukan,

visualisasi, kontruksi, dan mendokumentasikan artifact (bagian dari informasi yang digunakan atau dihasilkan dalam suatu proses pembuatan perangkat lunak. Artifact

dapat berupa model, deskripsi atau perangkat lunak) dari sistem perangkat lunak, seperti pada pemodelan bisnis dan sistem non perangkat lunak lainnya.


(42)

UML merupakan suatu kumpulan teknik terbaik yang telah terbukti sukses dalam memodelkan sistem yang besar dan kompleks. UML tidak hanya digunakan dalam proses pemodelan perangkat lunak, namun hampir dalam semua bidang yang membutuhkan pemodelan.

Bagian-bagian utama dari UML adalah view, diagram, model element, dan

general mechanism.

1. View

View digunakan untuk melihat sistem yang dimodelkan dari beberapa aspek

yang berbeda. View bukan melihat grafik, tapi merupakan suatu abstraksi yang berisi sejumlah diagram. Beberapa jenis view dalam UML antara lain: use case view, logical view, component view, concurrency view, dan deployment view.

a) Use case view

Mendeskripsikan fungsionalitas sistem yang seharusnya dilakukan sesuai yang diinginkan external actors. Actor yang berinteraksi dengan sistem dapat berupa user atau sistem lainnya. View ini digambarkan dalam use case

diagrams dan kadang-kadang dengan activity diagrams. View ini digunakan

terutama untuk pelanggan, perancang (designer), pengembang (developer), dan penguji sistem (tester).

b) Logical view

Mendeskripsikan bagaimana fungsionalitas dari sistem, struktur statis

(class, object,dan relationship) dan kolaborasi dinamis yang terjadi ketika


(43)

digambarkan dalam class diagrams untuk struktur statis dan dalam state,

sequence, collaboration, dan activity diagram untuk model dinamisnya. View

ini digunakan untuk perancang (designer) dan pengembang (developer).

c) Component view

Mendeskripsikan implementasi dan ketergantungan modul. Komponen yang merupakan tipe lainnya dari code module diperlihatkan dengan struktur dan ketergantungannya juga alokasi sumber daya komponen dan informasi administrative lainnya. View ini digambarkan dalam component view dan digunakan untuk pengembang (developer).

d) Concurrency view

Membagi sistem ke dalam proses dan prosesor. View ini digambarkan dalam diagram dinamis (state, sequence, collaboration, dan activity

diagrams) dan diagram implementasi (component dan deployment diagrams)

serta digunakan untuk pengembang (developer), pengintegrasi (integrator), dan penguji (tester).

e) Deployment view

Mendeskripsikan fisik dari sistem seperti komputer dan perangkat

(nodes) dan bagaimana hubungannya dengan lainnya. View ini digambarkan

dalam deployment diagrams dan digunakan untuk pengembang (developer), pengintegrasi (integrator), dan penguji (tester).


(44)

2. Diagram

Diagram berbentuk grafik yang menunjukkan simbol elemen model yang disusun untuk mengilustrasikan bagian atau aspek tertentu dari sistem. Sebuah diagram merupakan bagian dari suatu view tertentu dan ketika digambarkan biasanya dialokasikan untuk view tertentu. Adapun jenis diagram antara lain dapat dilihat pada gambar 2.13 sebagai berikut:

Gambar 2.13. Diagram UML

Penjelasan diagram UML pada gambar 2.13 akan lebih jelas dapat dilihat dibawah ini:

a) Use Case Diagram

Use case adalah abstraksi dari interaksi antara sistem dan actor. Use

case bekerja dengan cara mendeskripsikan tipe interaksi antara user sebuah

sistem dengan sistemnya sendiri melalui sebuah cerita bagaimana sebuah sistem dipakai. Use case merupakan konstruksi untuk mendeskripsikan


(45)

bagaimana sistem akan terlihat di mata user. Sedangkan use case diagram memfasilitasi komunikasi diantara analis dan pengguna serta antara analis dan

client.

b) Class Diagram

Class adalah dekripsi kelompok obyek-obyek dengan property,

perilaku (operasi) dan relasi yang sama. Sehingga dengan adanya class

diagram dapat memberikan pandangan global atas sebuah sistem. Hal tersebut tercermin dari class- class yang ada dan relasinya satu dengan yang lainnya. Sebuah sistem biasanya mempunyai beberapa class diagram. Class diagram sangat membantu dalam visualisasi struktur kelas dari suatu sistem.

c) Component Diagram

Component software merupakan bagian fisik dari sebuah sistem,

karena menetap di komputer tidak berada di benak para analis. Komponen merupakan implementasi software dari sebuah atau lebih class. Komponen dapat berupa source code, komponen biner, atau executable component. Sebuah komponen berisi informasi tentang logic class atau class yang diimplementasikan sehingga membuat pemetaan dari logical view ke

component view. Sehingga component diagram merepresentasikan dunia

nyata yaitu component software yang mengandung component, interface dan relationship.


(46)

d) Deployment Diagram

Menggambarkan tata letak sebuah sistem secara fisik, menampakkan bagian-bagian software yang berjalan pada bagian-bagian hardware, menunjukkan hubungan komputer dengan perangkat (nodes) satu sama lain dan jenis hubungannya. Di dalam nodes, executeable component dan object

yang dialokasikan untuk memperlihatkan unit perangkat lunak yang dieksekusi oleh node tertentu dan ketergantungan komponen.

e) State Diagram

Menggambarkan semua state (kondisi) yang dimiliki oleh suatu object

dari suatu class dan keadaan yang menyebabkan state berubah. Kejadian dapat berupa object lain yang mengirim pesan. State class tidak digambarkan untuk semua class, hanya yang mempunyai sejumlah state yang terdefinisi dengan baik dan kondisi class berubah oleh state yang berbeda.

f) Sequence Diagram

Sequence diagram digunakan untuk menggambarkan perilaku pada

sebuah scenario. Kegunaannya untuk menunjukkan rangkaian pesan yang dikirim antara object juga interaksi antara object, sesuatu yang terjadi pada titik tertentu dalam eksekusi sistem.

f) Collaboration Diagram

Menggambarkan kolaborasi dinamis seperti sequence diagrams. Dalam menunjukkan pertukaran pesan, collaboration diagrams menggambarkan object dan hubungannya (mengacu ke konteks). Jika


(47)

penekannya pada waktu atau urutan gunakan sequence diagrams, tapi jika penekanannya pada konteks gunakan collaboration diagram.

g) Activity Diagram

Menggambarkan rangkaian aliran dari aktivitas, digunakan untuk mendeskripsikan aktifitas yang dibentuk dalam suatu operasi sehingga dapat juga digunakan untuk aktifitas lainnya seperti use case atau interaksi.

2.6 Macromedia Flash 8 [11]

Flash adalah perangkat lunak komputer (soft-ware) dalam kategori authoring tool. Program flash ini biasa digunakan untuk membangun sebuah aplikasi yang memerlukan interaksi dari pemakainya (user). Dengan kemudahan yang ditawarkan, beberapa kalangan diakademisi bahkan mulai menggunakan flash untuk membuat sebuah presentasi yang menarik. Sabagai authoring tool, flash mempunyai kemampuan untuk memadukan semua media yang ada (multimedia) dari mulai sebuah animasi yang sederhana, video dan gabungan antara gerak gambar, suara dan video sekaligus. Flash menggunakan konsep grafis vector. Penggunaan konsep dasar

vector membuat aplikasi yang dihasilkan oleh flash mempunyai besaran file relative

berukuran kecil dengan tetap mempertahankan kualitas. Hal ini tentu saja sangat menguntungkan untuk digunakan dimana saja termasuk didalam dunia internet. User


(48)

Gambar 2.14. User Interface Macromedia Flash 8

Pada gambar 2.14 User interface di Flash terbagi atas 5 bagian, yaitu penjelasannya sebagai berikut:

1. Stage

Stage merupakan daerah yang bewarna putih, dimana area kerja utama jika

akan membuat animasi maupun aplikasi flash lainnya. Seluruh objek/gambar/animasi yang ada distage nantinya akan tampil diflash movie, dan sebaliknya apabila objek/gambar tersebut berada di daerah abu-abu di pinggiran Stage tidak akan terlihat diflash movie.

2. Tools


(49)

3. Panel

Merupakan kumpulan kotak-kotak yang berfungsi untuk mengubah, mengatur dan mempercantik objek yang ada di stage. Misalkan memberi warna gradasi, meletakan objek persis di tengah stage, dan merotasi objek dengan sudut yang tepat.

4. property inspector

Merupakan bagian informasi objek yang ada di stage. sebagai contoh, klik saja salah satu objek di stage, maka informasinya akan terlihat disini. atau klik saja di daerah kosong yang ada di stage, maka informasi mengenai stage akan terlihat.

5. Timeline

Terdiri dari baris dan kolom. Kolom berhubungan dengan waktu, baris berhubungan dengan objek. Setiap software animasi pasti memliki timeline untuk mencatat aktivitas objek kapan harus tampil di stage dan kapan harus menghilang.

2.6.1 Pengenalan Tool Utama Dalam Flash [12]

Ada beberapa tool utama dalam flash, dapat dilihat pada gambar 2.15 dibawah ini serta penjelasannya sebagai berikut :

1. Selection Tool (V)

Merupakan tool utama yang berfungsi untuk menseleksi benda, baik berupa


(50)

2. Subselection Tool (A)

Merupakan tool utama yang berfungsi untuk menseleksi dan memodifikasi titik maupun garis (stroke).

3. Free Transform Tool (Q)

Merupakan tool yang berfungsi untuk memodifikasi scale (skala), skew

(kemiringan), rotation (rotasi), distorsi, dan envelop. 4. Gradien transform tool (F)

Merupakan tool yang berfungsi untuk memodifikasi warna warna gradasi. 5. Line tool (N)

Tool yang berfungsi untuk membentuk garis. 6. Laso Tool (L)

Tool yang berfungsi untuk menyeleksi benda.

7. Pen Tool (P)

Tool yang berfungsi untuk membuat sebuah bentuk path, dapat digunakan juga untuk tracing.

8. Text Tool (T)

Tool yang berfungsi untuk membuat tulisan.

9. Oval Tool (O)


(51)

10. Rectangle Tool (R)

Tool yang berfungsi untuk membuat bentuk kotak. Rectangle Tool juga memiliki sub tool, yakni polystar Tool yang berfungsi membuat bermacam bentuk segi.

11. Pencil Tool (Y)

Pencil Tool berfungsi untuk membuat goresan yang seperti pensil. setiap

goresan akan menjadi tipe stroke.

12. Brush Tool (B)

Berfungsi untuk membuat goresan seperti brush (kuas) yang merupakan tipe

fill.

13. Ink bottle Tool (S)

Berfungsi untuk membuat stroke.

14. Paint bucket (K)

Berfungsi untuk membuat fill.

14. Eye dropper (I)

Berfungsi untuk mengambil sampel warna.

15. Eraser (E)


(52)

Gambar 2.15. Tool utama dalam flash

2.6.2 Hal-Hal Dasar Dalam Flash [13]

Hal – hal dasar dalam flash akan membahas mengenai bagaimana mengetahui dan mengubah properti, mengerti konsep shape dan sifatnya, group dan ungroup,

zoom dan hand tool. Penjelasannya sebagai berikut: 1. Mengetahui dan mengubah properti

Property inspector merupakan salah satu bagian yang sangat penting di flash.

Disini dapat diketahui properti/informasi detail tiap objek, Klik daerah kosong di

stage, kemudian dapat terlihat ada beberapa informasi: size : 550 x 400. yang berarti

tinggi stage adalah 550 pixel dan lebar stage 400 pixel. Background: warna stage


(53)

12 frame. Sedangkan tombol publish setting berfungsi untuk mengatur setting-an detail pada saat akan mempublikasi file flash yang telah kita buat.

2. Mengerti konsep shape dan sifatnya

Shape terdiri dari garis (stroke) dan warna isian (fill). Kita akan belajar memahami sifat-sifat dari shape karena banyak orang yang kebingungan bila tidak memahami sifat shape.

a. Fill

Shape merupakan warna isian dari sebuah shape.

b. Stroke

Stroke tidak memiliki garis karena stroke itu sendiri adalah garis.

Dengan adanya stroke style, bentuk stroke bisa diubah menjadi beberapa pilihan. Cara mengubah stroke style: seleksi terlebih dahulu stroke obyek yang ada, kemudian pilih

stroke style dibagian property inspector (setting default stroke style adalah solid).

Ketika membuat sebuah shape, secara otomatis terbentuk fill dan stroke. namun fill dan stroke ini bisa dipisahkan. Klik 1x daerah fill, maka kita hanya menseleksi fill-nya saja. Untuk menseleksi keduanya, klik 2x daerah fill. untuk menseleksi stroke-nya saja, klik 1x pada stroke. Untuk memisahkan fill dan

stroke, seleksi fill atau stroke, lalu drag/tarik. Untuk melepas seleksi, klik daerah luar/workspace/stage yang tidak ada objek. Pemberian warna stroke dan fill memiliki cara yang berbeda. Untuk memberi warna garis atau stroke, gunakanlah ink bottle


(54)

sudah berisi warna dan ingin mengubahnya, pilih selection Tool (V) seleksi fill atau

stroke yang akan diubah warna nya, selanjutnya pada Tool Color, kita bisa

menggunakan stroke color untuk mewarnai garis dan fill color untuk mewarnai daerah isian warna.

3. Group dan Ungroup

Buat dua bentuk lingkaran atau kotak yang jaraknya berjauhan, kemudian seleksi 1 objek diantaranya lalu pindahkan tepat di atas objek yang lain lalu pisahkan. Yang terjadi adalah obejek yang tertimpa menjadi rusak. Untuk menghindari hal ini, gunakanlah grup dengan cara seleksi terlebih dahulu objek yang akan digrup, lalu tekan menu Modify>Grup atau gunakan shortcut CTRL+G. Untuk memecah grup, gunakan ungroup dengan cara pilih menu Modify>Ungroup atau dengan shortcut

CTRL+SHIFT+G. Objek yang sudah digrup tidak dapat diubah warnanya secara langsung seperti biasa. Jika ingin mengubah warna objek, bisa di lakukan dengan cara masuk ke dalam grup dengan cara klik dua kali grupnya, lalu ubah warnanya. atau dengan cara mengungroup terlebih dahulu objek tersebut.

4. Zoom dan Hand Tool

Zoom tool (gambar kaca pembesar, shortcut Z) berfungsi Untuk memperbesar

dan memperkecil tampilan objek-objek yang ada di stage. Klik zoom tool, lalu klik pada stage untuk zoom-in, untuk zoom-out tahan tombol Alt, lalu klik. Adapun cara alternatif selain zoom tool adalah CTRL + dan CTRL - Hand Tool (gambar tangan, shortcut H) berfungsi sebagai penggeser tampilan stage. Adapun cara alternatif dengan cara menahan tombol spasi.


(55)

49

BAB III

ANALISIS DAN PERANCANGAN SISTEM

Pada bab ini akan dibahas mengenai analisis dan perancangan pada sistem yang dibangun yakni penerapan algoritma layer by layer dalam menyelesaikan permainan rubiks cube untuk menyusun warna yang sama pada masing – masing sisi rubik. Dalam pembahasan akan dijelaskan yang meliputi komponen – komponen penyelesaian rubik secara layer by layer.

3.1 Deskripsi Masalah

Deskripsi masalah adalah suatu gambaran masalah yang diangkat dalam penulisan skripsi tentang penerapan algoritma layer by layer. Layer by layer

merupakan algoritma penyelesaian permainan rubik yang dilakukan secara langkah per langkah (step by step). Algoritma layer by layer digunakan untuk pemain rubik beginner atau pemain rubik pemula yang ingin menyelesaikan permainan rubik. Algoritma layer by layer akan diterapkan dalam pencarian langkah pada permainan rubik untuk menyelesaikan rubik menyusun warna yang sama pada setiap sisi yang ada. Pencarian langkah terbaik pada permainan rubik akan diasumsikan dengan titik awal (keadaan pertama) dan titik tujuan (keadaan akhir) yang diimplementasikan pada pencarian langkah. Ruang yang akan dibangun akan berbentuk cube (susunan kotak persegi) yaitu bentuk dari permainan rubik supaya mempermudah dalam penerapan cara kerja algoritma


(56)

layer by layer. Hasil pencarian algoritma tersebut akan menghasilkan langkah untuk menyelesaikan permainan rubik yaitu dari suatu titik awalke titik tujuan.

3.2 Komponen Permainan

Untuk menyelesaikan permainan rubik cube 3x3x3 dibutuhkan beberapa komponen, komponen yang dibutuhkan adalah sebagai berikut :

1. Rubik Cube 3x3x3

2. Algoritma atau notasi langkah–langkah utama metode layer by layer untuk menyelesaikan rubik.

3.2.1 Rubik Cube 3x3x3

Pengguna Game ini akan dimainkan oleh satu orang. Pengguna dapat menyelesaikan permainan rubik yang disediakan oleh sistem dalam keadaan teracak. Komputer menyediakan aplikasi rubik cube 3x3x3 sesuai dengan konfigurasi yang telah disediakan oleh aplikasi. Dalam kasus ini banyaknya baris dan kolom pada rubik 3D adalah 3x3x3. Seperti pada gambar 3.1 dibawah ini :

Gambar 3.1. Rubik Cube

Aplikasi rubik juga menyediakan Rubiks Cube dengan tampilan dalam bentuk dua dimensi, yaitu:


(57)

Gambar 3.2. Tampilan dua dimensi Rubiks Cube

3.2.2 Langkah – Langkah Utama Layer By Layer

Pada permainan rubik daftar langkah dibuat terurut yang dimulai dari kotak yang paling tengah karena kotak yang paling tengah adalah kotak yang paling strategis dalam penyusunan deret. Daftar langkah ini merupakan array yang berisi informasi status kotak dan urutan langkah alternatif bagi komputer. Layer

by Layer dapat menyelesaikan Rubik’s Cube mulai layer pertama, kedua, lalu

ketiga. Secara garis besar, penyelesaian Rubik’s Cube dengan algoritma layer by

layer dapat dijelaskan sebagai berikut:

1. Selesaikan layer pertama/atas.

a. Bentuk cross disisi atas, sesuaikan dengan warna keempat sisi di samping.

b. Isi keempat sudut atas dengan kubus yang sesuai. 2. Selesaikan layer kedua/tengah.


(58)

3. Selesaikan layer ketiga/bawah.

a. Bentuk cross disisi bawah, tanpa merusak kedua layer di atas. b. Tempatkan keempat sudut bawah di tempat sebenarnya,

disesuaikan dengan warna dari ketiga sisi yang bersisian dengannya.

c. Bentuk supaya sisi bawah memiliki warna yang uniform. d. Pertukarkan kubus - kubus yang belum sesuai pada tempatnya. Komputer harus mencari langkah yang sudah berderet dan memberikan nilai kepada pemilik langkah tersebut. Deret didalam rubik dicari dari kotak paling awal yang mengandung indeks kotak sepanjang deret rubik. Pencarian deret rubik dilakukan secara vertical, horizontal, diagonal kiri atas ke kanan bawah, diagonal kanan atas ke kiri bawah atau sebaliknya sesuai dengan layer –

layer pada rubik seperti digambar 3.3.

Gambar 3.3. Penyelesaian Rubik

3.3 Analisis Masalah

Algoritma layer by layer akan diterapkan pada analisis masalah pada pencarian untuk menyusun warna yang teracak pada permainan rubiks cube, untuk mencari penyelesaian dan banyaknya gerakan oleh pemain yang dapat menyelesaikan rubik. Algoritma layer by layer digunakan oleh cuber pemula


(59)

untuk menyelesaikan rubik. Algoritma ini dikenal sangat mudah untuk dihafalkan oleh cuber pemula.

Dalam kondisi penyelesaian dengan menggunakan algoritma layer by

layer pada setiap pergerakan yang dilakukan pada layer rubik akan disimpan pada

suatu Array. Array ini akan digunakan untuk melakukan pengecekan apakah kita sudah dapat menyelesaikan rubik cube yang teracak atau belum. Pemain dapat menyelesaikan permainan rubik yang teracak kemudian sistem akan memeriksa rubiks cube tersebut sudah tersusun setiap warna pada setiap sisinya. Rubik yang belum teracak memiliki keenam sisi warna yang masih tersusun seperti pada gambar 3.4 dibawah ini.

Gambar 3.4. Enam Sisi Rubik Yang Belum Teracak

3.4 Analisis Pemecahan Masalah Dengan Algoritma Layer By Layer

Rubik’s Cube adalah permainan kubus 3x3x3 yang memiliki warna yang berbeda pada tiap sisinya. Kubus ini terdiri atas dua puluh enam kubus kecil yang disatukan. Satu kubus kecil di tengah dianggap tidak ada karena berperan sebagai sumbu kubus saat memutar sisinya. Pada prinsipnya metode pemecahan cube


(60)

1. Form cross on first layer – pembentukan silang pada layer pertama. Kuncinya adalah pastikan bagian tepi dari setiap cross memiliki warna yang sama dengan bagian tengah dari setiap sisi.

2. Finishing first layer – penyelesaian layer pertama. Tidak ada langkah

khusus disini – namun justru ini yang membuat tahapan penyelesaian bisa menjadi panjang jika tidak melakukan perhitungan dari awal.

3. Penyelesaian second layer – penyelesaian layer kedua. Langkah yang perlu diperhatikan hanya langkah untuk menyelesaikan bagian tepi dari

layer kedua. Rata-rata setiap tahapan untuk setiap tepi memakan 9

langkah.

4. Form cross on last layer – pembentukan silang pada layer terakhir. Ada

dua langkah yang perlu diperhatikan dalam pembentukan cross dilayer

terakhir, yaitu jika sebagian cross sudah terbentuk pada dua sisi dengan kondisi (1) dua sisi berdekatan sudah terbentuk, atau (2) dua sisi berseberangan sudah terbentuk. Didalam tahapan ini tidak perlu langsung menyusun cross dengan warna yang sesuai, cukup bentuk cross

regardless it’s color.

5. Atur kesesuaian warna dari cross yang telah terbentuk. Satu langkah diperlukan untuk menyelesaikannya.

6. Atur masing - masing sudut pada layer terakhir. Pengaturan ini memerlukan paling tidak dua langkah untuk mengatur posisi pada sudut yang benar dan mengatur warna pada setiap sudut.


(61)

Kombinasi warna pada Rubik’s Cube sangatlah banyak. Pertama (kemungkinan

ujung), kombinasi setiap kotak kecil yang berada di ujung, terdapat kemungkinan

8 tempat yang berbeda dan pada setiap tempat itu satu kotak kecil memiliki 3 warna yang berbeda. Kedua (kemungkinan rusuk), kotak kecil yang berada di rusuk, terdapat 12 tempat yang berbeda dan pada setiap tempat itu terdapat 2 warna yang berbeda. Sedangkan(kemungkinan tengah) kotak kecil di tengah tiap – tiap sisi tidak akan berubah tempat, hanya ada satu kemungkinan saja. Jadi, banyaknya kombinasi warna yang ada adalah :

Kombinasi = kemungkinan ujung x kemungkinan rusuk x kemungkinan tengah

= (8! x 38) x (12! x 212) x 1 = 519.024.039.293.878.272.000

≈ 5,19 x 1020

Penjelasan diatas selanjutnya dikembangkan untuk menyelesaikan permainan kubus rubik yang terdiri dari 6 sisi (layer). Setiap sisi terdiri dari 9 kotak kecil. Ketika kubus Rubik diputar oleh pengguna, spesifik "rotasi" akan bergerak dan pengaturan warna sisi masing-masing akan berubah.


(62)

Dapat didefinisikan warna putih sebagai warna pusat untuk menyelesaikan rubik. Ketika blok paling atas memutar clockwisely, melibatkan 1 sisi dan 1 rotasi. Sisi yang memutar adalah warna putih, rotasi warna yang berputar putih persegi dengan notasi (0-1-2-5-8-7-6-3) dengan notasi (4) ditengah. Rotasi cincin sisi, jika dimulai dengan sisi warna merah, maka akan menjadi :

1. Merah persegi dengan notasi 6-7-8 2. Hijau Persegi dengan notasi 0-3-6 3. Orange persegi dengan rotasi 2-1-0 4. Biru persegi dengan notasi 8-5-2

Urutan data ini disimpan dengan inisial id atau keyword dari setiap sisi. Id sisi putih 1, maka data ini disimpan dalam sisi1, dan rotasi1. Jadi, kesemuanya penyelesaian rubik memiliki 6 set data. Ketika sisi warna no.1 diaktifkan. Persegi-persegi kecil yang ada didalam setiap sisi diinisialkan sebagai [objN] :

objN objN objN

objN objN objN

objN objN objN

[sq(objN, 0), sq(objN, 1), sq(objN, 2), sq(objN, 5), sq(objN, 8), sq(objN, 7), sq(objN, 6), sq(objN, 3), dan sebagai titik pusat sq(objN,4)]

3

1 2 Sq 0

4 5

6 7 8

Gambar 3.6. Inisial id atau keyword dari setiap sisi rubik

Persegi disini menjadi array dan melakukan pergeseran - mendorong dan menyimpannya kembali dengan nilai yang sudah ditentukan. Itu akan menjadi hasil dari rotasi. Bahkan, semua bergerak dengan kombinasi atau varian dari


(63)

langkah ini. Ini mungkin searah jarum jam atau berlawanan. Jika rotasi cincin tengah, efeknya adalah sama dengan rotasi berlawanan dari kedua sisi atas dan sisi bawah. Pergerakan persegi ini dikondisikan dengan koordinat – koordinat agar rubik dapat diselesaikan. Koordinat tersebut seperti berikut ini :

1. Data 0 = [sq(4, 0), sq(4, 3), sq(4, 6), sq(1, 0), sq(1, 3), sq(1, 6), sq(5, 0), sq(5, 3), sq(5, 6), sq(3, 8), sq(3, 5), sq(3, 2)];

2. Data 1 = [sq(4, 6), sq(4, 7), sq(4, 8), sq(2, 0), sq(2, 3), sq(2, 6), sq(5, 2), sq(5, 1), sq(5, 0), sq(0, 8), sq(0, 5), sq(0, 2)];

3. Data 2 = [sq(4, 8), sq(4, 5), sq(4, 2), sq(3, 0), sq(3, 3), sq(3, 6), sq(5, 8), sq(5, 5), sq(5, 2), sq(1, 8), sq(1, 5), sq(1, 2)];

4. Data 3 = [sq(4, 2), sq(4, 1), sq(4, 0), sq(0, 0), sq(0, 3), sq(0, 6), sq(5, 6), sq(5, 7), sq(5, 8), sq(2, 8), sq(2, 5), sq(2, 2)];

5. Data 4 = [sq(3, 2), sq(3, 1), sq(3, 0), sq(2, 2), sq(2, 1), sq(2, 0), sq(1, 2), sq(1, 1), sq(1, 0), sq(0, 2), sq(0, 1), sq(0, 0)];

6. Data 5 = [sq(1, 6), sq(1, 7), sq(1, 8), sq(2, 6), sq(2, 7), sq(2, 8), sq(3, 6), sq(3, 7), sq(3, 8), sq(0, 6), sq(0, 7), sq(0, 8)];

7. Data tengah 5 = [sq(0, 3), sq(0, 4), sq(0, 5), sq(1, 3), sq(1, 4), sq(1, 5), sq(2, 3), sq(2, 4), sq(2, 5), sq(3, 3), sq(3, 4), sq(3, 5)];

8. Data tengah 0 = [sq(1, 1), sq(1, 4), sq(1, 7), sq(5, 1), sq(5, 4), sq(5, 7), sq(3, 7), sq(3, 4), sq(3, 1), sq(4, 1), sq(4, 4), sq(4, 7)];

9. Data tengah 3 = [sq(0, 1), sq(0, 4), sq(0, 7), sq(5, 3), sq(5, 4), sq(5, 5), sq(2, 7), sq(2, 4), sq(2, 1), sq(4, 5), sq(4, 4), sq(4, 3)];


(64)

Pasangan koordinat ini merupakan inisial yang digunakan agar sistem membaca nilai-nilai sisi menjadi data dan kemudian melakukan pergeseran – push – dan mendorong dari array ini dan kemudian menyimpannya kembali ke sisi yang sudah menjadi inisial sesuai dengan koordinat yang sudah ada.

1. Misalnya untuk membuat sebuah cross pada salah satu sisi rubik, maka harus memenuhi id yaitu dengan koordinat [sq(5, 3), sq(5, 1), sq(5, 5), sq(5, 7)] dengan sq(5, 4) yang menjadi pusat cross. Posisi angka 5 digunakan sebagai acuan utama dalam koordinasi dalam menyelesaikan rubik.

3

1 2

Sq 0

4 5

6 7 8

[sq(5, 3), sq(5, 1), sq(5, 5), sq(5, 7)] dengan sq(5, 4) yang menjadi pusat cross

Gambar 3.7. Bentuk cross pada salah satu sisi rubik

2. Menyelesaikan sudut pada layer atau sisi pertama (sisi atas). Maka harus memenuhi id yaitu dengan koordinat sq(5, 4), sq(2, 4), sq(3, 4), dan koordinat sq(2,1).


(65)

3

1 2

Sq 0

4 5

6 7 8

sq(5, 4), sq(2, 4), sq(3, 4), dan sq(2,1) Gambar 3.8. Koordinat untuk menyelesaikan sudut

3. Selesaikan sisi pertama dengan memenuhi koordinat :

3

1 2

Sq 0

4 5

6 7 8

[sq(5, 3), sq(5, 1), sq(5, 5), sq(5, 7), sq[5,0], sq[5,2], sq[5,6], sq[5,8]], dengan sq(5, 4) yang menjadi pusat

Gambar 3.9. Sisi yang telah selesai disusun warnanya

4. Pada penyelesaian layer kedua langkah pertama memenuhi data koordinat sebagai berikut [sq(5, 3), sq(5, 1), sq(5, 5), sq(5, 7)] dengan sq(5, 4) yang menjadi pusat cross. Posisi pada koordinat ini sama seperti langkah pertama penyelesaian layer satu. Kemudian untuk menyempurnakan warna agar tersusun yaitu dengan melakukan beberapa rotasi.


(66)

3

1 2

Sq 0

4 5

6 7 8

Gambar 3.10. Penyelesaian layer kedua

5. Pada penyelesaian layer ketiga langkah pertama yaitu membuat cross terlebih dahulu dengan melakukan rotasi agar layer bawah keatas, dengan koordinat sebagai berikut :

3

1 2

Sq 0

4 5

6 7 8

[sq(5, 3), sq(5, 1), sq(5, 5), sq(5, 7)] dengan sq(5, 4) yang menjadi pusat cross

Gambar 3.11. Koordinat untuk menyelesaikan cross pada layer ketiga 6. Benarkan posisi sudut pada layer atas agar susunan warna terselesaikan.

Penuhi koordinat berikut untuk membentuk sudut pada persegi [sq(0, 8), sq(1, 6), sq(5, 0), sq(2, 6), sq(1, 8), sq(5, 2), sq(2, 8), sq(3, 6), sq(5, 8), sq(0, 6),


(67)

sq(5, 6), sq(3, 8)]. Sudut yang telah benar akan memenuhi koordinat seperti berikut : [sq(5, 0), sq(5, 2), sq(5, 8), sq(5, 6), sebagai pusat sq[5,4]].

3

1 2

Sq 0

4 5

6 7 8

Gambar 3.12. Penyelesaian layer ketiga

7. Apabila setiap posisi warna pada kubus rubik telah tersusun maka rubik telah dapat diselesaikan.

3.4.1. Performansi Waktu Pada Penyelesaian Rubik

Pada permainan rubik menggunakan format penulisan waktu yang digunakan adalah standar internasional, yaitu dalam menit dan detik yang misalnya dituliskan seperti ini : 1:20,48, yang dibaca “1 menit 20 koma 48 detik”. Tentunya pada aplikasi yang akan dibangun fungsi timer sangat mendukung untuk menghitung performansi penyelesaian rubik antara penyelesaian secara manual dan penyelesaian secara aplikasi. Perbandingan waktu penyelesaian ini diharapkan akan mampu memberikan penjelasan bahwa siapakah yang tercepat dapat menyusun rubik yang teracak agar kembali kekelompok warnanya pada setiap sisi, waktunya yang dihitung dari titik awal acak hingga titik akhir rubik terselesaikan.


(68)

3.4.2. Penyelesaian Rubik

Setiap layer akan diselesaikan dengan menggunakan algoritma layer by

layer. Penyelesaian yang diselesaikan dimulai dari menyelesaikan layer bawah

kemudian layer kedua(layer tengah) dan yang terakhir yaitu layer ketiga (layer

atas). Dibawah ini merupakan gambar 3.13 yang menunjukkan rubik yang belum teracak kemudian disamping gambar tersebut juga menggambarkan rubik yang sudah teracak. Notasi penyelesaian rubik yang teracak ini adalah sebagai berikut :

Gambar 3.13. Rubik Dalam Keadaan Teracak Langkah pada penyelesaian :

1. Solve bottom layer (menyelesaikan lapisan bawah)

2. Solve middle layer (menyelesaikan lapisan tengah).

3. Solve upper/ last layer (menyelesaikan lapisan atas)

4. Orienting last layer (mengorientasikan lapisan atas)

5. Positioning/ permutating last layer (memposisikan lapisan atas)

a. Pada step ini kita mengorientasikan lapisan atas (Last Layer) hingga warnanya seragam.

b. Pada step ini kita memposisikan/ mempermutasikan lapisan atas (Last Layer) sehingga pada kedudukan/ posisi yang tepat.


(69)

(70)

(71)

(72)

Penjelasan berikut akan memaparkan salah satu penyelesaian rubik yang teracak. Gambar (1) merupakan tampilan 2 dimensi sisi rubik yang belum diacak. Gambar (2) merupakan tampilan 2 dimensi sisi rubik yang sudah teracak. Gambar (3) merupakan tampilan 3 dimensi rubik yang teracak. Lebih jelasnya dapat dilihat pada gambar 3.14 dibawah ini :

(1) (2)

(3)

Gambar 3.14. Rubik Dalam Keadaan Teracak

Rubik yang teracak dapat diselesaikan dengan menggunakan algoritma


(73)

yang teracak pada gambar 3.14 diatas. Tahapan penyelesaian rubik sebagai berikut :

Tabel 3.2. Notasi Penyelesaian Rubik

Notasi Gerakan Notasi Gerakan Notasi Gerakan Notasi Gerakan 1. Layer Bawah

kekanan (D+)

21. Layer Kanan Kebawah (R-)

41. Layer bawah kekiri (D-)

61. Layer Depan kekiri (F-)

2. Layer Kanan Kebawah (R-)

22. Layer atas putar 180 (U+,U+)

42. Layer kanan keatas (R+)

62. Layer bawah kekiri (D-)

3. Layer Bawah kekanan (D+)

23. Layer kanan putar kebelakang 180 (R+,R+)

43. Layer Bawah kekanan (D+)

63. Layer depan putar 180 (F-,F-)


(74)

4. Layer belakang kekanan (B-)

24. Layer atas kekanan (U-)

44. Layer kanan putar kebelakang 180 (R+,R+)

64. Layer Bawah kekanan (D+)

5. Layer bawah kekiri (D-)

25. Layer kanan putar kebelakang 180 (R+,R+)

45. Layer atas kekiri (U+)

65. Layer Depan kekiri (F-)

6. Layer kiri kebawah (L+)

26. Layer atas kekanan (U-)

46. Layer Kanan Kebawah (R-)

66. Layer kanan putar kebelakang 180 (R+,R+)


(75)

7. Layer depan keatas (F-)

27. Layer kanan keatas (R+)

47. Layer atas kekanan (U-)

67. Layer depan kekanan (F+)

8. Layer kiri keatas (L-)

28. Layer atas kekiri (U+)

48. Layer Kanan Kebawah (R-)

68. Layer atas kekiri (U+)

9. Layer depan keatas (F-)

29. Layer Bawah kekanan (D+)

49. Layer belakang kekanan (B-)

69. Layer Depan kekiri (F-)


(76)

10.Layer kiri kedepan (R-)

30. Layer Kanan Kebawah (R-)

50. Layer kanan keatas (R+)

70. Layer atas kekanan (U-)

11.Layer depan kekanan (F+)

31. Layer bawah kekiri (D-)

51. Layer belakang keatas (B+)

71. Layer kanan putar kebelakang 180 (R+,R+)

12.Layer kanan putar

kebelakang 180 (R+,R+)

32. Layer Kanan Kebawah (R-)

52. Layer kanan putar kebelakang 180 (R+,R+)

72. Layer bawah kekiri (D-)


(77)

13.Layer Bawah kekanan (D+)

33. Layer Depan kekiri (F-)

53. Layer depan kekanan (F+)

73. Layer depan putar 180 (F-,F-)

14. Layer Kanan Kebawah (R-)

34. Layer kanan keatas (R+)

54. Layer atas kekiri (U+)

74. Layer Bawah kekanan (D+)

15.Layer bawah kekiri (D-)

35. Layer depan kekanan (F+)

55. Layer Depan kekiri (F-)

75. Layer Depan kekiri (F-)


(78)

16.Layer kanan keatas (R+)

36. Layer kanan keatas (R+)

56. Layer atas kekanan (U-)

76. Layer bawah kekiri (D-)

17.Layer belakang keatas (B+)

37. Layer belakang keatas (B+)

57. Layer kanan putar kebelakang 180 (R+,R+)

77. Layer depan putar 180 (F-,F-)

18. Layer Kanan Kebawah (R-)

38. Layer Kanan Kebawah (R-)

58. Layer bawah kekiri (D-)

78. Layer Bawah kekanan (D+)


(79)

19.Layer belakang kekanan (B-)

39. Layer belakang kekanan (B-)

59. Layer depan putar 180 (F-,F-)

79. Layer Depan kekiri (F-)

20.Layer atas kekanan (U-)

40. Layer Kanan Kebawah (R-)

60. Layer Bawah kekanan (D+)

80. Layer kanan putar kebelakang 180 (R+,R+) / Selesai


(80)

3.4.3 Konversi Kode Notasi Rubik

Terminologi yang biasa dipakai untuk menjelaskan suatu algoritma

Rubik’s Cube sebagai berikut:

1. Rubik’s Cube terdiri atas enam buah sisi: depan (front), belakang (back), kiri (left), kanan (right), atas (up), dan bawah (down).

2. Gerakan memutar sisi Rubik’s Cube searah jarum jam disimbolkan dengan huruf pertama dari nama sisi tersebut dalam bahasa Inggris. Untuk yang berlawanan arah dengan jarum jam, ditambahkan tanda

petik (’). Contohnya, F berarti memutar sisi depan (front) searah jarum

jam, sedangkan L’ berarti memutar sisi kiri (left) berlawanan arah dengan jarum jam.

Pada aplikasi yang akan dirancang kode notasi tersebut mengalami perubahan pada algoritma yang digunakan dalam aplikasi. Perubahan ini bertujuan agar sistem lebih mudah dalam membaca perintah untuk menjalankan kode notasi yang dituliskan. Perubahan dapat dilihat pada tabel 3.3 dan tabel 3.4 sebagai berikut :

Tabel 3.3. Konversi Notasi Rubik Searah Jarum Jam

Kode Notasi Putar Searah Jarum Jam Kode Notasi Pada Aplikasi

F (front atau sisi depan) F+

B (back atau sisi belakang) B+ U (up atau sisi atas) U+ D (down atau sisi bawah) D+

R (right atau sisi kanan) R+


(1)

134

BAB V

KESIMPULAN

Pada bagian terakhir ini akan dikemukakan kesimpulan dari skripsi yang berjudul “IMPLEMENTASI ALGORITMA LAYER BY LAYER UNTUK MENYELESAIKAN PERMAINAN RUBIKS CUBE” dan saran yang bersifat membangun.

5.1 Kesimpulan

Berdasarkan dari hasil penelitian, analisis, perancangan sistem dan pembuatan program sampai tahap penyelesaian program, maka penulis dapat mengambil kesimpulan sebagai berikut :

1 Pencarian solusi pada penyelesaian permainan rubik dalam aplikasi ini menggunakan algoritma layer by layer, implementasi algoritma ini digunakan untuk menyusun warna rubik yang teracak agar kembali kekelompok warnanya.

2 Pada penyelesaian manual dan aplikasi lamanya proses penyelesaian dan banyaknya langkah untuk menyelesaikan rubik diperiksa dari titik awal solusi dan titik tujuan atau titik akhir solusi penyelesaian yang dihitung dengan waktu.


(2)

135

5.2 Saran

Permainan rubik ini masih dapat dikembangkan lebih lanjut dengan perkembangan spesifikasi kebutuhan pengguna sistem yang harus dipenuhi dalam mencapai tahap yang lebih tinggi dan kinerja sistem yang lebih baik. Berikut adalah beberapa saran untuk pengembangan lebih lanjut :

1 Dapat menggunakan algoritma penyelesaian rubik selain algoritma layer by layer yang lebih optimal dalam hal waktu dan langkah penyelesaian yang diperiksa.

2 Diharapkan untuk pengembangan selanjutnya tampilan antarmuka dibuat lebih menarik.

3 Terdapat nilai heuristic yang lebih optimal dalam pencarian, mengembangkan lagi Artificial Intelligance pada aplikasi yang dibangun. 4 Tampilan agar lebih menarik dan interaktif sehingga lebih mudah dalam


(3)

136

DAFTAR PUSTAKA

[1] Ilham Perdana.2007.Hand Out Metodologi Penelitian, “Petunjuk Tata Tulis Ilmiah”. Universitas Komputer Indonesia. Bandung.

[2] Marcus.2007.,“Rekayasa Perangkat Lunak”.Elex Media Komputindo.Jakarta. [3] __________,AryaNugraha.MagicCube.http://Rubikku/AlgoritmaRubik/Magi

c Cube « blog arya nugraha.htm, diakses pada 20 Maret 2011 pukul 20.40 (GMT + 7).

[4] Khandar, William.2008 “Jurnal Kuliah IF16022 Implementasi Algoritma Untuk Menyelesaikan Permainan Rubik’s Cube Dalam Kode Program”, ITB Press.

[5] Teguh Lestari. 2008. “Solusi Kubus Rubik 3x3 notasi kubus rubik”. TL PUZZLE.

[6] Putra, Janitra Ezra.2010.Buku Pintar Rubik “FAQ Tentang Rubik Paling Lengkap”.Jakarta.Gradien Mediatama.

[7] __________, Aglar Ardharaja Purwoko.Rubik, Permainan Kotak Warna Warni Magic .http://aglaros.blogspot.com/2010/04/rubik-permainan-kotak-warna-warni-magic.h, diakses pada 20 Maret 2011 pukul 20.40 (GMT + 7). [8] _________,Jessica Fridrich Method (metode Jessica Fridrich) « Virkill’s and

Rubik.htm, diakses pada 20 Maret 2011 pukul 20.40 (GMT + 7).

[9] __________, DR.Ericlin, Permainan Kotak Warna Warni Magic . http://www.gotoandplay.it/_games/playGame.php?g=60, diakses pada 20 Maret 2011 pukul 20.40 (GMT + 7).

[10] Wikipedia UML . Artikel UML. http://id.wikipedia.org/wiki/UML.diakses pada 27 Maret 2011 pukul 10.12 (GMT + 7).

[11] Enterprise, Jubilee, Teknik Membuat Game dengan Flash 8, Jakarta, Elex Media Komputindo.

[12] Setiawan, Sulhan. 2007.Merancang Aplikasi Flash secara optimal, Yogyakarta, Andi.

[13] I Wayan Dikse & I Putu Sundika. 2011. Animasi dengan flash 8, Yogyakarta,GrahaIlmu.


(4)

137

[14] Brata, Abel.2010.”Kitab Sakti Master Rubik”.Jakarta.Bukune.

[15] Ranuwijaya, Dante. 2010. “Trik Menaklukan Rubik Untuk Pemula”.Yogyakarta.Hexagon

[16] Muntaha, Amir. “Jurnal Kuliah IF2251 Penerapan Algoritma Greedy dan Backtracking Dalam Penyelesaian Masalah Rubik’s Cube”, ITB Press, 2007. [17] __________, SaputraMZ.Blog Tutorial, 3 Langkah Mudah Bermain Kubik-Rubik www://www.SaputraMZ.com, diakses pada 20 Maret 2011 pukul 20.40 (GMT + 7).


(5)

(6)

BIODATA PENULIS Data Pribadi

Pendidikan Formal

TAHUN NAMA SEKOLAH

1995 – 2001 SDN 93 Banda Aceh 2001 – 2003 SLTPN 03 Banda Aceh 2003 – 2006 SMAN 03 Banda Aceh

2006 – 2007 Program Profesional IT Telkom (D1) 2007 – Sekarang Universitas Komputer Indonesia

Bandung, 13 Agustus 2011 Penulis

( Rahmi Djohan) NIM. 10107823 Nama Lengkap : Rahmi Djohan

Tempat/Tgl. Lahir : Banda Aceh, 10 Juni 1988 Jenis Kelamin : Perempuan

Agama : Islam

Bangsa/Suku : Indonesia/Aceh

Alamat : Jalan Kubang Selatan Rt 04/14 No.107.

Kab. Bandung. 40132 No.Hp : 081360100102

Email : 1. [email protected] 2. [email protected]