1.1. Latar Belakang masalahDi zaman yang semakin maju ini kita dituntut untuk selalu dapat mengikuti perkembangan dunia komputerisasi maupun teknologi informasi yang semakin hari semakin berkembang. Salah satu dari perkembangan teknologi tersebut adalah semakin berkembangnya sistem operasi Linux, dengan banyaknya pilihan distro Linux dalam aplikasinya kita dapat menyesuaikan distro apa yang sesuai dengan keinginan kita.
Saat ini sistem operasi Linux sudah bukan hal awam lagi bagi kita, akan tetapi variasi-variasi dari aplikasi terutama Game yang ada sampai saat ini masih terbatas dibandingkan dengan sistem operasi lain, terkadang kita ingin memakai aplikasi yang diinginkan tetapi aplikasi tersebut hanya ada pada sistem operasi lain, sedangkan jika ingin memakai aplikasi tersebut ternyata kita harus membeli lisensi ketika aplikasi tersebut ternyata tidaklah free seperti aplikasi-aplikasi yang ada pada sistem operasi Linux.
engan mempertimbangkan kondisi yang berlaku maka dibuatlah sebuah aplikasi di Linux untuk memperkaya aplikasi-aplikasi yang ada saat ini yaitu “Aplikasi Sudoku di Linux Berbasis Open Source”.
1.2 Pokok MasalahSudoku adalah sebuah permainan angka yang membutuhkan ketelitian, kesabaran, serta kecerdasan. Permainan ini sering kita jumpai di majalah-majalah atau sebuah buku khusus yang berisi permainan sudoku.
Permasalahannya sekarang adalah bagaimana membuat sebuah aplikasi permainan sudoku dengan memanfaatkan tekhnologi komputer karena masih jarang kita temukan permainan sudoku yang diamainkan dikomputer, tentu saja dengan user interface yang menarik sehingga user tidak mudah bosan dalam memainkan game ini.
1.3 Batasan MasalahAgar pembahasan tidak meluas maka diperlukan batasan masalah,. Aplikasi ini hanya memainkan sudoku 4x4 dan 9x9 dengan input yang digunakan adalah angka 1 sampai 9, karena dalam permainan sudoku ada sebagian yang dimainkan dengan mengisikan huruf, sedangkan untuk level permainan dibatasi sampai 5 level saja.
1.4 Maksud PenelitianSudoku adalah suatu program aplikasi yang digunakan untuk menguji sampai dimana tingkat kecerdasan kita dalam menganalisa penataan angka-angka yang kita susun dengan aturan yang telah ditentukan, kecepatan analisa yang kita lakukan dihitung dengan waktu. Semakin tinggi level yang diselesaikan, maka akan semakin sulit pula tingkat penyelesaiannya dan semakin tinggi pula tingkat kecerdasan kita diuji. Oleh karena itu dengan adanya aplikasi ini kita dapat menguji kemampuan kecepatan otak kita dalam menganalisa sesuatu.
1.5 Tujuan PenelitianAdapun tujuan dari pembuatan aplikasi Sudoku di Linux Berbasis Open Source ini adalah:
. Bisa memberikan pengetahuan dan memberikan motivasi bagi pengguna komputer, terutama bagi mahasiswa untuk mempelajari dan mendalami bidang ilmu pengetahuan dalam bidang IT.
. Memberikan alternatif lain aplikasi Sudoku di komputer, untuk aplikasi ini di sistem operasi Linux.
3. Memberikan alternatif lain kepada pemakai komputer yang ingin menguji sampai dimana tingkat kecerdasannya.
. Aplikasi ini dapat juga digunakan untuk melatih kecepatan otak kita dalam menganalisa sesuatu hal.
. Dengan adanya aplikasi ini, kita dapat membudayakan bermain game sambil mengasah kemampuan di sistem operasi Linux.
1.6 Sistematika Karya TulisSesuai dengan batasan masalah yang dijelaskan secara garis besar, maka sistematika karya tulis ini di bagi menjadi 5 Bab yaitu sebagai berikut :
Bab I. Pendahuluan Pada Bab ini akan diuraikan mengenai Latar Belakang Masalah, Maksud Penelitian, Tujuan Penelitian, Batasan Masalah, dan Sistematika Karya Tulis.
Bab II Landasan Teori Dalam bab ini akan diuraikan tentang pengertian Open Source, pengertian dari Linux, pengertian dari Gambas yaitu bahasa program yamg digunakan dalam pembuatan software ini, pengertian dari Sudoku sehingga dapat dimengerti oleh para pemakai sebelum menggunakan program Aplikasi Sudoku di Linux Berbasis Open Source ini.
Bab III Perancangan system Pada bab ini meliputi diagram alir perancangan system yang dibuat, penjelasan sisitem serta spesifikasi berkas yang dibutuhkan, system pendukung berupa system perangkat keras dan system perangkat lunak yang digunakan, perancangan berkas, perancangan masukan dan perancangan keluaran.
Bab IV Implementasi Program Pada bab ini akan diuraikan bagaimana program dapat dijalankan yang terdiri dari program utama, proses pengolahan data dan program laporan, pelaksanaan program dan sub program dalam menjalankan aplikasi ini.
Bab V Penutup Pada Bab ini berisi kesimpulan dan saran – saran.
BAB II
LANDASAN TEORI
2.1. Open Source
2.1.1. Pengertian Open Source Jika diartikan menurut arti kata, Open Source dalam bahasa Indonesia berarti Kode Terbuka. Kode yang dimaksud disini bukanlah kode morse, ataupun kode barang, tetapi yang kode yang dimaksud disini adalah Kode Program. Kode Program yang dimaksud adalah perintah - perintah yang diketikkan berdasarkan logika yang benar.
Suatu program dengan lisensi Open Source berarti program tersebut membuka Kode Programnya bagi siapa saja yang ingin mempelajarinya, caranya dengan menyertakan kode program bersama dengan distribusi paket program yang sudah jadi (hasil kompilasi). Dengan penyertaan kode program tersebut, pembeli atau pengguna program dapat membedah program tersebut, melakukan modifikasi sesuai dengan kebutuhannya, bahkan memperbaiki Bug atau kesalahan logika dalam program tersebut. Contoh program yang Open Source adalah Linux. Dalam setiap distribusinya vendor Linux juga menyertakan Kode Program Linux.
Satu hal yang perlu ditekankan adalah bahwa program atau software yang Open Source tidak selalu tersedia secara gratis. Tetap ada biaya yang dikeluarkan untuk membeli program tersebut. Contoh, misalnya Sistem Operasi RedHat Linux, program Linuxnya tetap dibeli dengan harga yang murah. Lalu, apa bedanya Open Source dengan Closed Source.
Pada program yang Closed Source, paket program tidak dapat didistribusikan lagi selain oleh pembuat / vendor program tersebut. Jika ada distribusi yang bukan oleh vendor program tersebut, maka itu dianggap sebagai pembajakan software. Atau dengan kata lain program yang Closed Source tidak dapat didistribusikan secara bebas, kecuali oleh vendor program tersebut. Sedangkan software yang Open Source, dapat didistribusikan secara bebas oleh siapapun. Paket program juga dapat digandakan secara bebas.
2.1.2. Tujuan Open Source Tujuan Open Source sebenarnya adalah ingin menghilangkan ketergantungan terhadap vendor program, dimana vendor bisa saja bertindak seenaknya. Dalam program yang Closed Source vendor bisa saja menyisipkan kode - kode yang mungkin dapat membahayakan pengguna program, dan menghilangkan privasi pengguna.
Selain itu, Open Source juga bertujuan menyediakan software yang mudah dijangkau oleh masyarakat luas, dan menghindari pengerukan keuntungan yang berlebihan oleh vendor.
Bagi kalangan IT khususnya di Indonesia, dengan adanya software yang Open Source dapat mendorong semangat untuk mengembangkan program bagi tenaga - tenaga TI di Indonesia. Sebab dengan mempelajari kode program, dapat dianalisa dimana kelemahan program, apa sesungguhnya proses yang berlangsung dalam kerja program, dan sekaligus mencari solusi terhadap kelemahan program yang ditemui. Atau yang lebih extreem adalah memodifikasi program sedemikian rupa agar lebih ergonomis / pas digunakan sesuai dengan keperluan.
Dengan mempelajari kode program yang Open Source kita dapat menganalisa teknik yang digunakan dalam pembuatan software tersebut, yang nantinya pengetahuan tersebut dapat dimanfaatkan untuk merancang aplikasi yang berguna.
2.2. Linux
2.2.1. Sejarah Singkat Linux Kernel Linux pada mulanya ditulis sebagai proyek hobi oleh pelajar universitas Finland Linus Torvalds yang belajar di Universitas Helsinki, untuk membuat kernel Minix yang gratis dan dapat diedit. (Minix adalah projek pelajaran menyerupai UNIX dibuat untuk mudah digunakan dan bukannya untuk digunakan secara komersial.) Versi 0.01 dikeluarkan ke Internet pada September 1991, Versi 0.02 pada 5 Oktober 1991.
Berikutnya, beribu-ribu penulis program sukarelawan seluruh dunia telah menyertai proyek ini.
Sejarah sistem operasi Linux berkaitan erat dengan proyek GNU, proyek program bebas freeware terkenal diketuai oleh Richard Stallman. Proyek GNU diawali pada tahun 1983 untuk membuat sistem operasi seperti Unix lengkap “kompiler, utiliti aplikasi, utiliti pembuatan dan seterusnya” diciptakan sepenuhnya dengan perangkat lunak bebas. Pada tahun 1991, pada saat versi pertama kerangka Linux ditulis, proyek GNU telah menghasilkan hampir semua komponen sistem ini kecuali kernel. Torvalds dan pembuat kernel seperti Linux menyesuaikan kernel mereka supaya dapat berfungsi dengan komponen GNU, dan seterusnya mengeluarkan Sistem operasi yang cukup berfungsi. Oleh karena itu, Linux melengkapi ruang terakhir dalam rancangan GNU.
Walaupun kernel Linux dilisensikan di bawah GNU General Public License, ia bukannya sebesar dari proyek GNU.
Tux, seekor Pinguin, merupakan logo dan maskot bagi Linux. Linux adalah trademark (SN: 1916230) yang dimiliki oleh Linus Torvalds. Linux terdaftar sebagai "Program sistem operasi komputer bagi penggunaan komputer dan operasi". Trademark ini didaftarkan setelah ada suatu kejadian di mana seorang pemalsu bernama William R Della Croce Jr mulai mengirim surat kepada para distributor Linux dan megklaim trademark Linux adalah hakmiliknya serta meminta royalti sebanyak 10% dari mereka. Para distributor Linux mulanyai mendorong agar trademark yang asli diberikan kepada Linus Torvalds. Pemberian lisensi trademark Linux sekarang dibawah pengawasan Linux Mark Institute.

