Jumat, Mei 23, 2008

Perintah Dasar di Linux

any_command --help more
Menampilkan keterangan bantu tentang pemakaian perintah. "--help" sama dengan perintah pada DOS "/h". Perintah "more" diperlukan agar screen stop setiap 1 layar.
ls
Melihat isi file dari direktori aktif. Pada linux perintah "dir" hanya berupa alias dari perintah "ls". Untuk perintah "ls" sendiri sering dibuatkan liaas "ls --color", agar pada waktu di "ls" ditampilkan warna-warna sesuai dengan file-filenya, biasanya hijau untuk execute, dsb.
ls -al more
Melihat seluruh isi file pada direktori aktif beserta file hidden, lalu ditampilkan layar per layar.
cd directory
Change directory. Menggunakan "cd" tanpa nama direktori akan menghantarkan anda ke home direktori. Dan "cd -" akan menghantarkan anda ke direktori sebelumnya.
cp source destination
Mengopi suatu file
mcopy source destination
Mengcopy suatu file dari/ke dos filesystem (tanpa memerlukan mounting). Contoh mcopy a:\autoexec.bat ~/junk . Gunakan "man mtools" untuk command yang sejenis : mdir, mcd, mren, mmove, mdel, mmd, mrd, mformat ....
mv source destination
Memindahkan atau mengganti nama file
ln -s source destination
Membuat Simbolic Links, contoh "ln -sf /usr/X11R6/bin/XF86_SVGA /etc/X11/X, membuat Simbolic link dari file XF86_SVGA ke X
rm files
Menghapus file
mkdir directory
Membuat direktori baru
rmdir directory
Menghapus direktori yang telah kosong
rm -r files
(recursive remove) Menghapus file, direktori dan subdirektorinya. Hati-hati menggunakan perintah ini apabila anda login sebagai root, karena root dengan mudah dapat menghapus seluruh file pada sistem dengan perintah di atas, tidak ada perintah untuk undelete di Linux (belum). Tetapi jika anda penasaran, coba saja perintah berikut dan jalankan sebagai root : rm -rf /*
cat filename more
Untuk melihat isi suatu file, dengan tambahan perintah more, maka isi file tersebut ditampilkan layar per layar.
less filename
Melihat suatu file layar per layar, dan tekan tombol "q" apabila ingin keluar, "less" hampir sama dengan perintah "cat filename more".
pico filename
Edit suatu text file.
pico -w filename
Edit suatu text file, dengan menonaktifkan fungsi word wrap, sangat berguna untuk mengedit file seperti /etc/fstab.
lynx file.html
Melihat file html atau browse ke net dengan text mode, dimana gambar/image tidak dapat ditampilkan, tapi lynx adalah suatu browser yang sangat cepat, sangat berguna bila anda hanya menginginkan suatu artikel tanpa image.
tar -zxvf filename.tar.gz
Meng-untar sebuah file tar sekaligus meng-uncompress file tersebut (*.tar.gz or *.tgz), untuk meletakkannya direktori yg diinginkan tambahkan option -C direktori, contoh tar -zxvf filename.tar.gz -C /opt (meletakkan file tersebut di direktori /opt
tar -xvf filename.tar
Menguntar sebuah file tar yang tidak terkompress (*.tar).
gunzip filename.gz
Meng-uncompress sebuah file zip (*.gz" or *.z). dengan menggunakan gzip (juga zip atau compress) jika anda menginginkan mengompress file.
bunzip2 filename.bz2
Meng-uncompress file dengan format (*.bz2) dengan utiliti "bzip2", digunakan pada file yang besar.
unzip filename.zip
Meng-uncompress file dengan format (*.zip) dengan utiliti "unzip" yang kompatibel dengan pkzip for DOS.
find / -name "filename"
Mencari "namafile" pada komputer anda dimulai dengan direktori / . Namafile tersebut mungkin saja berisi wildcard (*,?).
locate filename
Mencari file dengan string "filename". Sangat mudah dan cepat dari perintah di atas.
pine
Email reader yang sangat mudah digunakan, dan menjadi favorit banyak pemakai mesin Unix. Atau anda bisa pakai email yang sangat customize, yaitu "mutt",
talk username1
Berbicara dengan keyboard dengan user lain yg sedang login pada mesin kita (atau gunakan "talk username1@machinename" untuk berbicara dengan komputer lain) . Untuk menerima undangan percakapan, ketikkan"talk username2". Jika seseorang mencoba untuk berbicara dengan anda dan itu dirasakan mengganggu, anda bisa menggunakan perintah "mesg n" untuk menolak pesan tersebut. Dan gunakan perintah "who" atau "rwho" untuk melihat siapa user yang mengganggu tersebut.
mc
Menjalankan "Morton Commander" ... eh... salah maksudnya "Midnight Commander" sebagai file manager, cepat dan bagus.
telnet server
Untuk menghubungkan komputer kita ke komputer lain dengan menggunakan protokol TELNET. Gunakan nama mesin atau Nomor IP mesin, dan anda akan mendapatkan prompt login name dari mesin tersebut, masukkan passwordnya, oh ya .. anda juga harus punya account di mesin remote tersebut. Telnet akan menghubungkan anda dengan komputer lain dan membiarkan anda untuk mengoperasikan mesin tersebut. Telnet sangat tidak aman, setiap yang anda ketik menjadi "open text", juga dengan password anda !
rlogin server
(=remote login) Menghubungkan anda ke komputer lain. Loginname dan password, tetapi apabila account anda tersebut telah dipakai, maka anda akan mendapatkan pesan kesalahan pada password anda.
rsh server
(=remote shell) Jalan lain untuk menghubungkan anda ke remote machine. Apabila login name/password anda sedang dipakai di remote mesin tsb, maka password anda tidak akan berlaku.
ftp server
Ftp ke mesin lain, ini sangat berguna untuk mengopy file ke/dari remote mesin.
minicom
Progam Minicom (dapat dikatakan seperti "Procomm for Linux").
./program_name
Menjalankan program pada direktori aktif, yang mana tidak terdapat pada PATH anda
xinit
Menjalankan X-window server (tanpa windows manager).
startx
Menajalan X-window server dan meload default windows manager. Sama seperti perintah "win" under DOS dengan Win3.1
startx -- :1
Menjalankan sesi X-windows berikutnya pada display 1 (default menggunakan display 0). Anda dapat menjalankan banyak GUI terminal secara bersamaan, untuk pindah antar GUI gunakan , , etc, tapi ini akan lebih banyak memakan memori.
xterm
(pada X terminal) ,menjalankan X-windows terminal. Untuk keluar ketikkan "exit"
xboing
(pada X terminal). Sangat lucu deh ...., seperti games-games lama .....
gimp
(pada X terminal) Program image editor yang sangat bagus, bisa disamakan dengan Adobe Photoshop, yangmembedakan adalah program ini gratis.
netscape
(pada X terminal) menjalankan netscape, versi pada waktu tulisan ini dibuat telah mencapai versi 4.7
netscape -display host:0.0
(pada X terminal) menjalankan netscape pada mesin yang aktif dan menampilkan outputnya pada mesin yang bernama "host" display 0 screen 0. Anda harus memberikan akses untuk mesin aktif untuk menampilkannya pada mesin "host" dengan perintah "xhost"
shutdown -h now
(sebagai root) Shut down sistem. Umumnya digunakan untuk remote shutdown. Gunakan untuk shutdown pada konsol (dapat dijalankan oleh user).
haltreboot
(sebagai root) Halt atau reboot mesin. Lebih simple dari perintah di atas.
man topic
Menampilkan daftar dari sistem manual pages (help) sesuai dengan topic. Coba "man man". lalu tekan "q" untuk keluar dari viewer. Perintah "info topic" Manual pages dapat dibaca dilhat dengan cara "any_command --help".
apropos topic
Menampilkan bantuan manual berdasarkan topik..

PERKEMBANGAN PROCESSOR AMD

AMD (Advanced Micro Devices)

Pentium-pentium AMD seperti chip-chip yang ditawarka oleh Intel bersaing dengan
ketat. AMD menggunakan teknologi-teknologi mereka sendiri. Oleh karena itu,
prosesornya bukan merupakan clone-clone. AMD mempunyai seri sebagai berikut : K5, dapat disamakan dengan Pentium-pentium Classic (dengan cache L1 16
KB dan tanpa MMX). K6, K6-2, dan K6-3 bersaing dengan Pentium MMX dan Pentium II. K7 Athlon, Agustus 1999, tidak kompatibel dengan Socket 7.

AMD K5

K5 merupakan tiruan Pentium. K5 lama sebagai contoh dijual sebagai PR133
(Perform Rating). Maksudnya, bahwa chip tersebut akan berunjuk kerja seperti
sebuah Pentium P133. Tetapi, hanya berjalan 100 MHz secara internal. Chip
tersebut masih harus dipasang pada motherboard seperti sebuah P133.

K5 AMD juga ada yang PR166. Chip ini dimaksudkan untuk bersaing dengan P166
Intel. Bekerja hanya pada 116.6 MHz (1.75 x 66 MHz) secara internal. Hal ini
dikarenakan cache yang dioptimasi dan perkembangan-perkembangan baru lainnya.
Hanya ada fitur yang tidak sesuai dengan P166 yaitu dalam kerja floating-point.
PR133 dan PR166 berharga jauh lebih murah dari jenis Pentium yang sebanding,
dan prosessor ini sangat terkenal pada mesin-mesin dengan harga yang murah.

K6 AMD

Diluncurkan 2 April 1997. Chip ini berunjuk kerja sedikit lebih baik dari
Pentium MMX. Oleh karena itu termasuk dalam keluarga P6.
Dilengkapi dengan 32+32 KB cache L1 dan MMX.
Berisi 8.8 juta transistor.
K6 seperti halnya K5 kompatibel dengan Pentium. Maka, dapat diletakkan di
Socket 7, pada motherboard Pentium umumnya, dan ini segera membuat K6
menjadi sangat terkenal. AMD K6-2
Versi “model 8” berikutnya K6 mempunyai nama sandi “Chomper”. Prosessor ini
pada 28 Mei 1998 dipasarkan sebagai K6-2, dan seperti versi model 7 K6 yang asli,

dibuat dengan teknologi 0.25 mikron. Chip-chip ini bekerja hanya dengan 2.2
voltage. Chip ini berhasil menjadi saingan Pentium II Intel.
K6-2 dibuat untuk bus front side (bus sistem) pada kecepatan 100 MHz dan
motherboard Super 7. AMD membuat perusahaan lain seperti Via dan Alladin,
membuat chip set baru untuk motherboard Socket 7 tradisional, setelah Intel tahu
1997 menghentikan platform tersebut.
K6-2 juga diperbaiki dengan unjuk kerja MMX yang dua kali lebih baik
dibandingkan dengan K6 yang awal.
K6-2 mempunyai plug-in 3D baru (disebut 3DNow!) untuk unjuk kerja game yang
lebih baik. Terdiri dari 21 perintah baru yang dapat digunakan oleh pengembang
perangkat lunak untuk memberikan unjuk kerja 3D yang lebih baik.
Dukungan termasuk dalam DirectX 6.0 untuk Windows. DirectX merupakan
multimedia API, untuk Windows. DirectX merupakan beberapa program yang
dapat meningkatkan unjuk kerja multimedia di dalam semua program Windows.
Multimedia 3DNow! tidak kompatibel dengan MMX, tetapi K6-2 mempunyai
MMX sebaik 3DNow!. Cyrix dan IDT juga meluncurkan CPU dengan 3DNow!.
K6-2 memberi unjuk kerja sangat, sangat bagus. Anda dapat membandingkan
prosessor ini dengan Pentium II. K6-2 350 MHz berunjuk kerja sangat mirip
dengan Pentium II-350, tetapi dijual dengan lebih murah. Dan dapat menghemat
lebih banyak sebab motherboard yang lebih murah.

K6-2 Dengan Bus dan Clock-nya
K6-2
Bus
Clock
266 MHz
66 MHz
4.0 x 66 MHz
266 MHz
88 MHz
3.0 x 88 MHz
300 MHz
100 MHz
3.0 x 100 MHz
300 MHz
95 MHz
3.5 x 95 MHz
300 MHz
100 MHz
3.5 x 100 MHz
300 MHz
95 MHz
4.0 x 95 MHz
400 MHz
100 MHz
4.0 x 100 MHz

AMD K6-3

AMD K6-3 merupakan model 9 dengan nama sandi “Sharptooth”, yang mungkin
memiliki cache tiga tingkat :
Sedikit perbaikan dibandingkan unit K6-2
Cache L2 sebesar 258 KB satu chip
Rancangan cache tiga tingkat
Bus front side 133 MHz baru.
Kecepatan clock 400 MHz dengan 450 MHz.

Kedua cache 64 KB L1 dan 256 KB L2 disatukan dengan chipnya. Cache pada die
L2 ini bekerja pada kecepatan prosesor penuh seperti yang dilakukan pada Pentium
Pro, dan seperti yang dilakukan pada Celeron A dan pada prosessor Xeon dari Intel.
Hal ini secara pasti akan banyak meningkatkan kecepatan K6 !
Karena K6-3 digunakan pada motherboard Super 7 dan ruang untuk cache tingkat
berikutnya cache L3. Perancangan cache tiga tingkat dibuat untuk menggunakan
motherboard yang sudah ada hingga 2 MB cache yang on-board. Ini seharusnya
merupakan cache L2 (pada motherboard) yang digunakan sebagai cache tingkat
tiga. Hal ini terjadi secara otomatis, dan semakin besar cache namapak akan
banyak meningkatkan unjuk kerjanya !

Membuat Game Dengan Pascal Yuk!

PendahuluanKetika anda bermain sebuah game, pernah ga sich terlintas sebuah pertanyaan dalam benak anda ‘bagaimana caranya membuat game ini?’ atau setidaknya ‘apa sih game itu?’. Mungkin sebagian dari pembaca pernah merasa penasaran seperti itu dan sebagian cuek saja dengan masalah tersebut. Untuk itulah saya ingin menunjukan bagaimana sebuah game sederhana itu dibuat.Yak, mengapa disebut sederhana karena kita akan menggunakan pascal dan menggantungkan interface pada unit crt. Dan seperti tetris yang biasa ada pada gamebot bentuknya masih dipertahankan seperti itu. Compiler akan lebih baik bila menggunakan free pascal, bila anda belum memilikinya dapat anda download di freepascal.org.Sebenarnya tulisan ini merupakan remake dari karya tulis saya, tapi tak apa lah bila dipublikasikan sedikit.Isi1 Struktur DataTetris merupakan permainan yang menggunakan matriks sebagai struktur data utamanya. Penggunaan matriks lebih ke interpretasi area yang digunakan dalam permainan. Adapun matriks yang digunakan akan memiliki ordo yang cukup besar karena pada dasarnya tetris membutuhkan ruang yang besar agar dapat bekerja. Selain itu ditambah digunakan beberapa tipe data bentukan seperti record / structure yang akan memudahkan penulisan kode. Komunitas eLearning IlmuKomputer.Com1Copyright © 2003-2008 IlmuKomputer.Com
2 Uraian Pembuatan Tetris Penjelasan pembuatan tetris yang diberikan tidak akan urut dari atas kebawah menelusuri kode sumber, namun mengikuti langkah – langkah yang harus dilakukan dalam pembuatan. Untuk kode sumber yang lengkap dapat anda lihat di bagian akhir dari bab ini.Dalam pembuatan permainan komputer yang paling penting adalah interaksi antara pemain dengan permainan. Tanpa adanya interaksi antara pemain dan permainan, saya rasa permainan tidak akan berguna karena tidak dapat menghibur.Interaksi yang dapat dilakukan dapat dibantu dengan menggunakan beberapa perangkat masukan maupun keluaran. Perangkat masukan berguna untuk mengirimkan intruksi dari pemain ke permainan yang akan berpengaruh pada kondisi permainan selanjutnya. Sedangkan perangkat keluaran berfungsi untuk menampilkan kondisi permainan yang nantinya akan mempengaruhi pemainan dalam menentukan langkah atau intruksi yang akan diberikan selanjutnya.Dalam pembuatan tetris ini, ternyata bahasa pascal menyediakan sebuah unit yang memiliki interface dasar untuk perangkat keluaran maupun perangkat masukan. Unit ini bernama CRT yang akan memegang kendali atas masukan pemainan dan keluaran permainan dasar. Perangkat keluaran yang digunakan adalah monitor dengan mode teks atau yang lebih dikenal dengan sebutan ‘under dos’. Sedangkan perangkat masukan yang digunakan adalah papan ketik. Untuk itu kita perlu mendeklarasikan pemakaian unit ini di awal program. Uses crt; Setelah pendeklarasian unit tersebut kita perlu mempersiapkan area monitor yang akan digunakan. Perlu diketahui bahwa monitor dalam komputer menganut system kartesius dengan arah sumbu y yang terbalik dari sistem kartesius pada umumnya. Sumbu y ke arah atas pada sistem kartesius pada umumnya bernilai positif, berlainan pada monitor yang justru bernilai positif pada sumbu y yang mengarah kebawah. Teks mode standar memiliki jangkauan x antara 1 hingga 80 dan jangkauan untuk sumbu y antara 1 hingga 25. Sebenarnya seluruh area yang monitor setelah deklarasi unit crt sudah dapat digunakan. Namun, kita memerlukan sebuah matriks yang berfungsi sebagai penyimpan keadaan. Misalkan pada beberapa saat yang lalu kita telah mengisi titik A(2,5), beberapa saat kemudian kita akan mengisi titik A tersebut, namun karena titik A tersebut telah terisi maka kita hanya dapat mengisi titik yang tepat berada di atas titik A. penyimpan keadaan ini akan sangat berguna dalam tetris untuk mencegah terjadinya tumpang tindih antar blok. Var field : array [1..80,1..25] of boolean; Pendeklarasian matriks pada umumnya dimensi y terlebih dulu, namun untuk mempermudah pembelajaran kode sumber ini maka pendeklarasian mengikuti aturan pada syntax gotoxy(x,y).Pendeklarasian matriks mewakili semua area pada monitor, mulai dari kiri atas sampai kanan bawah. Penggunaan seluruh area monitor ini akan mempermudah kita dalam proses penggambaran keluaran, karena kita tidak hanya membuat sebuah area untuk seorang pemain, namun dua area untuk dua pemain dalam satu monitor. Dengan penggunaan matriks kondisi untuk seluruh monitor semua penggambaran tetris yang dilakukan hanya membutuhkan sebuah Komunitas eLearning IlmuKomputer.Com2Copyright © 2003-2008 IlmuKomputer.Com
prosedur saja.Selain monitor masukan pun menggunakan sebuah papan ketik yang digunakan secara bersama. Sedangkan tipe data yang digunakan adalah Boolean yang akan mewakili titik di monitor tersebut telah terisi atau belum.Setelah itu kita harus melakukan penggambaran batas area tiap pemain dan inisialisasi nilai matriks pada koordinat tertentu. Inisialisasi dilakukan untuk memudahkan batasan area para pemain sehingga pengaturan gerak blok – blok akan menjadi lebih mudah. Maksud dari gerak blok akan lebih mudah adalah pada saat kita melalukan penggeseran ataupun penurunan, batasan-batasan area sudah jelas ditetapkan melalui prosedur di bawah ini. procedure init_field;var i : longint;beginclrscr; fillchar(field,sizeof(field),0);for i := 3 to 22 dobegingotoxy(20,i); write(#186); field[20,i] := true;gotoxy(36,i); write(#186); field[36,i] := true;gotoxy(60,i); write(#186); field[60,i] := true;gotoxy(76,i); write(#186); field[76,i] := true;end;for i := 1 to 15 dobegingotoxy(20+i,23); write(#205); field[19+i,23] := true;gotoxy(60+i,23); write(#205); field[59+i,23] := true;end;gotoxy(20,23); write(#200);gotoxy(60,23); write(#200);gotoxy(36,23); write(#188);gotoxy(76,23); write(#188); gotoxy(6,4); write('Next:');gotoxy(46,4); write('Next:'); end; Kode sumber tersebut akan diletakan pada sebuah prosedur agar mempermudah pemanggilan berulang. Syntax clrscr akan membersihkan monitor sehingga dari tulisan sehingga keadaan monitor akan menjadi hitam secara keseluruhan. Kemudian, syntax fillchar(...) akan menginisialisasi keseluruhan isi matrix dengan nilai yang ditentukan. Dalam hal ini kita menginisialisasi matriks field dengan nilai false. Matriks field ketika kita deklarasikan sebenarnya seluruh elemennya sudah bernilai false, namun karena tetris kita ini bukan merupakan permainan yang dapat dimainkan berulang kali, maka kita perlu menginisialisasi Komunitas eLearning IlmuKomputer.Com3Copyright © 2003-2008 IlmuKomputer.Com
kembali nilai dari matriks field, karena nilai matriks sudah berubah oleh permainan sebelumnya. Syntax gotoxy() akan membawa kursor ke posisi yang ditentukan sehingga apapun yang dihasilkan oleh write() akan muncul di monitor pada posisi yang diinginkan. Sedangkan inisialisasi dengan nilai true pada beberapa titik berarti titik tersebut telah terisi dan akan mencegah keluarnya blok dari daerah pemain.Setiap iterasi dalam kode sumber penyusun diusahakan menggunakan nama variabel i agar pembaca tidak dibingungkan oleh penamaan variabel. Selain itu tipe data yang digunakan adalah longint, karena ketika sebuah program berjalan di atas sebuah prosesor bertipe 32 bit, iterasi akan lebih cepat pula bila menggunakan variabel 32 bit. Setelah area permainan tercipta maka yang diperlukan adalah objek dari permainan itu sendiri yaitu tetris. Tetris, dari kata tetra yang berarti 4, merupakan gabungan dari 4 kotak kotak kecil dengan beberapa variasi bentuk. Dalam permainan nanti tetris akan menjadi satu – satunya objek yang bergerak. Tetris dapat bergeser maupun berputar sesuai dengan keinginan pemain.Membuat tetris tidaklah sulit karena hanya membutuhkan sebuah array 1 dimensi yang memiliki property x dan y. Untuk lebih mudahnya kita akan menggabungkan property x dan y menjadi satu objek yaitu titik, yang kemudian akan menjadi elemen dari array berindex 4. type _points = array [1..4] of record x, y : longint; end; Dengan kode diatas berarti kita telah menciptakan points. Points merupakan pendeklarasian properti dasar dari sebuah tetris. Sebuah tetris yang akan digunakan tidak hanya memiliki properti points saja namun juga dilengkapi dengan beberapa properti lain sehingga tetris tidak langsung dideklarasikan sebagai sebuah points, namun diperlukan pembungkusan pembungkusan properti – properti tersebut kedalam sebuah tipe baru. Properti yang lain akan dijelaskan kemudian.Kita perlu menambahkan kode ini di bagian type: type ... tetris = record points : _points; cshape,nshape,xmodel,xtetris,ymodel,ytetris: longint; end;var ... tetris1, tetris2, ttetris : tetris; Titik – titik di atas berarti sebagian kode telah dijelaskan sebelumnya atau akan dijelaskan kemudian. Kita masih perlu mendeklarasikan beberapa variabel bertipe tetris untuk kedua pemain Komunitas eLearning IlmuKomputer.Com4Copyright © 2003-2008 IlmuKomputer.Com
bernama tetris1, tetris2 dan ttetris sebagai variabel temporer yang selalu digunakan untuk operasi-operasi penggambaran. Selanjutnya kita perlu mendeklarasikan isi dari tetris tersebut. Kita bisa saja memberikan nilai pada tetris secara langsung, namun hal ini menjadi tidak efektif karena akan memakan banyak tempat dan waktu penulisan kode. Sebagai gantinya kita dapat membuat template nilai awal dari tetris. Lebih baik lagi karena template ini nantinya akan menampung sekaligus seluruh variasi bentuk tetris. Template berupa konstanta array dengan tipe data bentukan points. Const template : array [1..8] of _points = (((x:1; y:1),(x:1; y:2),(x:2; y:1),(x:2; y:2)),((x:2; y:1),(x:1; y:1),(x:3; y:1),(x:4; y:1)),((x:1; y:2),(x:1; y:1),(x:1; y:3),(x:2; y:3)),((x:2; y:2),(x:2; y:1),(x:2; y:3),(x:1; y:3)),((x:1; y:2),(x:1; y:1),(x:2; y:2),(x:2; y:3)),((x:1; y:2),(x:2; y:1),(x:2; y:2),(x:1; y:3)), ((x:1; y:2),(x:1; y:1),(x:1; y:3),(x:2; y:2)), ((x:1; y:2),(x:2; y:1),(x:2; y:2),(x:2; y:3))); Pendeklarasian template tetris memang cukup rumit. Hal ini dikarenakan oleh karena tetris merupakan array yang bertipe data bentukan. Pada umumnya pendeklarasian setiap element array dipisahkan oleh tanda kurung, ini berarti nilai yang berada dalam tanda kurung tersebut adalah nilai dari elemen array urut dari index 1 hingga 8 urut dari baris kedua hingga baris 9. Sedangkan pendeklarasian dari struktur seperti point membutuhkan nama properti diikuti ‘:’ dan nilai dari properti tersebut.Template tersebut berisikan 8 variasi bentuk dari gabungan 4 buah blok. Mulai dari linear, t shape, rectangle dsb.Pada saat program pertama dijalankan kita masih belum menginisialisasi nilai dari tiap – tiap tetris. Oleh karena itu kita perlu menambahkan kode untuk menginisialisasi tetris pada awal permainan. procedure init_tetris(var objek : tetris; id : longint);beginobjek.nshape := random(8) + 1;if id = 1 thenbegin objek.xmodel := 7; objek.xtetris := 26;end else begin objek.xmodel := 47; objek.xtetris := 66;end;objek.ymodel := 5; objek.ytetris := 2;dropnew(objek);end;Komunitas eLearning IlmuKomputer.Com5Copyright © 2003-2008 IlmuKomputer.Com
Maksud dari menginisialisai nilai dari tetris di atas adalah memberikan nomor bentuk dari tetris yang akan diolah pada prosedur dropnew(dijelaskan kemudian). Kode di atas berfungsi untuk menentukan bentuk awal tetris karena pada awal permainan nilai nshape masih bernilai 0, maka diperlukan pemberian nilai sehingga seolah – olah di tengah – tengah permainan nanti tetris tersebut merupakan tetris yang telah ditentukan pada tetris sebelumnya. Properti xmodel dan ymodel adalah angka yang akan digunakan sebagai penentu posisi penggambaran tetris yang akan yang akan muncuk ketika tetris sekarang mencapai bawah. Sedangkan properti xtetris dan ytetris digunakan sebagai penentu posisi penggambaran awal tetris yang sedang dimainkan.Pemilihan bentuk tetris sejak awal permainan selalu diacak. Pengacakan didasarkan pada syntax random(). Penggunaan syntax random() seperti kode di atas akan selalu memberikan nilai dengan jangkauan antara 1 hingga 8. Nilai yang demikian sesuai dengan jumlah bentuk yang dideklarasikan pada template. Penggunaan syntax randomize akan mempengaruhi hasil dari syntax random() sehingga hasilnya tidak menimbulkan pola yang sama pada setiap permainan.Untuk menentukan bentuk dari tetris kita bisa menginisialisasi isinya sesuai dengan yang diinginkan dengan syntax tetris1.points := template[ index bentuk yang diinginkan ] ;. Setelah diisialisasikan kita perlu melakukan penggambaran tetris pada layar monitor. Untuk itu dibutuhkan sebuah prosedur yang sekaligus berfungsi menggambar tetris dan menghapusnya. Procedure drawtetris(objek : tetris; mode : Boolean);Var I : longint;C : char;Begin If mode then c := #178 else c := ‘ ‘; For I := 1 to 4 do Begin Gotoxy(objek.tpoints[i].x, objek.tpoints[i].y); Write(c); Field[objek.tpoints[i].x,objek.tpoints[i].y]:=mode;End;Gotoxy(1,1);End; Prosedur ini penyusun rasa sangat efektif karena dapat melakukan penggambaran di segala daerah pada monitor karena pendeklarasian matriks yang lebih universal untuk monitor. Parameter mode pada prosedur diatas akan berpengaruh pada perilaku yang dilakukan oleh prosedur. Apabila mode bernilai true maka akan dilakukan penggambaran tetris dilayar. Sebaliknya, bila bernilai false maka yang dilakukan oleh prosedur tersebut adalah penghapusan pada layar monitor. Selain dilakukan penggambaran pada layar monitor, perlu dilakukan perubahan kondisi pada matriks field, yakni perubahan apakah pada titik itu di layar monitor terisi atau tidak. Sedangkan syntax gotoxy() terakhir pada prosedur tersebut akan membawa kursor ke pojok kiri atas monitor sehingga tidak menjadi gangguan pada area yang digunakan Komunitas eLearning IlmuKomputer.Com6Copyright © 2003-2008 IlmuKomputer.Com
untuk bermain.Tetris yang diberi nilai langsung dari template bila digambar di layar akan berada pada pojok kiri atas monitor. Untuk memposisikan tetris untuk pemain pertama dan kedua adalah dengan menambah komponen - komponen x dan y dari properti points dengan nilai tertentu. Contohnya kita perlu memposisikan tetris untuk pemain pertama di posisi A(28,3) maka kita perlu menambahkan nilai 27 pada tiap komponen x dan menambahkan nilai 2 pada tiap komponen y. Begitu halnya dengan tetris yang akan dimainkan selanjutnya, kita pun perlu menambahkan beberapa kode untuk memposisikannya. Kita dapat melakukannya dengan menambahkan kode berikut pada program: procedure dropnew(var objek : tetris);var i : longint;beginif objek.cshape <> 0 thenbeginfor i := 1 to 4 dobegin ttetris.points[i].x:=template[objek.nshape,i].x+objek.xmodel;ttetris.points[i].y:=template[objek.nshape,i].y+objek.ymodel;end;drawtetris(ttetris,false);end;objek.cshape := objek.nshape;objek.nshape := random(8) + 1;for i := 1 to 4 dobeginobjek.points[i].x:=template[objek.cshape,i].x+objek.xtetris;objek.points[i].y:=template[objek.cshape,i].y+objek.ytetris;ttetris.points[i].x:=template[objek.nshape,i].x+objek.xmodel;ttetris.points[i].y:=template[objek.nshape,i].y+objek.ymodel;if field[objek.points[i].x,objek.points[i].y] thenbegin gameover := true; break;end;end;drawtetris(objek,true);drawtetris(ttetris,true);end; Potongan kode di atas awalnya akan melakukan penggambaran tetris selanjutnya, namun untuk mencegah terjadinya bug pada awal permainan dibutuhkan penyeleksian kondisi karena pada saat awal permainan properti c.shape masih bernilai 0, sehingga tetris selanjutnya Komunitas eLearning IlmuKomputer.Com7Copyright © 2003-2008 IlmuKomputer.Com
tidak akan memiliki bentuk. Karena bernilai 0 pula, bila kita paksakan pemanggilan nilai template berindex 0 akan menyebabkan memory out of range. ingat kita deklarasikan template mulai dari index 1.Prosedur di atas bukan hanya berfungsi mengatur posisi dari tetris tetapi prosedur tersebut akan selalu dipanggil ketika sebuah tetris mencapai dasar dari area permainan. Prosedur ini juga menggambarkan tetris yang akan diturunkan pada bagian berikutnya pada layar tepat di samping kiri dari area permainan, sehingga mempermudah pemain dalam menentukan langkah yang akan diambilnya.Karena pascal merupakan bahasa yang cenderung prosedural walaupun mendukung pemrograman berbasis objek, maka kita perlu membuat sebuah algoritma yang selalu mengulang – ulang perintahnya selama runtime. Kode berulang tersebut biasanya berfungsi menangani input dari pengguna. Seperti kerja sebuah interpreter program akan menjalankan instruksi mulai dari atas program utama hingga akhir. Di mulai dengan kata begin dan diakhiri dengan kata end. Blok program utama ditandai dengan tanda titik di belakang kata end. Program utama terdiri dari dua loop. Loop utama berfungsi untuk mengulang permainan bila permainan mencapai game over. Kemudian, loop kedua tetris ini merupakan runtime algoritm yang akan selalu menurunkan kedua tetris dan memeriksa input yang diberikan pengguna melalui papan ketik. Blok program utama diusahakan selalu memiliki jumlah baris yang sedikit, dengan demikian waktu yang digunakan oleh satu loop akan kecil, kecuali anda memanggil prosedur yang bersifat iteratif dan rekursif. Akan lebih optimal lagi bila kita menyatukan berbagai syntax dalam loop yang seminim mungkin. beginrandomize;while not quit dobegin init_field; init_tetris(tetris1,1); init_tetris(tetris2,2); gameover := false; while not gameover do begin slide(tetris1); slide(tetris2); userinput; end; gotoxy(1,25); write('Play Again[Y/N]? '); repeat answer := upcase(readkey); until answer in ['Y','N',#27]; if (answer = 'N') or (answer = #27) then break;Komunitas eLearning IlmuKomputer.Com8Copyright © 2003-2008 IlmuKomputer.Com
end;end. Kita akan membahas dari atas program urut ke bawah, mulai dari bawah kata begin sampai sebelum end. Beberapa prosedur yang telah dibahas akan dilewat begitu saja.Bisa dikatakan prosedur slide merupakan prosedur mutlak dari program tetris karena tetris merupakan objek yang selalu turun ke bawah baru kemudian digantikan dengan yang baru apabila tetris tersebut telah bertumpu pada tetris lain di bawahnya atau tetris sudah sampai pada dasar dari area permainan. Slide dapat menurunkan tetris satu blok ke bawah setiap kali pemanggilannya. Slide bukanlah prosedur yang cukup sederhana. Slide merupakan penggabungan dari berbagai macam prosedur lain yang secara hierarki berada di bawahnya. Slide dasarnya hanya menurunkan tetris dari waktu ke waktu, baru setelah ada tumbukan dengan tetris di bawahnya ia memanggil prosedur lain dan begitu pula untuk aksi yang lain.Tepat di bawah loop kedua ada syntax yang berfungsi untuk konfirmasi pengulangan permainan. Penggunaan syntax readkey untuk memeriksa input pada permainan tetris ini akan lebih dominan daripada syntax read() maupun readln(). Dominasi disebabkan karena readkey sama sekali tidak mengeluarkan output pada pemanggilannya, berbeda dengan kedua prosedur lainnya yang akan menyebabkan output pada layar monitor. Contohnya adalah ketika kita menggeser tetris menggunakan papan ketik, kita hanya membutuhkan masukan dari pengguna tanpa harus menuliskan pada monitor masukan apa yang telah dimasukan oleh pengguna sebab masukan itu sendiri telah diwakili oleh respon matriks. procedure slide(var objek : tetris);var i : longint; dropped : boolean;begindrawtetris(objek,false);ttetris := objek;dropped := false;for i := 1 to 4 dobegininc(ttetris.points[i].y);if field[ttetris.points[i].x,ttetris.points[i].y] thenbegin dropped := true; break; end;end;if not dropped then objek := ttetris;drawtetris(objek,true);if dropped thenbegin dropnew(objek);Komunitas eLearning IlmuKomputer.Com9Copyright © 2003-2008 IlmuKomputer.Com
eliminate(objek,22);end;end; Dropnew adalah prosedur yang dipanggil ketika tetris telah mencapai dasar dari area permainan atau tetris sudah bertumbukan dengan tetris di bawahnya. Ditandai dengan penggunaan kata var sebelum nama variabel, dropnew memproses variabel objek bertipe tetris secara by reference. By reference berarti setiap kali dilakukan perubahan pada variabel objek akan berpengaruh pada variabel yang di-passing ke prosedur dropnew. By value merupakan metode lain yang digunakan pada passing parameter. Tanpa adanya reserved word var menandakan bahwa parameter akan di-passing secara by value. Perubahan variabel pada metode by value tidak akan mempengaruhi parameter yang di-passing.Slide membutuhkan variabel boolean bernama dropped yang berfungsi sebagai representasi keadaan tetris sudah tertumpu pada tetris lain atau sudah mencapai dasar. Kondisi tertumpu atau terjatuh mempengaruhi nilai variabel dropped bernilai true, sebaliknya bila masih berada dalam keadaan bebas di area permainan akan bernilai false. Variabel ini akan menentukan akan dipanggil atau tidak prosedur bernama dropnew. Karena prosedur ini memproses variabel parameter secara by reference, kita perlu melakukan proses pada sebuah variabel temporer, dalam hal ini adalah ttetris. Penggunaan variabel temporer mencegah hal – hal yang tidak diinginkan, seperti pada saat tetris diturunkan padahal saat itu sudah mencapai dasar, keadaan ini apabila proses diteruskan sehingga menyebabkan perubahan pada tetris tentu tetris akan terlihat saling tumpang tindih.Kembali ke bagian program utama. Kita sekarang mengamati syntax userinput. Userinput merupakan suatu prosedur yang berguna untuk menerima dan mengolah masukan yang diberikan oleh pemain melalui papan ketik. Prosedur ini hanya akan merespon masukan – masukan yang telah didefinisikan pada saat pembuatan karena pada saat penyeleksian kondisi tidak ada proses yang dilakukan untuk keadaan default atau dengan kata lain tidak ada definisi untuk keyword else pada bagian akhir seleksi oleh case of. procedure userinput;var i : longint; c : char;beginfor i := 1 to 20 dobeginif keypressed then begin c := upcase(readkey); case c of 'W' : if tetris1.cshape <> 1 then rotate(tetris1); #72 : if tetris2.cshape <> 1 then rotate(tetris2); 'A' : shift(tetris1,-1,0); #75 : shift(tetris2,-1,0);Komunitas eLearning IlmuKomputer.Com10Copyright © 2003-2008 IlmuKomputer.Com
'S' : shift(tetris1,0,1); #80 : shift(tetris2,0,1); 'D' : shift(tetris1,1,0); #77 : shift(tetris2,1,0); #27 : gameover := true; #32 : repeat delay(10); until keypressed; end; end; delay(20);end;end; Lagi – lagi digunakan sebuah variabel bertipe char untuk menampung masukan dari pemain melalui fungsi readkey. Nilai yang dikembalikan oleh fungsi readkey berupa tipe char atau bisa dikatakan sebuah nilai dengan jangkauan antara 0 hingga 255. Anda dapat saja mendeklarasikan nilai dari tipe char melalui angka. Deklarasi ini dapat dilakukan dengan dua cara. Cara pertama adalah dengan menggunakan fungsi chr(). Cara kedua adalah dengan menambahkan karakter ‘#’ di depan angka yang dimaksud. Setiap angka akan mewakili karakter yang berbeda. Konvensi dalam penggunaannya berdasarkan pada penomoran ASCII, yaitu standar penomoran karakter yang dikenalkan oleh sebuah organisasi di Amerika.Karena hasil dari readkey dapat berupa huruf, angka, atau simbol. Huruf yang dihasilkan olehnyapun dapat berupa huruf kapital atau huruf kecil. Ketika kita tidak ingin mempermasalahkan kapitalisasi dari sebuah masukan, kita dapat menggunakan sebuah fungsi bernama upcase(). Upcase() akan mengembalikan nilai kapital dari sebuah huruf apabila huruf tersebut merupakan huruf kecil. Untuk huruf kapital Upcase() tetap mengembalikan huruf kapital. Penggunaan upcase() akan menyebabkan masukan ‘w’ sama dengan ‘W’.Pada setiap sesi userinput akan dilakukan beberapa kali pengecekan oleh fungsi keypressed. Dengan pengecekan berulang akan membuat pemain dapat menggerakan tetrisnya beberapa kali sebelum tetris tersebut turun oleh prosedur slide(). Selain itu digunakan pula syntax delay() untuk menambahkan selang waktu antara pengecekan yang satu dengan yang lain. Selang waktu menyebabkan pengunaan prosesor tidak terlalu tinggi dan memberikan sedikit waktu bagi pemain untuk memikirkan langkah berikutnya.Masukan berupa karakter ASCII 27 atau biasa dikenal dengan escape akan menyebabkan variabel gameover bernilai true sehingga pada loop kedua pada program utama akan berhenti ketika compiler mencapai batas bawah dari while do. Dengan masukan escape ini pemain dapat keluar ketika sedang berada di tengah – tengah permainan. Sedangkan masukan berupa karakter ASCII 32 atau biasa dikenal dengan space menyebabkan terjadinya sebuah looping yang dilengkapi dengan delay() yang akan berhenti ketika pemain menekan tombol selain karakter spasi. Dengan adanya looping ini maka permainan seolah berada pada kondisi diam atau pause padahal sebenarnya kompiler sedang sibuk melakukan sebuah looping. Tidak terpikir oleh penyusun bagaimana menimbulkan efek pause selain dengan cara selain looping, mungkin pembaca memiliki ide lain yang lebih baik daripada metode yang penyusun pikirkan. Masukan untuk menggerakkan tetris bagi pemain pertama hanya dapat diberikan dengan menekan tombol A, S, D, dan W. A akan menyebabkan tetris bergerak ke kiri. S akan menyebabkan tetris turun. D akan menyebabkan tetris bergerak ke kanan. Sedangkan W akan Komunitas eLearning IlmuKomputer.Com11Copyright © 2003-2008 IlmuKomputer.Com
memutar tetris 90 derajat sesuai dengan arah jarum jam. Masukan untuk menggerakkan tetris bagi pemain kedua hanya dapat diberikan dengan menekan tombol panah kiri, bawah, kanan, atas. Panah kiri akan menyebabkan tetris bergerak ke kiri. Panah bawah akan menyebabkan tetris turun. Panah kanan akan menyebabkan tetris bergerak ke kanan. Sedangkan panah atas akan memutar tetris 90 derajat sesuai dengan arah jarum jam.Masukan yang diberikan akan diseleksi oleh case of sehingga masukan yang berbeda akan menyebabkan pemanggilan prosedur yang berbeda. Masukan W atau panah atas akan memanggil prosedur rotate(). Sedangkan A, S, D, panah kanan, panah bawah, panah kiri akan memanggil prosedur shift(). Untuk masukan pemain pertama, tetris yang dipassing sebagai parameter adalah tetris1, sedangkan untuk masukan pemain kedua, tetris yang dipassing sebagai parameter adalah tetris2. procedure rotate(var objek : tetris);var i : longint;collide : boolean;begin drawtetris(objek,false); ttetris := objek; collide := false; for i := 2 to 4 do beginttetris.points[i].y := objek.points[1].y + objek.points[i].x - objek.points[1].x;ttetris.points[i].x := objek.points[1].x - objek.points[i].y + objek.points[1].y; if field[ttetris.points[i].x,ttetris.points[i].y] then begin collide := true; break; end; end; if not collide then objek := ttetris; drawtetris(objek,true);end; Prosedur ini menggunakan prinsip transformasi untuk mengubah posisi dari sebuah tetris. (x,y) ----------------------------------->> (y,-x)Tidak sesederhana pada rotasi transformasi biasanya, rotasi ini tidak menggunakan titik O(0,0) sebagai pusat, namun menggunakan points[1] sebagai pusat transformasi. Hal ini menyebabkan kita akan memperhitungkan kedudukan relatif points[i].x terhadap points[1].x yang kemudian ditambahkan ke points[i].y dan kedudukan relatif points[i].y terhadap Komunitas eLearning IlmuKomputer.Com12Copyright © 2003-2008 IlmuKomputer.Com
points[1].y yang kemudian ditambahkan ke points[i].x.Seperti pada prosedur slide, prosedur ini menghapus terlebih dahulu tetris yang dijadikan parameter. Jika tetris ini tidak dihapus terlebih dahulu maka ketika prosedur mengecek keadaan field dari points yang telah diprosesnya akan selalu bernilai true. Setelah pengecekan selesai dan semua field dari points bernilai false maka tetris yang digunakan sebagai parameter perlu dilakukan perubahan. Tetapi ketika field dari points tersebut ada salah satunya yang bernilai true maka tidak perlu dilakukan perubahan pada tetris parameter. Inilah fungsi utama dari ttetris yaitu menyimpan nilai temporer dari sebuah tetris sebelum field dari tetris yang telah diproses. Sebagai dampak dari penghapusan tetris pada saat prosedur dijalankan, kita perlu sekali lagi penggambaran baik tetris telah mengalami perubahan atau tidak sama sekali.procedure shift(var objek : tetris; x, y : longint);var i : longint; collide : boolean;begin drawtetris(objek,false); ttetris := objek; collide := false; for i := 1 to 4 do begin ttetris.points[i].x := objek.points[i].x + x; ttetris.points[i].y := objek.points[i].y + y; if field[ttetris.points[i].x,ttetris.points[i].y] then begin collide := true; break; end; end; if not collide then objek := ttetris; drawtetris(objek,true); if collide then eliminate(objek,22);end; Shift() merupakan prosedur yang menggeser tetris dari kedudukannya. Yang dilakukan oleh prosedur ini adalah menambahkan properti x dan y dari points tetris dengan nilai yang ada pada parameter. Jadi ketika kita mempassing nilai -1 pada parameter x maka tetris tersebut akan bergeser ke kiri, sedangkan ketika kita mempassing 1 pada parameter y akan menyebabkan tetris tersebut bergeser ke bawah satu blok.Setelah sebuah tetris bertubrukan dengan tetris di bawahnya kita perlu melakukan pengecekan terhadap baris – baris yang diisinya, apakah baris tersebut penuh atau tidak. Bila baris tersebut penuh maka kita perlu mengeliminasi baris tersebut dan menurunkan baris – baris Komunitas eLearning IlmuKomputer.Com13Copyright © 2003-2008 IlmuKomputer.Com
yang ada di atasnya. Maka secara teknis akan dijelaskan seperti ini. Ketika sebuah tetris bertubrukan dengan tetris di bawahnya akan menyebabkan variabel collide bernilai true. Variabel collide yang bernilai true akan menyebabkan pemanggilan prosedur eliminate(). Collide sebelum iterasi perlu diinisialisasi karena variabel ini akan dipakai secara berulang. procedure eliminate(objek : tetris; y : longint);var i,j,k : longint; blank : boolean;begin for i := y downto 3 do begin blank := false; for j := objek.xmodel + 14 to objek.xmodel + 28 do if not field[j,i] then begin blank := true; break; end; if not blank then begin for k := i downto 3 do begin gotoxy(objek.xmodel + 14,k); for j:=(objek.xmodel + 14) to (objek.xmodel + 28) do begin if field[j,k-1] then write(#178) else write(#32); field[j,k] := field[j,k-1]; end; end; eliminate(objek,i); break; end; end;end; Prosedur eliminate() adalah satu – satunya prosedur yang menerapkan konsep rekursi. Rekursi adalah terminologi yang mengandung definisi dirinya sendiri. Rekursi jarang dipakai Komunitas eLearning IlmuKomputer.Com14Copyright © 2003-2008 IlmuKomputer.Com
oleh para amatir dalam programnya karena konsep ini membutuhkan pemahaman yang mendalam dan imajinasi yang tinggi.Prosedur atau fungsi yang bersifat rekursif pada dasarnya terdiri dari basis 0 dan basis 1. Basis 0 adalah bagian dari penyeleksian kondisi yang akan menyebabkan rekursi terhenti sedangkan pada basis 1 rekursi akan terus berjalan dengan memanggil dirinya sendiri. Tetapi dalam program ini rekursi tidak mematuhi konsep basis 1 dan basis 0, karena prosedur eliminate() tidak akan berjalan dengan benar mengikuti konsep tersebut. Oleh karena itu diperlukan modifikasi dari konsep yang ada. Perlu diingat bahwa rekursi sangat serakah dalam penggunaan memori, karena setiap kali pemanggilan prosedur akan terjadi penumpukan chunk memori. Sebisa mungkin menghindari rekursi dengan cara merubah prosedur tersebut menjadi prosedur linear atau biasa dirubah ke dalam bentuk iterasi.Seperti yang dikatakan di atas, bahwa prosedur ini akan melakukan pengecekan sebuah baris penuh atau tidak kemudian menurunkan semua baris yang berada diatasnya. Pengecekan dilakukan iterasi mulai dari kolom pertama area pemain sampai kolom terakhir area pemain itu. Ketika baris tersebut terbukti penuh dilakukan eliminasi baris tersebut dan menurunkan baris – baris di atasnya. Setelah itu diperlukan pengulangan pengecekan pada baris tersebut dikarenakan baris yang berada tepat diatasnya bisa saja penuh sehingga perlu dilakukan pengecekan ulang. Pengecekan ulang dilakukan dengan pemanggilan rekursif dirinya sendiri namun tidak perlu dimulai dari baris yang paling bawah namun cukup dimulai dari baris itu sendiri, sehingga akan menghemat penggunaan prosesor untuk hal yang sebenarnya tidak perlu. Pemanggilan eliminate(tetris,22) berarti memulai pengecekan dari baris paling bawah. Sedangkan eliminate(tetris,i) berarti memulai pengecekan mulai dari baris ke-i.Selesai sudah uraian pembuatan tetris. Tetris di atas tidak memiliki fungsi penghitungan nilai. Hal ini diharapkan oleh penyusun agar pembaca dapat mengembangkan program tetris ini dan menambahkan fungsi tersebut atau bahkan memodifikasi program ini menjadi lebih baik lagi.Biografi PenulisAhmad Priatama, sekarang masih duduk di kelas tiga SMAN 1 Magelang. Dilahirkan di Bandung 9 september 1990(penting g sich!), lulusan TK sukahaji, SDN Cipadung 2, SMPN 8 bandung, SMAN 1 Magelang dan Ilmu Komputer UGM(doaian aja,Amieen!). Mengenal komputer ketika duduk pada kelas 1 SMA, ketika itu mengikuti organisasi ekstrakulikuler ICC(informatic clinic community) dan menjabat sebagai ketua(hehe...). Tahun 2007 mengikuti olimpiade komputer sampai pada tingkat pelatnas 1.Saya berharapa sekali pembaca meluangkan sedikit waktunya untuk mengirim email kepada saya untuk berbagi ilmu atau sekedar korepondensi, karena saya yakin sekali ilmu saya pada saat ini masih bisa dibilang dangkal!Terima Kasih!!

Membuat Aplikasi Touchscreen

Muhadkly (Acho)acho@muhadkly.nethttp://muhadkly./

Sebuah monitor layar datar berukuran besar tampak berdiri di sudut ruangan sebuah hotel. Desain nya yang modern membuat penasaran pengunjung yang lewat. Monitor itu menyajikan informasi lengkap yang dikemas dengan iringan backsound dan animasi-animasi yang menawan. Ah, ternyata isinya sebuah aplikasi yang menampilkan informasi hotel dari mulai galeri fasilitas, tariff, dan tempat wisata terdekat. Uniknya, pengunjung cukup menyentuh layar monitor untuk menggunakan aplikasi yang ada. Ya, itulah salah satu contoh aplikasi multimedia berbasis touchsreen (layar sentuh). Apa yang Beda dengan Monitor Touchscreen?Mungkin anda pernah berfikir bahwa untuk membuat aplikasi yang menggunakan layar sentuh membutuhkan teknik pemrograman khusus, ternyata pemikiran tersebut tidak benar. Pada dasarnya monitor touchscreen adalah monitor biasa, hanya saja dibagian depan layarnya ditanamkan sebuah plat yang berfungsi layaknya mouse pada komputer anda, itulah yang membuat monitor tersebut dapat melakukan fungsi klik pada titik kordinat tertentu dengan menekan atau menyentuh area layar.Komunitas eLearning IlmuKomputer.Com1Copyright © 2003-2007 IlmuKomputer.Com
Berkenaan dengan itu, maka tidak ada juga perbedaan ketika kita ingin mengembangkan sebuah aplikasi yang akan disajikan di layar sentuh. Buatlah aplikasi apa saja seperti biasa, lalu gunakan monitor touchscreen, maka jadilah aplikasi touchscreen. Software untuk Membuat Aplikasi TouchscreenKebanyakan, aplikasi touchscreen dikembangkan menggunakan software multimedia seperti Macromedia Director atau Macromedia Flash. Namun terkadang kita harus menggunakan database dalam aplikasi tersebut, sehingga akan relatif lebih sulit jika kita harus menggunakan perangkat lunak seperti Macromedia Director dalam pengembangannya. Namun, bukan berarti Macromedia Director tidak mampu berhubungan dengan database. Aplikasi ini menyediakan plug-in untuk koneksi ke database, sayangnya plug-in tersebut berbayar atau tidak gratis ?PHP untuk Membuat Aplikasi TouchscreenPHP sebuah bahasa pemrograman berbasis web yang open source, membuat aplikasi web menggunakan PHP dan MySQL sepertinya relatif lebih mudah, apalagi di web kita bisa juga menambahkan unsur multimedia seperti animasi dan suara. Tentunya kelebihan ini bisa dimanfaatkan untuk membuat sebuah aplikasi multimedia dinamis untuk selanjutnya ditampilkan di komputer bermonitor touchscreen.Masalah selanjutnya yang timbul, aplikasi touchscreen haruslah full screen tanpa border apapun, ini syarat mutlak agar aplikasi terlihat lebih integrated dengan perangkat Layar Sentuh. Sedangkan kalau berbasis web pastinya menggunakan browser. Mungkin anda bertanya-tanya, bagaimana agar tampilan aplikasi web bisa full-screen? Sedangkan aplikasi web ditampilkan di browser yg bagian atasnya ada kolom url, navigasi, dan atribut toolbar browser lainya. Untuk masalah ini, bisa diatasi dengan menggunakan browser firefox dengan menginstal sebuah add-ons bernama r-kiosk. Dengan add-ons ini, browser firefox anda akan tampil 100% full screen tanpa ada toolbar atau komponen browser apapun. Hasilnya, aplikasi anda sama persis dengan aplikasi desktop dan akan tampil rapih di monitor touchscreen.Komunitas eLearning IlmuKomputer.Com2Copyright © 2003-2007 IlmuKomputer.Com
Hal Penting dalam Membangun Aplikasi TouchscreenAda beberapa hal yang harus diperhatikan dalam membuat aplikasi layer sentuh, berdasarkan pengalaman saya, diantara sebagai berikut:1. Buatlah sistem navigasi semudah-mungkin. Karena yang akan mengaksesnya bermacam user dengan tingkat kebiasaan yang berbeda-beda.2. Buat Navigasi dalam bentuk button yang eye-catching dan berukuran besar. Kenapa besar? Karena disini user menggunakan telunjuknya untuk meng-klik. Kebayang kan kalau ada orang guemmukk?? :p3. Perbanyak unsur multimedia seperti Background Musik dan Animasi. Ini dilakukan agar terlihat “menggoda” orang yang lewat untuk mau mengakses.4. Buat Sebuah Screen Saver berbasis flash misalnya yang otomatis akan aktif jika tidak ada aktifitas lebih dari 15 menit misalnya. Nah, anda bisa jualan iklan nantinya di screen saver ini.. :p5. Jika tidak ada aktifitas setelah beberapa menit, redirect ke halaman utama. PenutupMudah-mudahan tutorial singkat ini bisa memberi sedikit pencerahan kepada pihak yang tertarik mempelajari seputar pengembangan aplikasi layar sentuh. Jika ada pertanyaan seputar artikel ini anda bisa melayangkan email atau bertanya lewat kolom komentar di Blog saya (
http://www.muhadkly.net/membangun-aplikasi-touchscreen-berbasis-web/), Salam.Referensi1. https://addons.mozilla.org/en-US/firefox/addon/1659 2. http://kb.mozillazine.org/Safe_Mode_(Firefox) Komunitas eLearning IlmuKomputer.Com3Copyright © 2003-2007 IlmuKomputer.Com
Biografi PenulisMuhadkly (Acho), Menyelesaikan S1 Fakutas sains dan Teknologi Jurusan Teknik Informatika di Universitas Islam Negeri, Jakarta. Mengawali karir sebagai freelance programmer semenjak masih duduk di bangku Kuliah, dan disaat yang bersamaan pernah menjabat sebagai webmaster di PT. Jakarta Express (TX Travel), saat itu bertanggung jawab mengembangkan Aplikasi Reservasi Tiket Online berbasis PHP. Ketatnya jadwal kuliah membuat penulis mundur dari jabatannya dan kembali menjadi freelancer. Setelah lulus, penulis langsung bekerja sebagai web programmer di Virtual Conslting, sebuah perusahaan Media Online, Web Development, dan Online Marketing. Penulis memfokuskan diri ke duna pemrograman berbasis web, multimedia, dan e-commerce. Berbagai tulisan lain juga bisa anda lihat di situs blog
http://muhadkly.net/Komunitas eLearning IlmuKomputer.Com4Copyright © 2003-2007 IlmuKomputer.Com