Gambar 2.1. Tux maskot resmi Linux
2.2.2. Distrbusi Linux Terdapat banyak distribusi Linux (lebih dikenali sebagai distro) yang dibuat oleh individu, grup, atau lembaga lain. Masing-masing disertakan dengan program sistem dan program aplikasi tambahan, di samping menyertakan suatu program yang memasang keseluruhan sistem di komputer (installer program).
Inti di setiap distribusi Linux adalah kernel, koleksi program dari proyek GNU (atau proyek lain), cangkang (shell), dan aturcara utilitas seperti pustaka (libraries), kompilator, dan penyunting (editor). Kebanyakan sistem juga menyertakan aturcara dan utilitas yang bukan-GNU. Bagaimanapun, utilitas tersebut dapat dipisahkan dan sistem ala UNIX masih tersedia. Beberapa contoh adalah aturcara dan utiliti dari BSD dan sistem grafik-X (X-Window System). X menyediakan antarmuka grafis (GUI) yang umum untuk Linux.
2.2.3. Aplikasi Sistem Operasi Linux Pengguna Linux, yang pada umumnya memasang dan melakukan sendiri konfigurasi terhadap sistem, lebih cenderung mengerti teknologi dibanding pengguna Microsoft Windows atau Mac OS. Mereka sering disebut hacker atau geek. Namun stereotip ini semakin berkurang dengan peningkatan sifat ramah-pengguna Linux dan makin luasnya pengguna distribusi. Linux telah membuat pencapaian yang cukup baik dalam pasaran komputer server dan komputer tujuan khusus, seperti mesin render gambar dan server web. Linux juga mulai populer dalam pasaran komputer desktop.
Linux merupakan asas kepada kombinasi program-server LAMP, kependekan dari Linux, Apache, MySQL, Perl/PHP/Python. LAMP telah mencapai popularitas yang luas di kalangan pengembang Web.
Linux juga sering digunakan sebagai sistem operasi embeded. Biaya pengadaan Linux yang murah memungkinkan penggunaannya dalam peralatan seperti simputer, yaitu komputer berbiaya rendah yang ditujukan pada penduduk berpendapatan rendah di Negara-negara berkembang.
Dengan lingkungan desktop seperti KDE dan GNOME, Linux menawarkan antarmuka pengguna yang lebih menyerupai Apple Macintosh atau Microsoft Windows daripada antarmuka baris teks seperti Unix. Oleh karena itu, lebih banyak program grafik dapat ditemui pada Linux yang menawarkan berbagai fungsi yang ada pada utilitas komersil.
2.2.4. Instalasi Linux Proses instalasi Linux yang sukar seringkali menjadi penghalang bagi pengguna baru, namun proses ini sekarang menjadi lebih mudah. Dengan penerimaan Linux oleh beberapa pabrikan komputer pribadi besar, komputer terpasang (built up) dengan distribusi Linux banyak tersedia. Selain itu, terdapat juga distribusi Linux yang dapat dijalankan (boot) secara langsung dari cakram optik (CD) tanpa perlu diinstalasi ke cakram keras (hard disk), hal ini dikenal dengan istilah Live CD. Contoh distribusi dalam bentuk Live CD adalah Knoppix/Gnoppix, Kubuntu/Ubuntu dan Gentoo. Saat ini hampir semua distribusi Linux menyediakan versi Live CD untuk produknya. ISO image untuk cakram optik untuk distribusi Linux tersebut biasanya dapat diunduh dari Internet, dibakar ke CD, dan selanjutnya dapat digunakan sebagai CD yang siap untuk proses boot.
2.2.5. Konfigurasi Linux Konfigurasi setelan Linux dan aplikasi di atasnya banyak yang dilakukan lewat berkas teks di direktori /etc. Pada perkembangan selanjutnya, utilitas seperti Linuxconf dan GNOME System Tools memudahkan pekerjaan ini lewat antarmuka grafik. Kendati demikian, baris perintah (command line) tetap merupakan cara yang paling umum digunakan.
2.3. Gambas
2.3.1. Pengertian Gambas Gambas diciptakan oleh Benoit Minisini (perancis) merupakan salah satu bahasa pemrograman visual di linux, yang dibuat sebagai interpreter bahasa basic.
Walaupun memiliki kesamaan dengan VB, Gambas bukanlah clone dari bahasa pemrograman buatan Microsoft ini. GAMBAS (Gambas Almost Means Basic) sendiri merupakan rekursif (perulangan) akronim atau singakatan dari beberapa kata yang mengandung kata basic. Adapun beberapa Komponen yang dibutuhkan Gambas yaitu :
Paket X11 development
QT 3 development
Paket KDE 3 development
Paket database PostreSQL dan MySQL, SQLite atau ODBC
Paket libcurl versi 7.10.7 keatas untuk aplikasi yang berbasis jaringan
Paket GTK+ development, bila ingin membangun komponen GTK+
Paket SDL dan SDL_mixer untuk membangun komponen SDL
2.3.2. Perbedaan Gambas dan Visual BasicVisual Basic
Berjalan pada sistem operasi windows
Merupakan program dengan license proprietary atau komersil
Merupakan program yang bersifat close source artinya tidak dilengkapi dengan source code nya
Ganbas
Berjalan pada sistem operasi Linux
Merupakan program open source, user dapat memodifikasi kode sesuai dengan kebutuhan
Program nya gratis, karena berlisensi GPL (General Public License)
Programmer boleh menjual aplikasi yang dibuat dengan GAMBAS.
2.4. Sudoku
2.4.1. Pengertian Sudoku Sudoku (atau ada pula yang menulisnya Su Doku) adalah sebuah puzzle yang didasarkan pada konsep Latin Square. Latin Square sendiri diperkenalkan pada tahun 1783 oleh Leonhard Euler, seorang matematikawan asal Swiss.
Papan Sudoku terbuat dari sembilan buah kotak berukuran 3×3 (kita sebut saja blok) yang disusun sedemikian rupa sehingga menghasilkan kotak besar berukuran 9×9. Beberapa kotak sudah diisi sebagai petunjuk awal dan tugas pemain adalah melengkapi angka-angka pada kotak yang lain sehingga keseluruhan papan permainan terisi secara lengkap. Tentu saja permainan ini ada aturannya, tetapi amatlah sederhana: kotak-kotak pada setiap baris, kolom, dan blok harus berisi sebuah angka yang unik dari 1 hingga 9. Angka-angka ini sebenarnya tidak memiliki hubungan aritmetis satu sama lain. Anda boleh menggantinya dengan 9 huruf, lambang, bahkan warna yang berbeda.

Gambar 2.2. Contoh papan Sudoku
2.4.2. Sejarah Singkat Sudoku Jika Anda mengira bahwa puzzle ini berasal dari Negeri Matahari Terbit, Anda salah. Nama puzzle ini memang berbahasa Jepang, tetapi asalnya bukanlah dari sana. Permainan ini tadinya bernama Number Place dan pertama kali dipublikasikan pada tahun 1979 dalam sebuah majalah khusus puzzle, Dell Puzzle Magazines, di Manhattan, New York, dan terus berlangsung sampai sekarang. Adalah Howard Garns, seorang mantan arsitek, meninggal tahun 1989, yang paling dicurigai sebagai orang yang menciptakan permainan ini ketika dia berusia 74 tahun.
Tahun 1984 Nikoli, sebuah perusahaan penerbitan, membawa permainan ini ke Jepang dan menerbitkannya di sebuah media cetak khusus puzzle miliknya, Monthly Nikolist. Mereka menamakannya Suuji Wa Dokushin Ni Kagiru, disingkat Sudoku dan mematenkan kata ini. Media lain pun kemudian menerbitkan permainan ini dengan nama aslinya, Number Place. Mulai saat itulah permainan ini “mewabah” di Jepang. Lebih dari 600.000 majalah tentang Sudoku terjual di Jepang setiap bulannya. Lucunya, mereka lebih senang menyebutnya Number Place, sementara orang di luar Jepang menamakannya Sudoku.
Dari Jepang, puzzle ini kemudian “ditemukan” oleh Wayne Gould, seorang pensiunan hakim asal Matamata, Selandia Baru, ketika dia pada tahun 1997 berbelanja di sebuah toko buku di Tokyo. Gambar kotak-kotak berisi angka itu langsung menarik perhatiannya dan dia pun menjadi pecandu berat permainan ini. Dia pun kemudian(selama lebih dari 6 tahun) menulis sebuah program komputer agar soal permainan ini bisa dibangun secara lebih cepat. Gould lalu menawarkannya pada The Times, Inggris, yang kemudian menerbitkannya pada akhir tahun 2004 dengan nama Su Doku. Sampai saat ini, Times menerbitkan Su Doku setiap hari, menggunakan program buatan Gould ini. Gould pun kemudian menjual puzzle ini di situsnya. Dia menargetkan penghasilan satu juta dollar untuk tahun ini dari penjualan perangkat lunak dan royalti buku-bukunya.
Sudoku menjadi benar-benar mewabah di Inggris ketika The Daily Telegraph mengenalkannya pada pembacanya pada bulan Februari 2005. Media lain pun kemudian mengikuti dengan menyediakan permainan ini di edisinya masing-masing. Pertengahan Mei 2005 adalah awal demam Sudoku. Segala hal tentang Sudoku menjadi ladang uang, pemuatan di koran harian, penerbitan buku, penerbitan majalah, pertunjukkan televisi, siaran radio, pelayanan langganan lewat email, dan penyediaan layanan di telepon genggam. Khusus untuk buku, News & Star mencatat bahwa 6 dari 10 buku nonfiksi yang paling laris saat ini adalah buku tentang Sudoku. Hal ini cukup membuat J.K. Rowling, penulis serial Harry Potter, diberitakan khawatir akan kelancaran penjualan buku-bukunya. Dari Inggris, Sudoku kemudian menyebar di daratan Eropa, dari Prancis sampai Slowakia, lalu menular pula ke Australia dan Amerika. Variasi Sudoku pun kemudian dibuat.
Menjalarnya demam Sudoku ke seluruh dunia dimungkinkan karena untuk menyelesaikan permainan ini tidak diperlukan pengetahuan umum, kepandaian atas bahasa tertentu, juga kemampuan matematika. Anda hanya memerlukan kecermatan, kesabaran, dan logika.
BAB III
PERANCANGAN SISTEM
3.1 Sistem Pendukung Sistem merupakan sekumpulan elemen-elemen yang saling berkaitan dan bertanggung jawab memproses masukan atau input yang satu dengan yang lain, sehingga mampu melakukan keluaran atau output berupa informasi yang dapat digunakan dalam pengambilan keputusan. Oleh karena itu untuk menghasilkan ouput yang sesuai dengan keinginan, maka sistem harus didukung oleh perangkat keras dan perangkat lunak yang handal, sehingga hasil akhir yang didapat akan menjadi maksimal.
3.1.1 Sistem Perangkat KerasYang dimaksud dengan perangkat keras adalah peralatan fisik atau komputer itu sendiri secara umum. Perangkat keras terdiri dari unit masukan, unit pengolah, dan unit keluaran.
Adapun sistem perangkat keras yang disarankan oleh penulis untuk menjalankan program Aplikasi Sudoku di Linux Berbasis Open Source ini yaitu :
. Processor pentium Dual Core 1,6 Mhz
2. RAM 512 Mb atau lebih tinggi
3. Hardisk 80 GB
4. VGA Card ATI Radeon M200 Share Vram
3.1.2 Sistem perangkat lunakPerangkat lunak adalah program-program yang diperlukan untuk menjalankan perangat keras, diantaranya adalah bahasa pemrograman, sistem operasi, program aplikasi. Adapun Perangkat lunak yang digunakan untuk membuat program Aplikasi Sudoku di Linux Berbasis Open Source ini yaitu :
1. sistem operasi Linux Open Suse 10.2.
2. Bahasa pemrograman Gambas versi 1.0.17 dan Gambas2 versi 1.9.49.
3. Pemrograman Database dengan Sqlite3.
3.2 Rancangan FormPerancangan Form program Aplikasi Sudoku di Linux Berbasis Open Source ini terdiri dari 9 buah form dimana masing – masing form mempunyai fungsi yang berbeda, namun antara form1 dengan form yang lainnya saling ketergantungan. Berikut ini rancangan form yang terdapat pada program Aplikasi Sudoku di Linux Berbasis Open Source ini, yang mana terdiri dari 9 buah form yaitu FrmHal1, FrmMain, FrmTraining, FrmLevel1, FrmLevel2, FrmLevel3, FrmLevel4, FrmLevel5, dan FormRekor, dengan alir dari 9 buah form tersebut sebagai berikut :

Gambar 3.1 Diagram alir form
Dari bentuk diagram tersebut, maka dapat dijadikan dalam sebuah sistem yang saling berkaitan, dengan awal pertama kali muncul yaitu FrmHal1, kemudian diikuti FrmMain yang berisi menu-menu pilihan dari aplikasi sudoku berbasis open source ini.
3.2.1 FrmHal1FrmHal1 merupakan form utama, yaitu form yang ditampilkan pertama kali saat program dijalankan. Pada Form ini digunakan ketika aplikasi dijalankan pertama kali dengan bentuk animasi. Rancangan FrmHal1 seperti gambar berikut :

Gambar 3.2 FrmHal1
3.2.2 FrmMain FrmMain merupakan form yang muncul setelah form utama, ada beberapa menu pilihan untuk melanjutkan aplikasi ini, Menu Challenge adalah untuk melanjutkan permainan dengan 5 pilihan level yang ada pada aplikasi ini, menu Training adalah untuk menuju ke FrmTraining, Menu Record adalah untuk menuju ke FormRekor, Menu About Me berisi tentang profile dari pencipta aplikasi ini, sedangkan menu Exit untuk keluar dari aplikasi. Gambar desain FrmMain sebagai berikut :

Gambar 3.3 FrmMain
3.2.3 FrmLevel1 FrmLevel1 merupakan form yang menampilkan permainan sudoku 9x9 dengan 5 angka yang pertama kali muncul secara acak pada tiap kotak parsial. Gambar desain FrmLevel1 sebagai berikut :

Gambar 3.4 Sudoku Level 1
3.2.4 FrmLevel2 Desain pada FrmLevel2 sama dengan FrmLevel1 yaitu merupakan form yang menampilkan permainan sudoku 9x9 tetapi dengan 4 angka yang pertama kali muncul secara acak pada tiap kotak parsial.
3.2.5 FrmLevel3 Desain pada FrmLevel3 sama dengan FrmLevel1 yaitu merupakan form yang menampilkan permainan sudoku 9x9 tetapi dengan 3 angka yang pertama kali muncul secara acak pada tiap kotak parsial.
3.2.6 FrmLevel4 Desain pada FrmLevel4 sama dengan FrmLevel1 yaitu merupakan form yang menampilkan permainan sudoku 9x9 tetapi dengan 2 angka yang pertama kali muncul secara acak pada tiap kotak parsial.
3.2.7 FrmLevel5 Desain pada FrmLevel5 sama dengan FrmLevel1 yaitu merupakan form yang menampilkan permainan sudoku 9x9 tetapi dengan 1 angka yang pertama kali muncul secara acak pada tiap kotak parsial.
3.2.8 FrmTrainingFrmTraining merupakan form yang menampilkan Sudoku 4x4 tanpa ada angka yang pertama kali muncul, dengan waktu permainan tidak terbatas dengan Gambar desain FrmTraining sebagai berikut :

Gambar 3.5 Menu Training
3.2.9 FrmRekor FrmRekor merupakan form yang menampilkan rekor dari hasil permainan Level1 sampai dengan Level5 yang disimpan pada sebuah database, Gambar desain FrmRekor sebagai berikut :

Gambar 3.6 Record
3.3 Logika ProgramPada logika program Aplikasi Sudoku di Linux Berbasis Open Source ini mengikuti rule yang ada pada permainan sudoku itu sendiri yaitu dengan papan Sudoku yang terbuat dari sembilan buah kotak berukuran 3×3 (sebuah blok) yang disusun sedemikian rupa sehingga menghasilkan kotak besar berukuran 9×9, pada tiap blok 3x3 dapat diisikan angka 1 sampai 9 dengan aturan tidak boleh ada angka yang sama, selanjutnya pada kotak besar berukuran 9x9 tiap baris dan kolom dapat diisikan angka 1 sampai 9 dengan aturan tidak boleh ada angka yang sama, dengan aturan tersebut dapat dimasukkan ke dalam bahasa program dengan logika program sebagai berikut :
If jumlah_tiapblok=45 AND jumlah_tiapbaris=45 AND jumlah_tiapkolom=45 THEN
Rule = True
Else if jumlah_tiapblok<>45 AND jumlah_tiapbaris<>45 AND jumlah_tiapkolom<>45
THEN Rule = False
Keterangan :
jumlah_tiapblok = 45 adalah jumlah dari angka 1 sampai 9.
jumlah_tiapbaris = 45 adalah jumlah dari angka 1 sampai 9.
jumlah_tiapkolom = 45 adalah jumlah dari angka 1 sampai 9.
Rule adalah aturan dari permainan sudoku.
Dengan aturan program seperti diatas maka aturan dari permainan sudoku akan terpenuhi, maka dapat dibuat sebuah algoritma sebagai berikut :
1. masukkan angka 1 <= 9 pada tiap kotak.
2. jika jumlah_tiapblok = 45 dan jumlah_tiapbaris = 45 dan jumlah_tiapkolom = 45, ke no 4, selain itu ke no 3.
3. Rule = False, kembali ke no 1.
4. Rule = True, ke no 5.
5. Simpan data hasil permainan.
Sedangkan untuk menu latihan pada Aplikasi Sudoku di Linux Berbasis Open Source ini mempunyai rule yang sama, tetapi dengan blok yang terdiri empat buah kotak berukuran 2×2 yang disusun sehingga menghasilkan kotak besar 4x4, maka logika program adalah sebagai berikut :
If jumlah_tiapblok=10 AND jumlah_tiapbaris=10 AND jumlah_tiapkolom=10 THEN
Rule = True
Else if jumlah_tiapblok<>10 AND jumlah_tiapbaris<>10 AND jumlah_tiapkolom<>10
THEN Rule = False
Keterangan :
jumlah_tiapblok = 10 adalah jumlah dari angka 1 sampai 4.
jumlah_tiapbaris = 10 adalah jumlah dari angka 1 sampai 4.
jumlah_tiapkolom = 10 adalah jumlah dari angka 1 sampai 4.
Rule adalah aturan dari menu training sudoku.
Maka dari logika program diatas dapat dibuat sebuah algoritma seperti berikut :
1. masukkan angka 1 <= 4 pada tiap kotak.
2. jika jumlah_tiapblok = 10 dan jumlah_tiapbaris = 10 dan jumlah_tiapkolom = 10, ke no 4, selain itu ke no 3.
3. Rule = False, kembali ke no 1.
4. Rule = True, ke no 5.
5. Keluar.
3.4 Flow Chart
3.4.1 Flow Chart Permainan Sudoku 9x9

Gambar 3.7 Flow Chart Permainan Sudoku 9x9
3.4.1 Flow Chart Permainan Sudoku 4x4
Gambar 3.7 Flow Chart Permainan Sudoku 4x4
BAB IV
IMPLEMENTASI PROGRAM
4.1 SPESIFIKASI PROGRAM Pada program Aplikasi Sudoku di Linux Berbasis Open Source ini, terdiri dari sembilan form, yang pertama adalah form utama untuk tampilan aplikasi ketika pertama kali dibuka dengan bentuk form loading, yang kedua adalah form yang menyediakan menu pilihan untuk melanjutkan aplikasi ini, setelah form yang kedua terbuka yaitu FrmMain, maka user dipersilahkan untuk memilih menu yang ada pada foem tersebut, kemudian Form dari inti aplikasi ini adalah FrmLevel1, FrmLevl2, FrmLevel3, FrmLevel4, FrmLevel5, sedangkan dua form yang lain adalah FrmTraining dan FormRekor.
4.2 OPERASIONAL PROGRAM Untuk menjalankan program ini dapat menggunakan software Gambas versi 1.0.17 dan Gambas2 versi 1.9.49, dengan sistem operasi Linux OpenSuse 10.2.
4.2.1 FrmHal1 Tampilan pada saat pertama kali program dijalankan adalah FrmHal1 dengan bentuk form seperti berikut :

Gambar 4.1 Tampilan pada saat pertama kali program dijalankan
Pada saat form ini muncul animasi dengan 5 titik(TglBtn) berwarna merah muncul satu-persatu dari arah kiri ke kanan, disertai dengan label LoAdiNg, untuk menciptakan animasi tersebut penulis menggunakan komponen Timer dan TextBox, script program yang digunakan adalah sebagai berikut :
PUBLIC SUB Timer1_Timer() 'Pada Timer1 dengan event Timer
DIM n AS Integer
n = TB1.Text
TB1.Text = n + 1
END
Pada script program tersebut dapat diartikan bahwa nila n akan terus bertambah 1, nilai n itu sendiri adalah TB1(TextBox).
PUBLIC SUB TB1_Change()'Pada TB1(TextBox) dengan event Change
DIM a AS Integer
a = TB1.Text
IF a = "1" THEN
TglBtn1.Visible = TRUE
ELSE IF a = "2" THEN
TglBtn2.Visible = TRUE
ELSE IF a = "3" THEN
TglBtn3.Visible = TRUE
ELSE IF a = "4" THEN
TglBtn4.Visible = TRUE
ELSE IF a = "5" THEN
TglBtn5.Visible = TRUE
ELSE IF a = "6" THEN
FrmMain.Show
Timer1.Enabled = FALSE
FrmHal1.Visible = FALSE
END IF
END
Pada script program pada TextBox ini berhubungan dengan script yang ada pada Timer, dengan text awal adalah 0, dengan nilai a adalah text pada TB1, jika a = 1 maka TglBtn1(titik berwarna merah) akan muncul, dan jika a = 2 maka TglBtn2 akan muncul, dan jika a = 3 maka TglBtn3 akan muncul, dan jika a = 4 maka TglBtn4 akan muncul, dan jika a = 5 maka TglBtn5 akan muncul, dan jika a = 6 maka FrmMain akan muncul Timer1 berhenti FrmHal1 tidak kelihatan.
4.2.2 FrmMain Selanjutnya adalah form yang muncul setelah FrmMain adalah FrmMain, dengan bentuk form sebagai berikut :

Gambar 4.2 Tampilan pada FrmMain
Pada from tersebut terdapat menu pilihan, yang pertama adalah menu Challenge, jika diklik maka akan muncul menu baru yaitu menu Level 1, Level 2, Level 3, Level 4, dan Level 5 dengan benuk animasi dengan muncul satu persatu
seperti berikut :

Gambar 4.3 Tampilan pada FrmMain setelah menu Challenge diklik
komponen yang digunakan sama dengan pada FrmHal1 yaitu Timer dan TextBox, dengan logika program yang sama. selanjutnya jika salah satu dari menu Level tersebut diklik maka akan muncul animasi loading seperti berikut :

Gambar 4.4 Tampilan pada FrmMain setelah salah satu menu level diklik
untuk menampilkan animasi tersebut Komponen yang digunakan masih sama yaitu Timer dan TextBox, dengan logika program yang sama. selanjutnya pada menu Training jika diklik maka akan menampilkan animasi yang sama pada saat salah satu menu level diklik, kemudian setelah animasi tersebut akan langsung muncul FrmTraining. untuk menu Record juga akan menampilkan animasi yang sama dan kemudian langsung muncul FormRekor, sedangkan untuk menu About Me akan menampilkan profil dari penulis.
4.2.3 FrmLevel1 FrmLevel1 akan muncul setelah menu Level 1 pada FrmMain diklik, dengan bentuk form seperti berikut :

Gambar 4.5 Tampilan awal FrmLevel1
pada form tersebut Time akan berkurang 1 tiap detiknya, untuk level 1 ini user diberikan waktu 540 detik untuk menyelesaikan permainan ini, dengan angka yang pertama kali muncul adalah 5 buah angka secara acak tiap bloknya, adapun script program untuk menampilkan angka tersebut secara acakadalah seperti berikut :
PUBLIC SUB Form_Open()
DIM Acak AS Integer
RANDOMIZE 'fungsi untuk mengacak
Acak = Int(Rnd(0, 4))
TxtBx2.Text = Acak
T1.SetFocus
konek
END
Script program tersebut dapat diartikan bahwa ketika form terbuka maka akan mengacak nilai dari 0 sampai 4, ketentuan nilai dari tiap angka ada pada komponen TxtBx2 dengan 5 ketentuan pilihan untuk nilai acak.
Angka 1 sampai 9 pada sembilan kotak sebelah kanan di menu Level 1 adalah angka untuk menisi tiap kotak kosong pada kotak permainan sudoku sebelah kiri, dengan menekan salah kotak permainan sudoku tersebut maka kotak yang ditekan akan berwarna merah kemudian siap diisikan angka dari 1 sampai 9 dengan menekan salah satu dari sembilan kotak yang ada pada sebelah kanan.
Menu GO >>> adalah untuk menentukan apakah hasil dari permainan, apakah permainan berhasil atau tidak, rule yang digunakan dalam script program adalah sebagai berikut :
...........................................
IF n1 + n2 + n3 + n4 + n5 + n6 + n7 + n8 + n9 = 45 AND n10 + n11 + n12 + n13 + n14 + n15 + n16 + n17 + n18 = 45 AND n19 + n20 + n21 + n22 + n23 + n24 + n25 + n26 + n27 = 45 AND n28 + n29 + n30 + n31 + n32 + n33 + n34 + n35 + n36 = 45 AND n37 + n38 + n39 + n40 + n41 + n42 + n43 + n44 + n45 = 45 AND n46 + n47 + n48 + n49 + n50 + n51 + n52 + n53 + n54 = 45 AND n55 + n56 + n57 + n58 + n59 + n60 + n61 + n62 + n63 = 45 AND n64 + n65 + n66 + n67 + n68 + n69 + n70 + n71 + n72 = 45 AND n73 + n74 + n75 + n76 + n77 + n78 + n79 + n80 + n81 = 45 AND n1 + n2 + n3 + n10 + n11 + n12 + n19 + n20 + n21 = 45 AND n4 + n5 + n6 + n13 + n14 + n15 + n22 + n23 + n24 = 45 AND n7 + n8 + n9 + n16 + n17 + n18 + n25 + n26 + n27 = 45 AND n28 + n29 + n30 + n37 + n38 + n39 + n46 + n47 + n48 = 45 AND n31 + n32 + n33 + n40 + n41 + n42 + n49 + n50 + n51 = 45 AND n34 + n35 + n36 + n43 + n44 + n45 + n52 + n53 + n54 = 45 AND n55 + n56 + n57 + n64 + n65 + n66 + n73 + n74 + n75 = 45 AND n76 + n77 + n78 + n67 + n68 + n69 + n58 + n59 + n60 = 45 AND n61 + n62 + n63 + n70 + n71 + n72 + n79 + n80 + n81 = 45 AND n1 + n6 + n7 + n48 + n49 + n54 + n55 + n60 + n61 = 45 AND n2 + n5 + n8 + n47 + n50 + n53 + n56 + n59 + n62 = 45 AND n3 + n4 + n9 + n46 + n51 + n52 + n57 + n58 + n63 = 45 AND n10 + n15 + n16 + n39 + n40 + n45 + n64 + n69 + n70 = 45 AND n11 + n14 + n17 + n38 + n41 + n44 + n65 + n68 + n71 = 45 AND n12 + n13 + n18 + n37 + n42 + n43 + n66 + n67 + n72 = 45 AND n19 + n24 + n25 + n30 + n31 + n36 + n73 + n78 + n79 = 45 AND n20 + n23 + n26 + n29 + n32 + n35 + n74 + n77 + n80 = 45 AND n21 + n22 + n27 + n28 + n33 + n34 + n75 + n76 + n81 = 45 THEN
Lb.Caption = "CONGRATULATION...!"
......................................
ELSE
Lb.Caption = "YOU FAIL...!"
......................................
END IF
......................................
Keterangan :
nilai n1 sampai n81 adalah nilai pada tiap kotak permainan sudoku.
Jika rule tidak terpenuhi maka permainan gagal dan tampilan form menjadi seperti berikut :

Gambar 4.6 Tampilan FrmLevel1 jika permainan gagal
Pada saat itu maka waktu akan berhenti dan kemudian akan muncul menu baru untuk kembali ke permainan, sedangkan jika permainan berhasil maka tampilan form menjadi seperti berikut :

Gambar 4.7 Tampilan FrmLevel1 jika permainan berhasil
Jika rule dari permainan benar maka waktu akan berhenti dan kemudian akan muncul TextBox yang kosong untuk diisikan oleh user dan TextBox yang mencatat waktu yang telah dicapai oleh user dalam menyelesaikan permainan, disertai menu baru yang muncul yaitu Save dan Back To Main Menu jika ditekanta akan kembali ke FrmMain, sedangkan untuk menu Save akan menyimpan data yang ada pada kedua TextBox tersebut ke dalam sebuah database, adapun script program untuk menyimpan ke dalam database adalah sebagai berikut :
PRIVATE koneksi AS Connection 'deklarasi fungsi koneksi
PRIVATE data AS Result 'deklarasi fungsi data
PUBLIC SUB konek()
koneksi = NEW Connection
TRY koneksi.Close
WITH koneksi
.Type = "sqlite3"
.Name = "Rekor/Sudoku1.Abhe"
END WITH
END
script diatas adalah sebuah fungsi baru di dalam program untuk melakukan koneksi database dengan tipe sqlite3 dan nama database adalah Sudoku1.Abhe yang berada pada direktori Rekor. kemudian untuk penyimpanan data digunakan script program berikut :
PUBLIC SUB LbSave_MouseUp()
LbSave.Font.Size = 32
IF TxtName.Text = "" THEN
Message.Error("Cannot save blank word")
TxtName.SetFocus
ELSE
TRY koneksi.Close
koneksi.Begin
data = koneksi.Create("Abhe")
data!Name = TxtName.text
data!Poin = TxtTime.Text
data.Update
koneksi.Commit
FrmLevel1.Close
FrmMain.Show
TxtName.Clear
TxtTime.Clear
CATCH
Message.Error(Error.Text)'untuk mengetahui letak error
ENDIF
END
Script program diatas dapat diartikan bahwa jika TxtName dalam keadaan kosong maka akan munculpesan pesan error bahwa tidak bisa menyimpan data kosong, dan jika tidak maka koneksi berhasil dan tabel ”Abhe” tercipta pada database, text pada TxtName akan mengisi data pada field Name dan TxtTime akan mengisi field Poin.
Kemudian untuk FrmLevel2, FrmLevel3, FrmLevel4, FrmLevel5 Form yang digunakan sama bentuknya dengan FrmLevel1, hanya bedanya adalah pada saat angka yang pertama kali muncul dan penyimpanan data pada database, untuk FrmLevel2 angka yang pertama kali muncul adalah 4 buah pada tiap bloknya dengan ketentuan yang berbeda, sedangkan untuk penyimpanan database, data disimpan pada database sudoku2.Abhe, dengan nama tabel dan field yang sama pada database sudoku1.Abhe. Untuk FrmLevel3 angka yang pertama kali muncul adalah 3 buah pada tiap bloknya dengan ketentuan yang berbeda, sedangkan untuk penyimpanan database, data disimpan pada database sudoku3.Abhe, dengan nama tabel dan field yang masih sama pada database sudoku1.Abhe. Untuk FrmLevel4 angka yang pertama kali muncul adalah 2 buah pada tiap bloknya dengan ketentuan yang berbeda, sedangkan untuk penyimpanan database, data disimpan pada database sudoku4.Abhe, dengan nama tabel dan field yang masih sama pada database sudoku1.Abhe.Untuk FrmLevel5 angka yang pertama kali muncul adalah 1 buah pada tiap bloknya dengan ketentuan yang berbeda, sedangkan untuk penyimpanan database, data disimpan pada database sudoku5.Abhe, dengan nama tabel dan field yang masih sama pada database sudoku1.Abhe.
4.2.4 FrmTraining FrmMain akan muncul setelah menu Training pada FrmMain diklik, dengan bentuk form seperti berikut :

Gambar 4.8 Tampilan FrmTraining
Pada FrmTraining ini terdapat sudoku 4x4 dengan 4 buah kotak pada tiap bloknya, dengan angka pilihan 1 sampai 4 pada kotak sebelah kanan, waktu yang tersedia tidak terbatas, karena hanya sekedar latihan maka tidak digunakan database seperti pada FrmLevel1. Menu GO >>> pada form ini sama fungsinya dengan form sebelumnya, yaitu untuk menentukan kebenaran dari permainan ini, dengan rule pada script program sebagai berikut :
.................................................
IF n1 + n2 + n3 + n4 = 10 AND n5 + n6 + n7 + n8 = 10 AND n9 + n10 + n11 + n12 = 10 AND n13 + n14 + n15 + n16 = 10 AND n1 + n2 + n5 + n6 = 10 AND n3 + n4 + n7 + n8 = 10 AND n9 + n10 + n13 + n14 = 10 AND n11 + n12 + n15 + n16 = 10 AND n1 + n4 + n9 + n12 = 10 AND n2 + n3 + n10 + n11 = 10 AND n5 + n8 + n13 + n16 = 10 AND n6 + n7 + n14 + n15 = 10 THEN
Lb.Caption = "CONGRATULATION...!"
.................................................
ELSE
Lb.Caption = "YOU FAIL...!"
.................................................
END IF
.................................................
Jika rule tidak terpenuhi maka permainan gagal dan tampilan form menjadi seperti berikut :

Gambar 4.9 Tampilan FrmTraining jika rule tidak terpenuhi
Pada saat itu maka waktu akan berhenti dan kemudian akan muncul menu baru untuk kembali ke permainan atau kembali ke FrmMain, sedangkan jika permainan berhasil maka tampilan form menjadi seperti berikut :

Gambar 4.10 Tampilan FrmTraining jika rule terpenuhi
Jika rule dari permainan benar maka waktu akan berhenti, muncul pemberitahuan waktu yang telah ditempuh oleh user dan menu untuk kembali ke FrmMain.
Sedangkan untuk memperjelas aturan permainan maka user dapat mengklik menu Rule yang ada pada FrmTraining, maka tampilan FrmTraining menjadi seperti berikut :

Gambar 4.11 Tampilan FrmTraining jika menu rule diklik
4.2.5 FrmRekor FrmRekor digunakan untuk melihat data dari hasil permainan yang telah tersimpan pada database, dengan tampilan from seperti berikut :

Gambar 4.12 Tampilan Form Record
Pada form ini ada 5 buah menu untuk mengetahui data yang ada pada tiap level, misal pada rekor pada level 1, maka klik menu Record of Level 1, adapun script program untuk menampilkan database adalah seperti berikut :
PUBLIC SUB konek()
koneksi = NEW Connection
TRY koneksi.Close
WITH koneksi
.Type = "sqlite3"
.Name = "Rekor/Sudoku1.Abhe"
END WITH
END
script diatas adalah sebuah fungsi baru di dalam program untuk melakukan koneksi database dengan tipe sqlite3 dan nama database adalah Sudoku1.Abhe yang berada pada direktori Rekor. sedangkan fungsi untuk menampilkan data digunakan script program berikut :
SUB DataKu()
DIM n AS ResultField
data = koneksi.Exec("select * from abhe")
Tv1.Rows.Count = data.Count
Tv1.Columns.Count = 2
FOR EACH n IN data.Fields
Tv1.Columns[0].Text = "Name"
Tv1.Columns[1].Text = "Poin"
Tv1.Columns[0].Width = ((Tv1.Width / 2) - 10)
Tv1.Columns[1].Width = ((Tv1.Width / 2) - 10)
NEXT
CATCH
Message.Error(Error.Text)
END
Kemudian untuk menampilkan data dari tiap-tiap database script program yang digunakan adalah sebagai berikut :
PUBLIC SUB LblLevel1_MouseUp()
........................
konek
DataKu
END
Script program diatas dapat diartikan bahwa ketika LblLevel1(menu Record of Level 1) diklik maka akan memanggil fungsi konek dan fungsi Dataku untuk menampilkan data pada komponen TableView.
BAB V
PENUTUP
5.1 KESIMPULAN Permainan sudoku adalah suatu program aplikasi yang digunakan untuk menguji sampai dimana tingkat kecerdasan kita dalam menganalisa penataan angka-angka yang kita susun dengan aturan yang telah ditentukan, kecepatan analisa yang kita lakukan dihitung dengan waktu.
Dari pembahasan bab-bab sebelumnya maka dapat ditarik suatu kesimpulan sebagai berikut:
1. Dengan adanya aplikasi ini maka dapat memberikan alternatif lain aplikasi Sudoku di komputer, untuk aplikasi ini kususnya sistem operasi Linux..
2. Dengan adanya aplikasi ini, kita dapat membudayakan bermain game sambil mengasah kemampuan di sistem operasi Linux.
3. User dapat menyesuaikan menu pilihan Level yang ada, dan jika ternyata belum mahir user dapat melakukan latihan dengan menu Training.
4. User juga dapat mengetahui sampai dimana tingkat kemahirannya dengan membandingkannya pada data yang disimpan pada database.
5.2 SARAN-SARANMenyadari keterbatasan waktu dan kemampuan, beberapa informasi belum dapat disajikan secara maksimal. Oleh karena itu, disarankan agar informasi-informasi yang belum tersaji, dapat dikembangkan lagi sehingga dapat tercapai suatu kesempurnaan sesuai dengan yang diinginkan.
Program Aplikasi Sudoku di Linux Berbasis Open Source ini masih memiliki kelemahan dan kekurangan yang perlu diperbaiki yaitu tidak adanya efek suara, tingkat level yang ada hanya lima, hanya berjalan dengan baik jika resolusi pada monitor adalah 1200x800, belum dilengkapi dengan deteksi kesalahan permainan yang akan memudahkan user untuk menemukan kesalahan pada penempatan angka di setiap kotak sehingga user dapat mengetahui dimana letak kesalahannya.
DAFTAR PUSTAKA
Mahdi Ridho, 2006, Pemrograman Gambas Pemrograman ala Visual Basic di Linux, Andi Yogyakarta.
Yahya Kurniawan, S.T., 2000, VBScript Singkat Tepat Jelas, Elex Media Komputindo Jakarta.
Yunianto, 2005, Menguasai Gambas Pemrograman ”Visual Basic” di Linux, Dian Rakyat Jakarta.
Pardosi Mico, 2005, Bahasa Pemrograman Windows dan Internet Microsoft Visual Basic 6.0, Selaras Surabaya.
Tutorial Singkat Gambas, 2007,http://id.wikipedia.org/wiki/Linux, 12/09/2007 10:11.
Linux, 2007, http://www.rri-online.com/modules.php, 12/09/2007 9:21.
Sudoku, 2006, http://priatna.or.id/2006/01/05/sudoku/, 12/09/2007 9:19.
Apa Open Source itu?, 2005, http://ahmadha.blogspot.com/2007/07/gambas-diciptakan-oleh-benoit-minisini.html, 12/09/2007 9:20.