hobi pengaturcaraan dengan just basic · jika ditanya mengapa seseorang itu sanggup mendaki gunung...

239
Hobi Pengaturcaraan Dengan Just BASIC 1

Upload: dotram

Post on 06-Mar-2019

296 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

1

Page 2: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Hobi PengaturcaraanDengan

Just BASICOleh

Rozlano Muhamad Tobat(LanoG)

Dihasilkan untuk kegunaan umum dan diterbitkan secara PERCUMA. Anda dibenarkan menyimpan eBook ini sebagai rujukan dan menggunakannya sebaik mungkin. Tidak dibenarkan menukar kandungan asal dan segala maklumat dalam eBook ini adalah

hakmilik penuh penulis dan pembina asal bahasa pengaturcaraan Just BASIC. Sebarang maklum balas adalah dialu-alukan dan gunakanlah eBook ini untuk berkongsi dengan

rakan-rakan anda.

Oleh kerana tujuan asal eBook ini ditulis adalah untuk terbitan buku sebenar, maka terdapat juga maklumat berkaitan CD kepilan yang disertakan bersama buku berkenaan. Walau bagaimanapun, kandungan maklumat digital yang dinyatakan dalam CD kepilan

berkenaan boleh diperolehi bersama eBook ini.

2

Page 3: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

PRAKATA

Bahasa pengaturcaraan Just BASIC released 1.01 telah diperkenalkan pada tahun 2004. Semenjak itu, ianya telah digunakan secara meluas di serata pelusuk dunia dengan sokongan komuniti yang aktif. Walau pun masih baru, ianya amat berkuasa, mudah dipelajari dan memiliki fleksibiliti yang tinggi. Sebagai salah satu daripada berpuluh-puluh dialek bahasa pengaturcaraan BASIC (Beginner’s All-purpose Symbolic Instruction Code) yang terdapat dalam pasaran, ia memiliki banyak arahan-arahan yang mudah difahami kerana struktur arahan di dalamnya seolah-olah seperti bahasa Inggeris.

Keupayaannya yang tinggi sama ada untuk menghasilkan aplikasi teks, antaramuka pengguna bergrafik (graphical user interface) mahupun permainan interaktif telah menjadikannya sangat mudah dikendalikan. Bahasa pengaturcaraan ini boleh digunakan dalam apa jua industri sama ada untuk pendidikan, perniagaan, seni, penyelidikan dan sebagainya. Ia juga sangat ringkas dan terbuka untuk dipelajari oleh semua golongan tidak kira kanak-kanak mahupun warga emas, tanpa mengira tahap pengetahuan. Semua orang boleh belajar dengan mudahnya tanpa perlu adanya pendidikan formal dalam bidang pengatucaraan. Oleh itu, ianya sangat sesuai bagi mereka yang ingin berjinak-jinak dalam dunia pengaturcaraan terutama bagi mereka yang menjadikannya sebahagian daripada hobi yang bermanfaat.

Buku ini ditulis bagi memberi garis panduan tentang langkah asas pengaturcaraan serta memperkenalkan kaedah atau methodologi yang digunakan semasa menulis aturcara. Ianya bagi memudahkan mereka yang belum mempunyai sebarang pengetahuan awal tentang asas penulisan aturcara untuk memperkembangkan bakat dan idea mereka bagi menghasilkan aturcara yang bermakna dan berkesan. Oleh itu terdapat banyak ilustrasi, imej grafik, diagram, jadual dan kod-kod diselitkan dalam penerangan terhadap sesuatu topik atau bahagian agar pengguna dapat memahami konsep dengan mudah.

Manfaat yang anda perolehi daripada mempelajari bahasa pengaturcaraan Just BASIC ialah anda boleh menghasilkan hampir apa sahaja aplikasi komputer dengan mudah dan murah. Anda tidak perlu membayar sebarang royalti kepada pemegang hakcipta Just BASIC sekiranya anda ingin menggunakan aplikasi yang telah anda hasilkan untuk tujuan komersil dengan syarat tidak mengubah sebarang stuktur fail-fail asal yang dinyatakan dalam syarat dan terma. Hasilkan aplikasi dan gunakan fail Executable sebelum anda mengedarkan perisian anda. Mungkin hasil kerja anda menyamai hasil kerja profesional dan anda boleh menjimatkan wang membeli perisian komersil yang agak mahal. Malah anda boleh merasai keseronokan pengaturcaraan ini apabila sesebuah aturcara digunakan untuk manfaat orang lain juga.

Selamat datang ke dunia pengaturcaraan Just BASIC!

Rozlano Muhamad [email protected]

3

Page 4: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

PENGHARGAAN

Sekalung penghargaan diucapkan kepada pembina bahasa pengaturcaraan Just BASIC iaitu Carl Gundel yang telah memberikan kebenaran untuk menyertakan fail pemuat turun (installer) Just BASIC release 1.01 iaitu jbwin101.exe di dalam cakera padat kepilan yang disertakan bersama buku ini. Anda juga boleh memuat turun fail yang sama dari laman web rasmi Just BASIC iaitu:

http://www.justbasic.com

Ribuan terima kasih diucapkan kepada rakan-rakan yang banyak membantu pemahaman dengan lebih lanjut berkenaan segala permasalahan yang berkaitan dengan bahasa pengaturcaraan Just BASIC ini termasuklah Alyce Watson, John Davidson, B J Moore, Janet Terra, Welopez, Shirley Smith, Stefan Pendl, DaveG, Brian McCumber, Austin Farmer, Pietro Giaglardi, Alix Whittal, UncleBen, Dodica, Rod Bird, KCDan, Zoomkat, Per M., Tooanalytical dan semua yang terlibat yang tidak disebutkan disini sama ada secara langsung atau pun tidak langsung. Komuniti Just BASIC yang peramah dan banyak membantu boleh disertai di laman forum rasmi mereka yang berikut:

http://justbasic.conforums.com/

Tidak ketinggalan, terima kasih buat ayahanda yang mula-mula memperkenalkan dunia perkomputeran kepada saya serta bonda, keluarga dan rakan-rakan yang banyak memberi galakan dan sokongan selama ini.

Akhir sekali, terima kasih juga kepada pihak-pihak yang memberi galakan dan inspirasi dalam penghasilan buku ini. Kepada semua yang turut menyokong dan membeli buku Hobi Pengaturcaraan Dengan Just BASIC ini, saya ucapkan terima kasih dan gunakannya untuk manfaat semua. Bantulah mereka yang lain dalam usaha untuk memberi kefahaman konsep pengaturcaraan Just BASIC dan gunakan contoh-contoh yang ada bagi membimbing yang lain. Segala persoalan, pendapat, komen, kritikan dan sebagainya boleh dikemukakan melalui saluran e-mail. Segala usaha telah dicurahkan untuk memperlengkapkan kandungan buku ini dan sebarang kekurangan diharap dapat diperbaiki di masa depan.

4

Page 5: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Notis Cap Dagangan

Just BASIC dan Liberty BASIC adalah cap perdagangan Shoptalk System.

Microsoft Windows, MS Paint, MS Notepad, Visual BASIC, Internet Explorer, MS Office dan C++ adalah cap perdagangan Microsoft Corporation.

Semua bahan perdagangan yang dinyatakan di dalam teks ini adalah hak milik serta cap perdagangan syarikat pengeluarnya.

Notis Bahan Visual

Imej, ilustrasi, gambarajah dan diagram yang telah digunakan dalam buku ini adalah sebahagian daripadanya dihasilkan sendiri oleh penulis manakala sebahagian yang lain diperolehi dari sumber digital yang lain. Segala imej yang terkandung di dalam buku ini adalah tertakluk di bawah hakcipta pemilik asalnya. Tidak dibenarkan mengulangcetak dalam apa jua bentuk mana-mana bahagian yang terkandung dalam buku ini tanpa kebenaran daripada pemilik asal.

Notis Bahan Digital

Fail-fail digital didalam cakera padat (compact disc) kepilan adalah hakmilik pemilik asalnya. Tidak dibenarkan menerbitkan semula semua bahan yang terkandung di dalam cakera padat berkenaan tanpa kebenaran pemilik asalnya.

Penolakan Tuntutan

Penerbit dan penulis buku ini telah berusaha sedaya-upaya untuk memastikan segala isi kandungan yang bertepatan dengan mutu bahan terbitan yang dihasilkan. Walau bagaimana pun, tiada jaminan diberikan sama ada yang bersurat mahupun tersirat. Penerbit dan penulis menolak sebarang tuntutan terhadap apa jua tanggungjawab atau liabiliti untuk apa-apa gantirugi secara langsung atau tidak langsung yang disebabkan oleh isi kandungan atau maklumat di dalam buku ini atau keluaran yang dijelaskan didalamnya. Sebutan atau pernyataan penerbit dan penulis mengenai mana-mana keluaran tidak bermakna pengendorsan oleh penerbit dan penulis terhadap keluaran tersebut.

5

Page 6: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

ISI KANDUNGAN

Buku ini dibahagikan kepada 10 Bahagian yang sarat dengan sumber maklumat berkiatan bahasa pengaturcaraan Just BASIC. Kesemuanya telah diolah dengan bahasa yang mudah difahami beserta ilustrasi serta contoh-contoh yang berkaitan. Ia telah dihasilkan dengan tujuan untuk memberi pendedahan asas dan methodologi yang digunakan dalam bidang pengaturcaraan. Setiap bahagian akan mengandungi tajuk-tajuk tertentu yang berkaitan dengan isi kandungan keseluruhan bahagian berkenaan.

BAHAGIAN 1PENGENALAN…………………………………………….. 8

Mengapa Membuat PengaturcaraanApakah Bahasa PengaturcaraanPengaturcaraan Dengan Just BASICTetingkap Penyuntingan Juts BASICBar Alatan IkonMenu Tarik Bawah

BAHAGIAN 2ASAS PENGATURCARAAN JUST BASIC …………….. 21

Asas Pengaturcaraan Just BASICKata SimpananMengenali Pemalar dan PembolehubahPemalarPembolehubah BerangkaPembolehubah RentetanLanjutan Pemalar dan PembolehubahModular Dalam AturcaraArahan GOTOPernyataan FOR…NEXTPernyataan WHILE…WENDPernyataan IF…THENLanjutan Pengendali LogikLanjutan Kawalan ModulFungsiPenjanaan Nombor Rawak

6

Page 7: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

BAHAGIAN 3KAEDAH DAN PERANCANGAN ………………………. 45

Perancangan AturcaraCarta AliranKod PseudoMendokumen Kod Just BASICTutorial: Permainan Teka Nombor

BAHAGIAN 4TATASUSUNAN DAN PENGURUSAN FAIL ………….. 57

Menggunakan TatasusunanTatasusunan RentetanTatasusunan BerangkaPengisytiharan TatasusunanLanjutan TatasusunanMembaca dan Menulis Pada FailPernyataan OPENPernyataan CLOSEPernyataan PRINTMembaca Dari FailMode Fail APPENDFail Menghad KomaLanjutan Pengurusan Fail

BAHAGIAN 5ANTARAMUKA PENGGUNA BERGRAFIK ………….. 79

Antaramuka Pengguna BergrafikMengubah Saiz dan Posisi TetingkapMeletakkan ButangJenis-jenis Tetingkap Dalam Just BASICMembuka TetingkapKawalan Pada TetingkapMendapat Input Dengan TextboxMelabel Tetingkap Dengan Kawalan StatictextMemerangkap Aktiviti Tutup Pada TetingkapPenggunaan Tetingkap DialogMengubah Font Pada TetingkapLanjutan Statictext

7

Page 8: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Menggunakan NOMAINWINLanjutan Kawalan Pada Tetingkap

BAHAGIAN 6ASAS PENGATURCARAAN GRAFIK …………………. 111

Pengaturcaraan GrafikOperasi GrafikLanjutan FLUSH dan SEGMENTMelukis Objek TersediaWarna GrafikGrafik TeksFail BitmapMengawal Grafik Dengan Tetikus dan KekunciMelukis Carta PaiMewarnakan Carta PaiMenetapkan Bar Gelung Tetingkap

BAHAGIAN 7SPRITE UNTUK ANIMASI ……………………………… 133

Pengenalan SPRITEBagaimana Membentuk SPRITELatar BelakangLatar Belakang dan SPRITEMemberi Sifat Pada SPRITEMengemaskini PaparanPengawalan Masa Dalam AnimasiPemasaan SebenarPemasaan Dengan PAUSE SUBROUTINEMenganimasikan SPRITEMengesan Perlanggaran SPRITEMenyingkirkan SPRITEMengesan Kedudukan SPRITELangkah-langkah Menganimasikan SPRITE

BAHAGIAN 8LANJUTAN GRAFIK DAN SPRITE ……………………. 157

Lanjutan Grafik dan SPRITELatar Belakang dari Skrin

8

Page 9: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Menggunakan FLUSHMenghasilkan SPRITE dengan GrafikLanjutan Grafik dan Warna RGBLatar Belakang Bergerak

BAHAGIAN 9PERMAINAN INTERAKTIF …………………………….. 173

Aturcara Permainan InteraktifKeperluan AsasMerancang Aturcara PermainanIdea PermainanGaris Panduan AturcaraMenulis Kod AturcaraPenetapan Awal PermainanMengaktifkan PemasaanPenamatan Permainan

BAHAGIAN 10PENGGUNAAN CAKERA PADAT KEPILAN ………… 207

Penggunaan Cakera Padat KepilanPemasangan Just BASICPengenalan Contoh AturcaraUlasan Aturcara 1Ulasan Aturcara 2Ulasan Aturcara 3Ulasan Aturcara 4Ulasan Aturcara 5Set Fail Bitmap PercumaKesimpulan

APPENDIX ……………………………………….………… 228

9

Page 10: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

PENGENALAN

Bahagian ini akan membincangkan perkara-perkara asas pengaturcaraan dan sepintas lalu berkenaan konsep yang terdapat dalam Just BASIC. Mengapa perlu memilih bahasa pengaturcaraan yang mudah, fleksible dan berkuasa akan mengupas kelebihan yang ada pada Just BASIC. Anda akan diperkenalkan dengan Penyunting Just BASIC dan fungsi serta kegunaan setiap ikon dan menu. Terdapat juga langkah-langkah untuk penghasilkan aplikasi standalone dengan ‘runtime engine’ yang turut disertakan bersama pakej asal bahasa pengaturcaraan ini.

10

Page 11: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

MENGAPA MEMBUAT PENGATURCARAAN

Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang tidak terjangka, mungkin jawapan yang keluar ialah kerana minat yang mendalam. Begitu juga dengan mereka yang menjadikan bidang pengaturcaraan sebagai hobi untuk mengisi masa lapang selain menambahkan pengetahuan dalam bidang teknologi maklumat. Diseluruh dunia pada hari ini sememangnya amat ramai dikalangan penulis-penulis aturcara yang bergiat secara sambilan kerana ianya satu hobi yang bermanfaat dan mampu mengasah pemikiran yang kritis dalam menyelesai masalah. Kebanyakan daripada mereka ini tidak mendapat pendidikan yang formal dalam bidang-bidang pengaturcaraan dan pengetahuan diperolehi melalui pembacaan, cuba dan jaya (try and error), perbincangan dengan rakan dan sebagainya. Malahan banyak sumber-sumber rujukan percuma yang tidak terhingga terdapat dalam internet. Secara asasnya minatlah yang telah mendorong mereka untuk mendalami bidang pengaturcaraan ini dan kadang kala pengetahuan mereka setanding dengan mereka yang sememangnya belajar dan bekerja dalam bidang pembangunan perisian itu sendiri!

Dalam sesebuah komputer pada hari ini, jika diperhatikan banyak perisian-perisian yang menarik dan berfungsi dengan pantas dengan visual grafik dan efek bunyian yang sangat menarik. Sudah pasti ada dikalangan anda ada yang tertanya-tanya bagaimana mereka menghasilkan rekabentuk dengan fungsi-fungsi yang sangat sistematik dan mempunyai kebolehan-kebolehan berguna seperti dapat memproses perkataan, memuatkan lembaran elekronik, membuat persembahan animasi, melukis grafik dua dimensi atau tiga dimensi, menyimpan rekod yang banyak, membuat pengiraan dan analisis yang sukar, berinteraksi dengan orang lain dalam talian, bermain permainan dengan grafik berkualiti dan sebagainya. Kebolehan-kebolehan inilah menjadikan komputer pada hari ini sebuah mesin ajaib pelbagai guna dan menakjubkan. Jadi tidak teringinkah anda menghasilkan perisian-perisian yang sebegini? Memang tidak mustahil menghasilkan perisian tersebut, namun ianya adalah merupakan hasil kerja sekumpulan pakar pengaturcara yang bekerja secara sistematik sepenuh masa. Masing-masing bertugas menyiapkan fungsian-fungsian atau modul-modul tertentu pada perisian tersebut, dan juga mereka kadang kala mengambil masa berbulan malahan bertahun untuk menyiapkan perisian-perisian komersil ini. Jadi, sebagai pengatucara sambilan kita tidaklah dapat menandingi mereka, namun ini tidak bermakna kita tidak boleh menghasilkan perisian-perisian yang baik dan bermutu sama ada untuk kegunaan sendiri mahupun untuk diberi kepada kawan-kawan (mungkin ada yang hendak menjual perisian mereka rasanya…).

Tidak ada yang mustahil mengenai pengaturcaraan. Malahan perisian yang terbaru dalam pasaran pun dibina daripada paduan bahagian-bahagian aturcara ringkas. Jika anda telah pelajari bagaimana membina cebisan-cebisan perisian ringkas dan bagaimana ia berfungsi, segala kerja keras dan imaginasi anda akan membawa anda hampir ke mana sahaja. Pengaturcaraan adalah langkah ringkas untuk menyelesaikan masalah dalam bentuk yang boleh difahami komputer. Langkah-langkah ini perlu diolah dengan tertib dan susunan yang betul.

11

Page 12: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Cuba kita ambil contoh ringkas tertib menunggang basikal:

1. Duduk atas tempat yang disediakan.2. Letak tangan pada pemegang.3. Letak kedua-dua kaki pada pengayuh dan kayuh.4. Imbangi badan anda.5. Jangan langgar pokok.

Tertib ringkas ini jika tidak dipatuhi mampu mengundang padah misalnya jika anda tidak letak tangan pada pemegang dan terus mengayuh basikal sudah pasti anda terjatuh (melainkan anda seorang pakar basikal dan stuntman). Begitu jugalah dengan bahasa pengaturcaraan, arahan tertib yang diberikan hendaklah mengikut tertib yang telah disetkan dalam sesebuah bahasa.

Aturcara dalam bentuk yang paling ringkas memiliki cirri-ciri aktiviti berikut iaitu:

INPUT - aturcara mengkehendaki pengguna memasukkan maklumat.KIRAAN - aturcara menukar, mengira dan manipulasikan maklumat.OUTPUT - aturcara memaparkan hasilan akhir pengiraan.

APAKAH BAHASA PENGATURCARAAN

Di pasaran terdapat banyak jenis bahasa pengaturcaraan dalam berbagai-bagai bentuk, dialek dan fungsian masing-masing. Bahasa komputer secara umumnya dikategorikan kepada 4 peringkat iaitu Bahasa Mesin, Bahasa Himpunan, Bahasa Aras Tinggi dan Bahasa Pembangunan Aplikasi Pantas (Rapid Application Development). Bahasa yang paling biasa digunakan oleh pembangun aplikasi ialah bahasa aras tinggi kerana arahan-arahannya yang lebih mudah difahami kerana ianya mirip kepada bahasa kegunaan manusia seperti bahasa Inggeris. Antara bahasa aras tinggi yang agak popular digunakan seperti BASIC, FORTRAN, COBOL, Pascal, C, JAVA dan sebagainya. Terdapat banyak jenis bahasa lain yang digunakan khas dan disesuaikan dengan tujuan aturcara yang hendak dibina.

Antara bahasa yang mudah dipelajari ialah BASIC. Bahasa ini telah berkembang dengan pesatnya semenjak kali pertama dibangunkan oleh J. Kemeny dan T. Kurtz di Kolej Dartmouth. BASIC merupakan singkatan kepada Beginner’s All-purpose Symbolic Instruction Code. BASIC memiliki banyak dialek antaranya BASICA, GWBASIC, QBASIC, TurboBASIC, PowerBASIC, Liberty BASIC, iBASIC, Visual BASIC, Visual BASIC.net dan sebagainya. Terdapat berpuluh-puluh lagi dialek berasaskan BASIC dalam pasaran dan ada diantaranya tidak lagi disokong pembangunannya.

Dengan perkembangan teknologi maklumat yang amat pesat dimana pemprosesan menjadi semakin pantas, banyak bahasa-bahasa komputer telah berkembang kepada bahasa yang lebih mudah dengan menggunakan antaramuka pengguna grafik (GUI - Graphical User Interface). Lazimnya penggunaan visual grafik berasaskan window telah

12

Page 13: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

diaplikasikan dan wujudlah loghat bahasa komputer yang baru misalnya Visual BASIC adalah berasal dari BASIC. Dengan interaksi secara visual ini akan memudahkan lagi proses menulis aturcara berasaskan window atau pembanguanan aplikasi pantas.

Selain itu, apa yang dikenali sebagai Pengaturcaraan Berasaskan Objek (Object Oriented Programming) juga mengambil alih teknik pengaturcaraan yang menggunakan kod untuk menulis aturcara. Dengan adanya kemudahan-kemudahan secara visual dimana penggunaan ikon secara Tarik dan Letak (Drag and Drop), pengaturcara kini mampu menghasilkan sebuah aplikasi dengan cepat dan interaktif tanpa perlu menulis sebarang kod. Walau bagaimanapun, biasanya bahasa pengaturcaraan berasaskan objek digunakan khas untuk membangunkan aplikasi-aplikasi tertentu misalnya perisian multimedia, aplikasi internet dan sebagainya.

PENGATURCARAAN DENGAN JUST BASIC

Just BASIC merupakan salah satu daripada berpuluh-puluh variasi dialek BASIC yang terkini. Ianya telah direkabentuk oleh Carl Gundel dan dibangunkan oleh Shoptalk Systems. Beliau merupakan pengasas bahasa Liberty Basic yang juga salah satu produk yang telah menempa beberapa kejayaan sebagai bahasa pengaturcaraan yang mudah, murah dan berkuasa. Dengan pengalaman mereka selama berbelas tahun, kewujudan Just BASIC yang telah banyak disemai semasa pembangunan bahasa Liberty BASIC. Oleh yang demikian, tidak hairanlah jika banyak persamaan yang kita boleh dapati dalam kedua-dua bahasa pengaturcaraan ini.

Pemilihan Just BASIC sebagai bahasa yang baik untuk pengaturcaraan pelbagai aplikasi adalah kerana beberapa sebab iaitu:

(a) Banyak arahan dan sintak yang mudah dipelajari dan difahami.(b) PERCUMA digunakan sama ada untuk kegunaan peribadi atau komersil.(c) Mampu menghasilkan aplikasi antaramuka pengguna grafik dengan baik.(d) Penyunting aturcara yang mesra pengguna dengan warna sintak pembeza.(e) Binaan dalaman enjin sprite untuk animasi grafik dan permainan interaktif.(f) Boleh memainkan format muzik MIDI dan bunyian WAV.(g) Memiliki sumber penyahpepijat aturcara yang baik.(h) Menghasilkan fail standalone (fail dengan pengakhiran .exe)(i) Penyunting antaramuka pengguna grafik disertakan dan boleh diubahsuai.(j) Sokongan daripada komuniti Just Basic yang aktif melalui forum internet.(k) Storan fail penyunting aturcara yang kecil iaitu hanya bersaiz 2.4 MB.

TETINGKAP PENYUNTINGAN JUST BASIC

Semasa memulakan Just BASIC, tetingkap yang dinamakan sebagai Just BASIC Editor akan dipaparkan. Secara automatik juga akan dipaparkan tetingkap dialog ‘World of Just BASIC’ yang merupakan menu penyambungan ke pautan-pautan lain sama ada ke

13

Page 14: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

internet mahupun ke fail bantuan yang berkaitan dengan bahasa berkenaan. Anda boleh abaikannya dan menutup dialog berkenaan. Di dalam Just BASIC Editor tersebutlah kita akan menyunting pelbagai jenis aturcara-aturcara sebelum dijalankan. Bermula pada saat ini, anda pasti akan selalu melihat paparan antaramuka grafik ini.

Cuba kita perhatikan persekitaran antaramuka grafik yang terdapat pada Just BASIC Editor berkenaan. Terdapat menu-menu dan juga ikon-ikon fungsian selain ruangan penyuntingan yang luas, kemas dan agak bersih. Mari cuba mengenali fungsi-fungsi yang ada untuk memudahkan penulisan aturcara nanti.

Perhatikan pada title tetingkap berkenaan yang memaparkan logo Just BASIC dan juga tulisan bertanda ‘Just BASIC v1.01 – C:\Program Files\Just BASIC v1.01\untitled.bas’ menunjukkan bahasa versi bahasa ini ialah 1.01 dan kedudukan fail berkenaan dalam cakera keras anda. Fail secara automatik akan diberi nama ‘untitled.bas’ jika anda membuat fail baru dan nama fail tersebut boleh ditukar jika anda menyimpannya.

Tetingkap Just BASIC Editor.

14

Page 15: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

BAR ALATAN IKON

Butang-butang ikon dalam Just BASIC terdiri daripada simbol-simbol berbeza mengikut fungsian arahan masing-masing. Ianya merupakan ‘shortcut’ atau jalan pintas untuk menjalankan arahan yang kerap digunakan oleh pengaturcara. Mari kita lihat satu persatu fungsi butang-butang ikon berkenaan.

New (Alt-F+N)Membuka dokumen kod sumber baru Just BASIC. Jika klik pada butang berkenaan semasa anda masih menyunting aturcara sedia ada, maka tetingkap dialog pertanyaan akan dipaparkan dan meminta input anda sama ada mahu menyimpan fail berkenaan atau sebaliknya.

Open (Alt-F+O)Membuka fail kod sumber Just BASIC yang sedia ada. Terdapat banyak fail-fail kod sumber Just BASIC (berakhiran dengan .bas) yang disediakan sebagai rujukan dalam direktori yang sama.

Save (Alt-F+S)Menyimpan kod sumber fail Just BASIC. Fail kod dalam format Just BASIC (berakhir dengan tanda .bas) disimpan dalam direktori yang dikehendaki. Aturcara yang dihasilkan perlulah disimpan sama ada dalam cakera keras atau ruangan storan lain seperti cakera padat, disket, pemacu USB dan sebagainya.

Print (Alt-F+P)Mencetak kod sumber yang telah disunting pada pencetak. Ini adalah fungsi yang baik untuk membuat salinan kod aturcara kepada helaian kertas bagi membolehkan analisa lanjut selain untuk keselamatan jika data yang ada dalam komputer terpadam dan sebagainya.

Find/ Replace (Ctrl-F)Mencari perkataan dan menggantikan perkataan. Fungsi ini amat berguna untuk mencari kata kunci atau ingin mengesan maklumat-maklumat dengan pantas. Selain itu ia boleh juga digunakan untuk menggantikan perkataan dengan mudah.

15

Page 16: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Cut (Ctrl-X)Memotong/ memadam kod yang telah ditandakan. Fungsi ini agak biasa dan sama juga dengan fungsi memadam pada papan kekunci anda. Hanya perlu tandakan kod yang ingin dipadam dan klik butang ini.

Copy (Ctrl-C)Menyalin kod sumber yang telah ditandakan. Kadang kala kita tidak mahu kerja menaip aturcara yang lebih kerana kod-kod yang mungkin agak serupa digunakan. Disinilah fungsi menyalin berguna dan boleh ditampal semula dengan fungsi tampal (paste).

Paste (Ctrl-V)Menampal kod sumber yang telah disalin. Fungsi ini amat berkait dengan fungsi menyalin kerana sesuatu yang hendak ditampal perlu terlebih dahulu disalin.

Run (Shift-F5)Menjalankan aturcara yang telah dikodkan.

Debug (Alt-F5)Menyahpepijat atau memantau sebarang ralat aturcara.

Preferences (Alt-P+T)Pemilihan umum ketetapan (setting) keseluruhan Just BASIC. Ia juga boleh digunakan untuk menetapkan dan mengaktifkan fungsi-fungsi tertentu untuk disesuaikan dengan kemahuan pengaturcara.

The World of Just BASICMenu sambungan ke pautan lain yang berkaitan Just BASIC seperti ke internet, fail tutorial, fail bantuan dan sebagainya. Sesuai untuk mereka yang ingin membuat rujukan.

Help (Alt-H+L)Membuka fail bantuan (helpfile).

Release Note (Alt-H+P)Nota hasilan pembangunan Just BASIC.

16

Page 17: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

MENU TARIKBAWAH

Menu tarikbawah (pulldown) agak ganjil sedikit bunyinya jika diterjemah dalam bahasa Malaysia. Secara umumnya menu yang demikian terletak pada pepenjuru atas tetingkap sesebuah perisian. Ianya digelar sedemikian rupa kerana setiap kali kita klik pilihan pada menu tersebut, maka sub-menu yang menurun ke bawah akan dipaparkan.

Just BASIC Editor memiliki beberapa menu tarikbawah iaitu File, Edit, Run, Setup dan Help. Setiap satu pilihan akan memaparkan sub-pilihan lain untuk kegunaan tertentu dalam menulis dan menguruskan aturcara yang ditulis. Sekarang kita akan mengenalpasti pula fungsi-fungsi yang terdapat pada setiap menu tarikbawah berkenaan satu persatu.

File

Dibawah menu tarikbawah File, terbahagi kepada 3 bahagian yang dipisahkan oleh garisan pembahagi. Bahagian pertama terdiri daripada New BASIC Source File, Open…, Insert File…, Save, Save As… dan Print. Bahagian kedua pula adalah senarai terkini fail-fail kod aturcara yang pernah anda buka sebelum ini. Bahagian ketiga hanya memaparkan Exit iaitu pilihan keluar daripada Just BASIC.

Pilihan New Basic Source File adalah menyamai fungsi ikon New iaitu membuka fail baru aturcara (yang mempunyai sambungan nama fail .bas).

Pilihan Open… mempunyai fungsi yang sama dengan ikon Open iaitu membuka fail sedia ada yang terdapat dalam mana-mana direktori pada storan komputer.

Pilihan Insert File… pula berperanan menyelitkan semua kod Just BASIC dari fail sumber ke dalam aturcara yang sedang dibuka.

17

Page 18: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Pilihan Save sama dengan fungsi ikon Save iaitu menyimpan aturcara yang telah kita tulis ke dalam storan komputer.

Pilihan Save As… pula sama dengan fungsi Save iaitu digunakan untuk menyimpan aturcara tetapi dengan nama fail yang berlainan daripada yang sedia dibuka.

Pilihan Print sama dengan fungsi ikon Print iaitu mencetak kod yang ada ke pencetak.

Edit

Jika anda biasa dengan aplikasi berasaskan window yang lain, mungkin anda telah biasa dengan menu tarikbawah Edit ini. Fungsi Edit ini sangat membantu semasa proses penyuntingan aturcara. Ianya dibahagikan kepada empat bahagian. Bahagian pertama hanya memaparkan fungsi Undo yang bermakna membatalkan aktiviti terkini yang telah kita jalankan dan mengembalikan semula apa sahaja aktiviti yang telah dibuat pada langkah sebelumnya.

18

Page 19: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Fungsian dalam bahagian kedua iaitu Cut, Copy dan Paste adalah bersamaan dengan ikon-ikon yang telah diterangkan sebelum ini.

Fungsian dalam bahagian ketiga terdiri daripada Clear (memadamkan kod iaitu sama dengan tindakan/ peristiwa anda menekan butang delete pada papan kekunci), Select All (membuat pemilihan ke atas semua kod yang ditulis) dan Restore (mengembalikan semula kod yang telah dipadamkan).

Run

Menu tarikbawah Run pula amat unik dan terdiri daripada 4 bahagian. Bahagian pertama iaitu Run (Shift+F5) berfungsi untuk menjalankan aturcara seperti mana fungsian ikon Run. Fungsi Debug (Alt+F5) juga sama dengan fungsian ikon Debug seperti yang telah diterangkan sebelum ini iaitu nyahpepijat.

Bahagian kedua hanya terdiri daripada fungsian Kill BASIC Programs iaitu digunakan untuk memadamkan sebarang fail aturcara Just BASIC yang dikehendaki (fail yang mempunyai tanda .bas pada hujungnya).

Pada bahagian ketiga pula terdapat Make *.TKN File dan Run *.TKN File. Seperti mana bahasa pengaturcaraan Liberty BASIC, bahasa Just BASIC mempunyai keistimewaan tersendiri dengan keupayaan mengkompil aturcara ke bentuk token. Fail kod sumber yang ada pada Just BASIC adalah terdiri daripada fail teks ASCII (American Standard Code for Information Intercharge) dan nama fail tersebut berakhir dengan .bas. Fail binary yang ditoken berakhir dengan nama fail .tkn. Keunikan fail yang telah ditoken ini disebabkan ianya membolehkan aturcara dimulakan dengan lebih pantas, boleh diintegrasikan sebagai fail luaran aturcara lain dan boleh dipautkan sebagai fail boleh laku (standalone iaitu yang berakhir dengan .exe).

Fungsi Make*.TKN File untuk menghasilkan fail .tkn daripada fail .bas yang ada manakala fungsi Run *.TKN File pula untuk menjalankan mana-mana fail .tkn yang ada.

Menghasilkan Fail Executable

Anda mungkin telah menghasilkan sebuah aturcara yang lengkap dan ingin mengedarkan program yang anda hasilkan kepada orang lain yang tidak memiliki penyunting Just

19

Page 20: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

BASIC atau tidak mahu orang lain mengubah kod yang telah ditulis. Disinilah anda mampu menghasilkan standalone program (program yang boleh dijalankan secara terus dengan hanya klik pada ikon) yang boleh diedarkan pada sesiapa sahaja. Caranya amat ringkas iaitu dengan mengikuti langkah-langkah berikut:

Langkah 1

Buat satu direktori yang baru dan masukkan fail utama (yang berakhir dengan .bas) serta fail-fail pautan jika ada. Contohnya jika anda telah hasilkan sebuah aturcara dengan nama fail ‘kira.bas’ maka seelok-eloknya namakan direktori tersebut sebagai KIRA.

Langkah 2

Gunakan fungsian Make *.TKN File yang terdapat pada menu tarikbawah untuk mentokenkan fail utama tersebut (fail yang telah ditoken akan mempuyai nama yang sama tetapi dengan tanda .tkn). Contohnya jika fail bernama ‘kira.bas’ anda boleh mentokenkan fail tersebut dengan nama ‘kira.tkn’.

Langkah 3

Di dalam direktori utama Just BASIC terdapat fail-fail berikut iaitu:

vbas31w.sllvgui31w.sllvoflr31w.sllvthk31w.dllvtk1631w.dllvtk3231w.dllvvm31w.dllvvmt31w.dllJBRUN101.exe

Kesemua fail ini perlu disalin dan disimpan ke dalam direktori yang telah anda bina tadi. Cuba perhatikan satu fail yang dinamakan JBRUN101.exe, anda perlu menamakan semula (rename) fail tersebut dengan nama yang sama dengan fail .tkn tadi. Sebagai contoh, anda perlu menyalin kesemua fail yang dinayatakan tadi ke dalam direktori KIRA terlebih dahulu. Seterusnya menamakan fail JBRUN101.exe kepada nama baru iaitu kira.exe.

Langkah 4

Berikutnya, uji program yang baru sahaja anda bina contohnya dengan klik pada ikon Just BASIC yang bernama kira.exe dalam direktori KIRA. Anda tidak perlu membuka bahasa Just BASIC untuk menjalankan program ini. Sekiranya tiada apa-apa masalah semasa mengikuti langkah tadi, maka anda telah berjaya menghasilkan sebuah standalone program.

20

Page 21: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Bahagian keempat pula hanya mengandungi pilihan 1) FreeForm-J GUI Editor iaitu berfungsi untuk menjalankan sebuah program pautan tkn yang telah disetkan. Program yang diberi nama FreeForm-J ini adalah program sampingan yang didatangkan bersama pakej bahasa Just BASIC yang digunakan untuk memudahkan tugas penyuntingan melibatkan antaramuka pengguna grafik seperti menghasilkan window secara visual. Anda boleh mengubahsuai program ini mengikut citarasa sekiranya telah mahir dengan aturcara bahasa Just BASIC.

Setup

Menu tarikbawah Setup pula adalah sebagai fungsian sampingan yang digunakan untuk mensetkan beberapa pilihan yang disesuaikan untuk keselesaan pengaturcara. Setup terdiri daripada Preferences, Editor Font, Printer Font dan External Program. Fungsi Preferences adalah sepertimana fungsi ikon Preferences yang telah diterangkan sebelum ini. Editor Font pula berperanan untuk mengubahsuai tulisan untuk aturcara sama ada dari segi jenis, gaya dan saiz tulisan. Printer Font pula adalah setting tulisan yang hendak digunakan sebagai output kepada pencetak.

Fungsi External Programs adalah untuk menyelenggara program luaran yang hendak dipautkan pada menu tarikbawah Run pada bahagian keempat. Jika kita perhatikan sebelum ini, terdapat satu program luar yang dipaut pada menu berkenaan iaitu FreeForm-J. Anda boleh menambah dan membatalkan program-program pautan lain sekiranya ada asalkan ianya adalah program yang telah ditoken iaitu memiliki sambungan nama fail .tkn.

Help

Sebuah perisian yang baik memiliki fail-fail bantuan yang tersendiri untuk membantu pengguna yang baru dan sebagai bahan rujukan. Bagitu juga Just BASIC yang mempunyai sokongan menu tarikbawah Help yang sangat berguna.

21

Page 22: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Just BASIC Help akan membuka pautan fail bantuan (helpfile) yang disertakan bersama. Begitu juga Just BASIC Tutorial akan membuka pautan fail tutorial yang amat berguna kepada pengguna baru. Release notes merupakan nota atau catatan pengedaran bahasa Just BASIC dan maklumat-maklumat ralat yang telah dibaiki. Online Resources, Just BASIC News dan Just BASIC Links adalah pautan ke internet iaitu ke laman-laman web yang berkaitan bahasa berkenaan. Banyak maklumat berguna boleh diperolehi pada laman-laman web berkenaan termasuklah daripada komuniti yang menggunakan bahasa yang sama diseluruh dunia. Disini anda boleh memperolehi tips dan kod-kod yang telah dihasilkan serta panduan menulis kod aturcara yang baik.

About Just BASIC adalah maklumat umum bahasa Just BASIC. Maklumat seperti jenis lessen iaitu Freeware (percuma digunakan oleh sesiapa sahaja dan tiada tuntutan bayaran daripada pihak pemegang hakcipta jika menggunakannya, namun pengguna tidak dibenarkan mengubah struktur asal sesebuah program) dan juga dipaparkan hakcipta pihak yang bertanggungjawab membangunkan bahasa ini iaitu Shoptalk Systems. Selain itu anda boleh melawat laman web rasmi Just BASIC iaitu di http://www.justbasic.com

Tips RingkasMENGESAN RALAT

Sekiranya anda mengalami ralat (error), Just BASIC akan secara automatiknya membina sebuah fail khas di dalam direktori yang sama dengan lokasi program asal anda iaitu fail error.txt. Anda boleh membuka fail ini dengan Ms Notepad kerana tujuan ia dibina ialah untuk melaporkan jenis ralat yang telah dilakukan semasa aturcara sedang dijalankan. Ini adalah fungsi berguna untuk mengesan sebarang masalah dan rujukan penting dalam sesebuah aturcara.

22

Page 23: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

ASAS PENGATURCARAAN JUST BASIC

Memulakan pemahaman asas bagaimana menulis aturcara dengan bahasa pengaturcaraan Just BASIC. Pengenalan konsep kata simpanan bagi arahan, fungsian dan pembolehubah dalaman. Memperkenalkan konsep pemalar, pembolehubah berangka dan pembolehubah rentetan. Bagaimana operasi matematik dilakukan dalam aturcara akan mendedahkan kaedah pengendalian operasi aritmetik dan pengendalian logik seperti AND, OR, XOR dan NOT. Turut menerangkan sistem modular dalam aturcara dan pernyataan-pernyataan gelungan penting iaitu For...Next, While…Wend dan If…Then. Konsep penjanaan nombor rawak juga akan dibincangkan dalam bahagian ini.

23

Page 24: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

ASAS PENGATURCARAAN JUST BASIC

Adalah menjadi kebiasaan dalam memperkenalkan sesebuah aturcara, seseorang penulis akan menunjukkan satu cebisan aturcara yang boleh memaparkan perkataan “Hello World” sebagai output pada skrin komputer. Bahasa Just BASIC hanya memerlukan satu arahan yang amat ringkas untuk memaparkan apa yang kita kehendaki. Mari kita cuba hasilkan satu ayat “HELLO DUNIA” (elok juga gunakan bahasa Malaysia memandangkan buku ini ditulis dalam bahasa Malaysia) sebagai projek pertama.

Dalam Penyunting Just BASIC anda, klik dahulu pada butang ikon New dan cuba taipkan hanya kod ringkas berikut.

print “HELLO DUNIA”

Cuba anda klik pula ikon Run untuk menjalankan aturcara yang telah ditulis tadi. Kita akan dapati Just BASIC akan memaparkan satu lapisan tetingkap baru seperti berikut. Ianya dinamakan sebagai tetingkap utama (main window) kerana ia memaparkan output aturcara yang anda tulis. Anda juga boleh menukar saiz main window yang dipaparkan semasa menjalankan aturcara dengan mengubahsuai setting pada Preference.

24

Page 25: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Apa yang dipaparkan pada main window ialah perkataan HELLO DUNIA. Jadi inilah program ringkas pertama anda dengan bahasa Just BASIC (…sangat mudah, bukan!). Mari kita analisa apa sebenarnya yang terjadi dan apakah maksud kod yang kita tulis tadi.

Jika anda perasan akan warna-warna berbeza secara automatik pada font yang anda taip (perkataan print bewarna biru manakala perkataan “HELLO DUNIA” bewarna hijau pula). Jangan khuatir kerana ianya adalah fungsi dalaman pada penyunting Just BASIC untuk memudahkan pengaturcara membezakan fungsi setiap kod yang kita tulis.

Perkataan print adalah salah satu daripada kata arahan dalam Just BASIC yang berfungsi memaparkan apa sahaja perkataan yang dimasukkan dalam tanda “ ” selepasnya (ia perlu mematuhi susunan arahan yang telah ditetapkan). Dalam aturcara tadi print “HELLO DUNIA” akan mengarahkan kata kunci Just BASIC mencetak perkataan HELLO DUNIA pada tetingkap utama jika dijalankan.

KATA SIMPANAN

Seperti mana arahan print tadi, Just BASIC memiliki lain-lain kata arahan (command) yang masing-masing memiliki susunan arahan (sintaks) tertentu yang mengandungi nama fungsian (function) dan pembolehubah (variables) tertentu. Kesemua ini dinamai sebagai kata simpanan atau kata kunci (reserve word) kerana ia tidak boleh digunakan sebagai nama pembolehubah kerana fungsinya telah ditetapkan oleh Just BASIC. Anda boleh gunakan lain-lain nama pembolehubah yang bersesuaian dengan aturcara yang ditulis (kita boleh gunakan bahasa Malaysia juga).

Senarai kata simpanan adalah seperti berikut:

AND, APPEND, AS, BEEP, BMPBUTTON, BMPSAVE, BOOLEAN, BUTTON, BYREF, CALL, CASE, CHECKBOX, CLOSE, CLS, COMBOBOX, CONFIRM, DATA, DIALOG, DIM, DO, DUMP, ELSE, END, ERROR, EXIT, FIELD, FILEDIALOG, FILES, FOR, FUNCTION, GET, GLOBAL, GOSUB, GOTO, GRAPHICBOX, GRAPHICS, GROUPBOX, IF, INPUT, KILL, LET, LINE, LISTBOX, LOADBMP, LONG, LOOP, LPRINT, MAINWIN, MAPHANDLE, MENU, NAME, NEXT, NOMAINWIN, NONE, NOTICE, ON, ONCOMERROR, OR, OPEN, OUTPUT, PLAYMIDI, PLAYWAVE, PRINT, PROMPT, PUT, RADIOBUTTON, RANDOM, RANDOMIZE, READ, READJOYSTICK, REDIM, REM, RESTORE, RETURN, RUN, SCAN, SELECT, STATICTEXT, STOP, STOPMIDI, SUB, TEXT, TEXTBOX, TEXTEDITOR, THEN, TIMER, UNLOADBMP, UNTIL, WAIT, WINDOW, WEND, WHILE, WORD, XOR

Senarai nama fungsian adalah seperti berikut:

ABS(, ACS(, ASC(, ASN(, ATN(, CHR$(, COS(, DATE$(, EOF(, EXP(, INPUT$(, INSTR(, INT(, LEFT$(, LEN(, LOF(, LOG(, LOWER$(, MIDIPOS(, MID$(, MKDIR(,

25

Page 26: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

NOT(, RIGHT$(, RMDIR(, RND(, SIN(, SPACE$(, SQR(, STR$(, TAB(, TAN(, TIME$(, TRIM$(, TXCOUNT(, UPPER$(, USING(, VAL(, WORD$(

Senarai nama pembolehubah dalaman adalah seperti berikut:

BackgroundColor$, ComboboxColor$, CommandLine$, DefaultDir$, DisplayHeight, DisplayWidth, Drives$, Err, Err$, ForegroundColor$, Joy1x, Joy1y, Joy1z, Joy1button1, Joy1button2, Joy2x, Joy2y, Joy2z, Joy2button1, Joy2button2, ListboxColor$, Platform$, PrinterFont$, TextboxColor$, TexteditorColor$, Version$, WindowHeight, WindowWidth, UpperLeftX, UpperLeftY

Anda tidak perlu bimbang untuk mengingati kesemua kata simpanan yang disenaraikan sebelum ini kerana kita boleh merujuk pada bila-bila masa dalam Helpfile. Dalam bahagian-bahagian berikutnya akan menerangkan kata simpanan yang kerap digunakan dalam menghasilkan sebuah aturcara. Kata arahan adalah pembentuk utama sesebuah kod aturcara yang memiliki arahan-arahan tersendiri. Nama fungsian, kadang kala boleh melengkapkan kod yang turut dipautkan kepada kata arahan.

Untuk memahami lebih lanjut akan perkara ini, kita akan meneliti setiap arahan yang digunakan dalam bahasa pengaturcaraan ini. Sebagai hobi, kita tidak seharusnya memberi tekanan terhadap diri kita dalam cuba memahami kod-kod yang ada, sebaliknya kita cuba mempelajarinya langkah demi langkah. Ini secara tidak langsung akan memberikan kita keseronokan dan tidak mudah bosan apabila kita melihat hasilnya.

Artikel RingkasMENGAPA MEMILIH JUST BASIC?

Soalan lazim ini pasti akan ditanya oleh sesiapa sahaja yang baru pertama kali mendengar kewujudan bahasa pengaturcaraan ini. Sememangnya ia tidaklah dapat menandingi bahasa pengaturcaraan komersil yang memiliki harga yang sangat mahal dalam pasaran. Apa istimewanya bahasa ini? Sebelum mengupas lebih lanjut, perlu sekali lagi diingatkan bahawa Just BASIC adalah subset kepada bahasa asalnya iaitu Liberty BASIC. Ianya adalah implementasi PERCUMA bahasa pengaturcaraan komersil Liberty BASIC untuk mereka yang mula untuk berjinak-jinak dalam dunia pengaturcaraan.

Carl Gundel iaitu pembina Just BASIC pernah menyatakan bahawa pada hari ini terdapat banyak bahasa pengaturcaraan yang sangat rumit bagi mereka yang jarang membuat aturcara. Kebanyakan bahasa ini adalah dibina untuk mereka yang sememangnya setiap hari bekerja menghasilkan aturcara, oleh itu kerumitan ini menjadi kebiasaan kepada mereka. Ini tidak terdapat pada Just BASIC kerana cara penyuntingan yang mudah, ringkas dan kemas akan memudahkan penulisan aturcara terutama mereka yang bergiat secara sambilan atau sebagai hobi. Tambahan pula pengguna bebas menggunakan bahasa pengaturcaraan ini sama ada untuk tujuan persendirian mahu pun untuk tujuan komersial.

26

Page 27: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

MENGENALI PEMALAR DAN PEMBOLEHUBAH

Apakah sebenarnya dikatakan sebagai pemalar dan pembolehubah (variable)? Saya percaya sejak tingkatan satu dalam sekolah menengah lagi, kita telah didedahkan dengan fungsi-fungsi Algebra dalam subjek Matematik. Sememangnya tidak sia-sia guru yang telah mengajar kita tentang bagaimana menggunakan rumus-rumus Algebra (dan saya juga berharap anda boleh memahami konsep yang sama dalam bahasa Just BASIC). Mari kita ingat semula dan aplikasikan satu daripada konsep Matematik yang popular ini.

Untuk permulaan, cuba kita melihat satu persatu konsep yang ada dalam Just BASIC ini iaitu Pemalar, Pembolehubah Berangka dan Pembolehubah Rentetan.

PEMALAR

Katakan x = 1 dan y = 2, maka jika anda disuruh oleh guru anda (mungkin guru yang garang!) menyelesaikan x + y sudah pasti agak mudah bukan dan anda pasti mendapat markah penuh nanti. Jadi jawapannya ialah 3 iaitu hasil tambah 1 + 2 yang masing-masing diwakili oleh huruf x dan y. Perwakilan pada huruf x dan y inilah dinamakan sebagai pemalar. Saya harap anda faham kerana kita akan gunakan konsep sama dalam bahasa Just BASIC nanti (pasti faham sebab anda telah pun lulus ujian matematik guru yang garang tersebut…).

Mari kita guna semula konsep tersebut tetapi kali ini cuba taipkan kod berikut dalam Penyunting Just BASIC anda dan jalankan aturcara tersebut untuk melihat hasilnya.

let x=1let y=2print x+y

Paparan pada tetingkap utama pastilah angka 3 bukan (jika ralat dipaparkan pula, cuba pastikan kod yang ditulis betul-betul sama seperti contoh tersebut). Apa sebenarnya yang berlaku ialah kita memberitahu Just BASIC bahawa kita telah istiharkan x sama dengan angka 1 manakala y sama dengan angka 2. Sebab itulah bila arahan print x+y dijalankan akan menghasilkan paparan angka 3. Arahan let tersebut boleh juga tidak disertakan kerana Just BASIC akan menganggapnya sebagai peristiharan walaupun tidak ditaip. Cuba kita ubahsuai sedikit kod tersebut seperti dibawah:

nombor1 = 1nombor2 = 2print nombor1 + nombor2

Saya pasti jika anda menjalankan aturcara tersebut, hasil yang sama akan dipaparkan dalam tetingkap utama. Oleh sebab pemalar telah kita namakan nombor1 dan nombor2 masing-masing, maka Just BASIC tetap menjalankan pengiraan yang ditetapkan tadi dan jawapan yang sama akan diperolehi. Kita cuba pula aturcara ringkas berikut.

27

Page 28: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

nombor1 = 1print nombor1 + 2

Cuba jalankan aturcara ini dan pasti hasilnya juga 3 bukan. Kali ini aturcara yang kita tulis adalah lebih pendek dan ringkas dari yang terdahulu. Pemalar boleh digantikan dengan nombor yang diwakilinya jika anda mahu. Oleh yang demikian, terdapat fleksibiliti dalam mengolah aturcara bergantung kepada penggunaannya. Kesimpulannya ialah pemalar boleh ditulis dalam bentuk perkataan atau kombinasi perkataan dengan lain-lain aksara (character) yang dibenarkan oleh Just BASIC. Ia merupakan lokasi simpanan data yang tidak berubah.

Untuk pengetahuan anda, terdapat pelbagai jenis aksara (character) seperti yang terdapat pada papan kekunci anda ianya boleh terdiri daripada:

(a) Huruf-huruf sama seperti yang pada papan kekunci anda (huruf kecil dan besar)(b) Nombor-nombor iaitu 0 1 2 3 4 5 6 7 8 9(c) Simbol-simbol khas seperti , . < > / ? ; : [ ] { } ` ~ ! @ # $ % ^ & * ( ) - + \ dan |

PEMBOLEHUBAH BERANGKA

Sekarang kita telah memahami mengapa guru matematik kita bersusah payah mengajar Algebra bukan. Kali ini kita akan mendalami pula konsep yang dinamakan sebagai pembolehubah berangka. Pembolehubah jika diperhati pada namanya pastikan kita mengagak maknanya iaitu sesuatu yang dibolehkan untuk diubah.

Cuba kita gunakan pemahaman tadi dengan mencubanya. Taipkan pula contoh berikut dalam penyunting Just BASIC anda. Pastikan anda memperbaharui dengan klik pada ikon New terlebih dahulu dan tidak perlulah menyimpan (save) aturcara sebelumnya.

input “Masukkan panjang segiempat: ” ; panjanginput “Masukkan lebar segiempat: ” ; lebarluas = panjang * lebarprint “Luas segiempat ialah: ” ; luas

Cuba anda jalankan aturcara tersebut dan pastinya soalan pertama dipaparkan pada main window anda seperti berikut.

28

Page 29: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Cuba anda masukkan angka misalnya nombor 10 diikuti dengan menekam butang ‘Enter’. Kemudian soalan kedua pula dipaparkan mengkehendaki anda masukkan lebar segiempat pula. Jadi masukkan nilai lebar misalnya 20 diikuti menekan Enter pada papan kekunci anda. Selepas itu akan dipaparkan hasil input anda tadi seperti berikut.

Sudah pasti guru matematik anda akan tersenyum gembira bila anda memberikan jawapan yang tepat. Mari kita lihat apa sebenarnya yang dijalankan oleh aturcara tersebut. Arahan input digunakan untuk menggesa pengguna memasukkan maklumat manakala pembolehubah yang dinamakan sebagai panjang dan lebar dikenali sebagai pembolehubah berangka kerana ia digunakan untuk menyimpan nilai angka yang dimasukkan pengguna. Kesimpulannya ialah ia dinamakan sebagai pembolehubah berangka kerana ia digunakan untuk menyimpan nombor yang mempunyai nilai.

Kita sedia maklum bahawa formula bagi mencari luas segiempat ialah panjang darab lebar. Cuba perhatikan baris ketiga dalam aturcara tersebut menggunakan tanda * sebagai menggantikan operasi darab. Oleh kerana papan kekunci komputer anda tidak memiliki symbol darab maka digantikan dengan tanda * (atau dipanggil asterisk). Selain operasi darab, untuk lain-lain pengiraan, simbol-simbol berikut digunakan untuk mengendali ungkapan aritmetik.

+ untuk operasi tambah 8 + 2 akan ditulis sebagai 8 + 2 dengan jawapan 10- untuk operasi tolak 8 – 2 akan ditulis sebagai 8 – 2 dengan jawapan 6* untuk operasi darab 8 2 akan ditulis sebagai 8 * 2 dengan jawapan 16/ untuk operasi bahagi 8 ÷ 2 akan ditulis sebagai 8 / 2 dengan jawapan 4^ untuk operasi kuasa 82 akan ditulis sebagai 8 ^ 2 dengan jawapan 64

PEMBOLEHUBAH RENTETAN

Apa itu pembolehubah rentetan? Jika anda telah memahami pembolehubah berangka sebagai penyimpan nombor dalam ingatan komputer, pembolehubah rentetan pula berfungsi menyimpan perkataan. Pembolehubah rentetan mempunyai nama yang berakhir dengan tanda $. Seperti mana pembolehubah berangka, ianya boleh mengandungi perkataan dan lain-lain aksara bukan nombor atau kombinasi antaranya (asalkan berakhir dengan tanda $). Cuba perhatikan aturcara ringkas berikut.

29

Page 30: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

input “Siapakah nama anda? ” ; nama$input “Apakah nama kucing anda? ” ; kucing$print “Anda bernama ” ; nama$ ; “ dan kucing anda bernama ”; kucing$

Jalankan aturcara tersebut dan jawap gesaan yang ditanya iaitu nama anda dan juga nama kucing anda (jika tak ada kucing, boleh namakan lain-lain binatang peliharaan yang anda suka). Dalam contoh ini, saya akan namakan diri saya sebagai Ali dan nama kucing pula Tompok. Hasilnya seperti ditunjukkan berikut.

Apa yang telah kita jalankan tadi adalah sebenarnya penggunaan pembolehubah rentetan. Terdapat pembolehubah rentetan yang dinamakan sebagai nama$ dan kucing$ digunakan bersama arahan input. Aturcara berkenaan menggabungkan kedua-dua pembolehubah rentetan berkenaan dengan tanda ‘;’ sebagai penghubung.

Selain contoh diatas, anda boleh menggabungkan pembolehubah rentetan, pembolehubah berangka dan juga pemalar dalam satu aturcara bergantung kepada penggunaannya.

LANJUTAN PEMALAR DAN PEMBOLEHUBAH

Setelah memahami konsep asas pemalar dan pembolehubah, mari kita cuba pula hasilkan program pengiraan. Kali ini kita rancang dahulu apa yang hendak dikira dan bagaimana proses ini dijalankan. Oleh kerana dalam kehidupan seharian, kita berdepan dengan cukai misalnya jika kita berbelanja di kedai-kedai makanan segera, pasti ada cukai yang dikenakan tanpa kita sedari. Sekarang kita cuba mengira berapa cukai yang dikenakan pada kita dengan proses ringkas berikut:

(a) Menanyakan berapa ringgit dan sen harga barang yang dibeli.(b) Mengira jumlah 5% cukai yang dikenakan ke atas barang yang dibeli tadi.(c) Memaparkan jumlah yang diperolehi hasil pengiraan.

(a) INPUT

Kita memerlukan arahan untuk komputer mendapatkan maklumat daripada pengguna. Dalam Just BASIC, terdapat pelbagai cara digunakan untuk mendapatkan interaksi pengguna. Kali ini sekali lagi kita gunakan arahan input dalam program nanti iaitu dengan susunan arahan berikut:

30

Page 31: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

input “Taipkan jumlah dalam ringgit dan sen?” ; jumlah

Baris kod tersebut akan memaparkan perkataan “Taipkan jumlah dalam ringgit dan sen?”, dan komputer akan berhenti seketika supaya pengguna dapat memasukkan data. Bila kekunci Enter ditekan, maklumat yang ditaip akan disimpan dalam pembolehubah berangka jumlah.

(b) PENGIRAAN

Kita perlu membuat pengiraan cukai yang dikenakan pada jumlah yang dimasukkan pengguna. Jadi formula pengiraan cukai 5% atas jumlah tadi seperti berikut:

let cukai = jumlah * 0.05

Baris kod ini menujukkan satu pembolehubah baru iaitu cukai untuk memegang nilai yang dijanakan hasil pengiraan pembolehubah jumlah didarabkan dengan 0.05 (bersamaan dengan 5%). Ianya akan memberitahu Just BASIC supaya membuat pengiraan aritmetik selepas tanda = (atau persamaan).

(c) OUTPUT

Sekarang kita akan paparkan pula hasil pengiraan cukai tadi dengan arahan print. Cuba perhatikan pula baris kod berikut:

print “Cukai ialah sebanyak :” ; cukai ; “. Jumlah keseluruhan ialah: ” ; cukai + jumlah

Cuba kita perhatikan pula setiap satu cebisan kod tadi yang dipisahkan oleh tanda ; (semi kolon). Perkataan dalam tanda “ ” akan memaparkan apa yang ada didalamnya tanpa apa-apa perubahan. Pembolehubah cukai akan memaparkan hasil pengiraannya. Operasi aritmetik cukai + jumlah pula akan memaparkan hasil tambah kedua-dua nilai pembolehubah tersebut.

Kini cuba uji ketiga-tiga baris kod ini dalam Penyunting Just BASIC dan jalankannya dengan klik pada ikon Run. Kod sepenuhnya adalah seperti berikut:

input “Taipkan jumlah dalam ringgit dan sen?” ; jumlahlet cukai = jumlah * 0.05print “Cukai ialah sebanyak :” ; cukai ; “. Jumlah keseluruhan ialah: ” ; cukai + jumlah

Katakan saya ingin mengira cukai 5% yang dikenakan selepas membeli barangan dengan harga 8.40. Jadi paparan program anda mungkin seperti berikut:

31

Page 32: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Hasil daripada aturcara ini, kini dapatlah saya mengetahui cukai yang dikenakan oleh kedai-kedai makanan segera yang selalu saya dikunjungi. Patutlah setiap kali membeli barangan, ada syiling sen yang banyak diberikan. Dalam tutorial ringkas ini juga anda telah mempelajari fungsi-fungsi pemalar dan pembolehubah berangka dan bagaimana ia diaplikasikan dalam sebuah program ringkas tetapi berguna.

Artikel RingkasKUASAI HELAH PENYUNTINGAN DARIPADA SUMBER LAIN

Seringkali pengaturcara berhadapan dengan kebuntuan akibat tidak adanya fungsi yang sesuai dalam sesebuah bahasa pengaturcaraan untuk melakukan tugas-tugas tertentu. Ini kadang kala menjadi pendorong sesebuah aturcara itu diabaikan dan tidak diteruskan pembangunannya. Perkara sebegini amat merugikan sama ada dari segi masa dan tenaga yang telah dicurahkan pada awalnya. Setiap bahasa pengaturcaraan memiliki had-had yang tersendiri dan tidak semua had tersebut mustahil dilakukan. Mungkin dengan hanya sedikit helah, kita boleh menyelesaikan masalah yang dihadapi.

Terdapat banyak sumber rujukan di dalam internet sama ada dalam bentuk artikel, perbincangan forum, laman ensiklopedia, muat turun kod-kod sumber percuma dan juga laman-laman web berkaitan. Just BASIC memiliki satu laman sembang atau forum yang amat aktif dan dikalangan mereka terdiri daripada pengaturcara-pengaturcara yang berpengalaman dari serata pelusuk dunia. Perkara paling mustahak ialah dengan bertanya jika anda tidak faham akan sesuatu kaedah untuk membuat kod. Kadang kala buah fikiran rakan-rakan yang lain akan turut menyumbang idea yang baru selain berkongsi maklumat dan kod aturcara. Malah ramai di kalangan ahli yang berpengalaman turut belajar sambil memberi tunjuk ajar. Saya masih ingat salah satu daripada mesej yang dihantar oleh salah seorang ahli yang berpengalaman luas, semasa mempelajari Just BASIC iaitu:

‘Adalah memang benar, salah satu daripada cara mempelajari sesuatu pengaturcaraan ialah dengan mengajar sesuatu kepada orang lain.’

32

Page 33: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

MODULAR DALAM ATURCARA

Konsep modular dalam pengaturcaraan amat penting kerana keupayaan memecahkan seluruh aturcara kepada bahagian-bahagian atau cawangan-cawangan lain. Di dalam sebuah program yang besar, aturcara-aturcara yang rumit dan berulang perlu dibahagikan kepada cebisan-cebisan yang lebih kecil untuk memudahkan pengarangan aturcara. Bahagian-bahagian ini boleh dihubungkan apabila perlu dengan arahan-arahan tertentu yang ada dalam bahasa pengaturcaraan Just BASIC itu sendiri (bahasa pengaturcaraan lain yang tertentu juga memiliki fungsi yang sama).

Di dalam sesebuah program, kadang-kala kita hendak mengulang semula proses dari awal dan mungkin juga kita mahukan ulangan lebih daripada sekali. Arahan yang digunakan untuk melakukannya dipanggil GOTO.

ARAHAN GOTO

Sememangnya jika dilihat perkata goto (bermakna ‘pergi ke’ jika diterjemahkan dalam bahasa Malaysia) memberikan arahan supaya pergi ke sesuatu tempat. Ini tidak mencukupi kerana perlu adanya lokasi yang hendak ditujui. Ini samalah juga dengan anda jika hendak ke sesuatu tempat dengan kereta mestilah tahu arah yang betul dan tujuan anda ke lokasi tersebut (jika tidak tersesat jalan…).

Mekanisma yang digunakan dalam Just BASIC untuk menandakan tempat dimana kita boleh ‘pergi ke’ (goto) dinamakan sebagai penanda cawangan (branch label). Ianya seolah-olah senarai alamat kerana jika anda hendak mengirim surat kepada orang-orang tertentu pastilah ada alamat (jika anda mengirim surat tanpa alamat, pasti posmen geleng kepala agaknya…). Konsep sama digunakan dalam Just BASIC untuk menandakan lokasi yang hendak ‘pergi ke’ tadi.

Dalam bahasa Just BASIC, anda boleh menggunakan nombor integer yang sah atau pun menggunakan perkataan atau gabungannya dengan nombor (alphanumeric) sebagai nama penanda cawangan (branch label):

(a) Penggunaan penanda cawangan integer contohnya;

10 50 150 500 900 3500 dan sebagainya…

(b) Penggunaan penanda cawangan alphanumeric contohnya;

[mula] [ulangBalik] [dapatJawapan] dan sebagainya…

Cara menamakan penanda cawangan ini juga perlulah mudah difahami. Ruangan kosong (space) tidak dibenarkan sebagai nama penanda cawangan ini. Oleh itu digalakkan menggunakan huruf besar untuk setiap perkataan baru yang bersambung supaya

33

Page 34: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

memudahkan pembacaan. Sebagai contoh [dapatnilaibaru] agak mudah dibaca jika ditulis sebagai [dapatNilaiBaru].

Sekarang mari kita gunakan goto dalam aturcara yang telah kita hasilkan sebelum ini. Salin baris-baris kod berikut ke dalam Penyunting Just BASIC. Jalankan aturcara tersebut dan perhatikan apakah yang berlaku.

[mula]

input “Siapakah nama anda? ” ; nama$input “Apakah nama kucing anda? ” ; kucing$print “Anda bernama ” ; nama$ ; “ dan kucing anda bernama ”; kucing$

goto [mula]

Kita gunakan semula aturcara berkenaan nama kucing tadi dan ubahsuai sedikit dengan membuat satu penanda cawangan yang diberi nama [mula]. Perhatikan pada baris akhir arahan goto [mula] digunakan. Sekiranya anda menjalankan aturcara ini, hasil yang sama akan diperolehi iaitu input pengguna supaya memasukkan nama anda dan kucing anda. Namun apa yang berbeza ialah ianya berulang tanpa had dan anda hanya boleh menutup program ini dengan klik pada butang tutup (ikon bertanda X) pada penjuru atas sebelah kanan tetingkap. Format aturcara yang baru kita jalankan tadi dinamakan sebagai gegelung tak bersyarat (unconditional loop) kerana ianya berterusan ‘pergi ke’ cabang penanda cawangan [mula].

PERNYATAAN FOR…NEXT

Gelungan yang digunakan dalam arahan goto sebelum ini adalah yang tidak terkawal dan ianya berterusan tanpa had. Oleh itu, salah satu pernyataan untuk membuat lelaran yang terkawal ialah dengan pernyataan FOR…NEXT. Mari kita perhatikan bagaimana stuktur lelaran ini berfungsi.

for angka = 1 to 10print angkanext angka

Jalankan aturcara ringkas tersebut dan apakah yang dipaparkan dalam tetingkap utama. Paparan yang seperti berikut mungkin kelihatan.

34

Page 35: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Baris pertama dalam kod anda berfungsi memasukkan nilai 1 ke dalam pembolehubah angka.

Baris kedua kod tersebut pula berfungsi memaparkan nombor yang dipegang oleh pembolehubah angka tadi.

Baris ketiga pula akan memberi perintah ulangan menjalankan fungsi baris kod pertama tetapi nilai dalam pembolehubah angka adalah 2. Proses yang sama akan berulangan sehingga pembolehubah angka mengandungi nilai 10 barulah gelungan ini dihentikan.

Kesimpulan disini ialah Just BASIC akan menguji nilai dalam pembolehubah angka terlebih dahulu sebelum meneruskan jujukan. Oleh kerana nilai pembolehubah sentiasa meningkat sebanyak 1 maka selepas sepuluh kali gelungan, pastinya angka akan mencecah nilai 10.

Peningkatan nilai pembolehubah boleh juga ditukar kepada nilai lain misalnya 2 dengan arahan STEP. Cuba ubahsuai baris pertama kod tadi dengan yang berikut:

for angka = 1 to 10 step 2

35

Page 36: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Paparan seperti diatas akan dihasilkan bukan. Ini disebabkan step 2 akan menyebabkan langkau sebanyak 2 angka dalam pernyataan FOR…NEXT tadi. Mari cuba pula ubahsuai baris pertama kod dengan dengan yang berikut pula dan jalankan aturcara tersebut.

for angka = 10 to 1 step –2

Paparan tersebut menunjukkan bahawa kita juga boleh menyusutkan nilai pembolehubah dengan penggunaan negatif. Oleh kerana penyusutan akan berkurangan, jadi kita perlu memberi nilai pembolehubah dari yang besar kepada kecil.

Secara umumnya, format susunan (syntak) biasa pernyataan ini adalah seperti berikut:

FOR syarat pembolehubah…lain-lain kod…NEXT pembolehubah

PERNYATAAN WHILE…WEND

Pernyataan WHILE…WEND digunakan untuk kawalan permulaan dan penamat ke atas gegelung. Sekarang mari kita cuba perhatikan pula contoh kod aturcara ringkas berikut dan jalankannya.

while kira < 5input "Masukkan nama? "; nama$kira = kira + 1wend

Baris pertama kod berkenaan memberikan arahan logic pembolehubah kepada pernyataan while. Ianya bermaksud sekiranya pembolehubah kira kurang daripada 5, maka teruskan gelungan dan jalankan aturcara dalam gelungan tersebut.

36

Page 37: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Pada baris kedua pula satu kod ringkas input yang menggesa pengguna memasukkan nama dan diwakili oleh pembolehubah rentetan nama$.

Baris ketiga pula adalah pembolehubah kira yang menjalankan penambahan sebanyak 1 setiap kali gelungan dijalankan. Perhatikan kod kira = kira + 1 yang bermakna pembolehubah baru kira adalah hasil daripada operasi tambah kira + 1 dari gelungan yang sebelumnya.

Baris keempat pula sebagai penutup gelungan tadi. Apabila anda menjalankan aturcara tersebut, masukkan nama seperti yang digesa. Kita akan dapati pada tetingkap utama akan menanyakan input sebanyak 5 kali (saya akan gunakan nama-nama seperti Ali, Ahmad, Aman, Akmal dan Alias sebagai contoh input). Paparan adalah seperti berikut:

Secara umumnya format susunan pernyataan (syntak) yang biasa digunakan bagi pernyataan WHILE…WEND adalah seperti berikut:

WHILE syarat...lain-lain kod…WEND

PERNYATAAN IF…THEN

Salah satu pernyataan yang paling berkuasa dalam bahasa Just BASIC ialah pernyataan IF…THEN (jika … kemudian). Ianya digunakan untuk mengendalikan logic aturcara dan memberi arahan selanjutnya (sama ada ke lokasi penanda cawangan atau membuat pengiraan aritmetik) jika komputer mendapati logik tersebut dipatuhi.

Kali ini kita cuba mengawal aturcara dengan pernyataan IF…THEN. Katakan anda ingin membuat aturcara mengira jumlah keuntungan 10% hasil daripada amaun pelaburan yang diberikan oleh pengguna. Dalam program tersebut juga akan menyatakan, jika mahukan bantuan hanya perlu menekan butang Enter. Perhatikan contoh yang berikut:

37

Page 38: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

[mula]print “Masukkan amaun pelaburan anda?”input “(Tekan ‘Enter’ untuk bantuan)”; amaunif amaun = 0 then goto [bantuan]let untung = amaun * 0.10print “Jumlah keuntungan ialah :”; untunggoto [mula]

[bantuan]print “”print “Program ini untuk mengira jumlah”print “keuntungan yang diperolehi hasil”print “pelaburan anda. Keuntungan ialah”print “sebanyak 10% daripada modal.”goto [mula]

Dalam program di atas, terdapat 2 cabang penanda cawangan iaitu [mula] dan [bantuan]. Pada cabang penanda cawangan [mula], terdapat pernyataan if amaun = 0 then goto [bantuan] yang bermakna jika input pengguna sama dengan 0 maka akan dihantar ke cabang penanda cawangan [bantuan]. Sekiranya pengguna tidak menaip sebarang amaun dan terus menekan butang Enter, Just BASIC akan mengenalpasti amaun sama dengan sifar. Oleh yang demikian, pernyataan kawalan if…then akan dilaksanakan kerana memenuhi syarat yang diperlukan iaitu amaun = 0. Jika anda menjalankan aturcara berkenaan dan terus menekan butang Enter, hasil berikut akan dipaparkan.

Perhatikan, selepas memasuki cabang penanda cawangan [bantuan], ia akan kembali kepada cabang penanda cawangan awal [mula] semula untuk menggesa pengguna seperti sebelumnya.

Cuba kita mengkaji pernyataan ini dengan lebih lanjut. Sebenarnya arahan goto dalam pernyataan if…then adalah optional. Anda boleh menulis sama ada dengan cara:

if amaun = 0 then goto [bantuan]atau,if amaun = 0 then [bantuan]

38

Page 39: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Jika anda perhatikan pada pernyataan if…then tersebut, terdapat operator persamaan ‘=’ yang dikenali sebagai pengendali logik ringkas sebagai pembuat keputusan. Terdapat lain-lain pengendali logik yang berfungsi membuat keputusan logic ringkas misalnya pernyataan benar atau palsu, membandingkan dua objek dan menentukan sama ada ia serupa atau sebaliknya. Senarai contoh pengendali logic adalah seperti berikut:

a = b a adalah bersamaan dengan ba <> b a adalah tidak sama dengan ba < b a adalah kurang daripada ba > b a adalah lebih besar daripada b

a <= b a adalah kurang atau sama dengan ba >= b a adalah lebih besar atau sama dengan b

Adakah pengendalian logic hanya dapat digunakan pada pembolehubah berangka sahaja? Jawapannya sudah pasti tidak kerana anda juga boleh memanipulasikan pembolehubah rentetan. Sama seperti pengendali logic dalam contoh diatas, perbandingan ke atas pembolehubah rentetan dapat dilakukan dalam pernyataan if…then dengan operator yang sama (=,<>,<,>,<=,>=). Apabila membandingkan pembolehubah rentetan, setiap aksara yang terdapat didalam memori komputer yang diwakili mestilah betul-betul sama kerana Just BASIC amat sensitif pada sebarang perbezaan walaupun berbeza satu aksara (kadang kala paparan kelihatan sama mungkin disebabkan ruangan kosong ‘space’ tetapi ia tetap berbeza). Cuba perhatikan contoh berikut:

a$ = “Hello”b$ = “Hello ”

Dapatkah anda lihat perbezaan antara pembolehubah rentetan a$ dengan b$. Kedua-dua mewakili aksara yang akan memaparkan HELLO bukan. Cuba perhatikan terdapat ruang kosong pada “HELLO ” pada pembolehubah rentetan b$. Jadi kedua-duanya dianggap tidak mempunyai persamaan.

LANJUTAN PENGENDALI LOGIK

Selain pengendali logik ringkas (=,<>,<,>,<= dan >=), terdapat juga pengendali logik ringkas yang lain dikenali AND, OR, NOT dan XOR. Lazimnya pengendali logik ini digabungkan bersama pengendali logik yang lain. Cuba kita fahami kegunaan pengendali logik berkenaan satu persatu.

AND Keputusan menjadi benar jika semua argumen adalah benar.OR Keputusan menjadi benar asalkan salah satu daripada argumen adalah benar.XOR Keputusan menjadi benar hanya jika salah satu daripada argumen adalah benar.NOT Keputusan menjadi benar jika argumen adalah palsu.

39

Page 40: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

AND

Keputusan akan menjadi benar jika kedua-dua argumen adalah BENAR. Cuba kita lihat contoh berikut:

a = 2b = 5if (a<4) and (b=5) then [teruskan]

Dalam kod tersebut, a mestilah kurang daripada 4 dan (AND) b mestilah sama dengan 5 supaya dapat membawa kawalan ke label cawangan [teruskan]. Oleh kerana kedua-dua argumen ini didapati benar, program akan meneruskan kawalan ke cawangan [teruskan]. Kita lihat pula contoh berikutnya iaitu:

a = 14 : b = 5if (a<4) and (b=5) then [teruskan]

Contoh yang agak sama tetapi keputusan PALSU diperolehi kerana a tidak kurang dari 4 seperti dalam argumen pertama. Jadi, program tidak akan meneruskan kawalan ke cawangan [teruskan].

OR

Keputusan adalah benar jika salah satu daripada argumen adalah BENAR. Cuba lihat contoh berikut:

a = 14 : b = 5if (a<4) OR (b=5) then [teruskan]

Dalam kod tersebut, sekurang-kurangnya salah satu daripada argumen ‘a mesti kurang dari 4’ atau (OR) ‘b mesti sama dengan 5’ dipenuhi supaya dapat meneruskan kawalan ke cawangan [teruskan]. Oleh kerana argumen b=5 didapati benar, maka keputusan adalah BENAR dan program akan meneruskan kawalan ke cawangan [teruskan].

XOR

Hanya memerlukan satu daripada argumen yang benar untuk memberikan keputusan BENAR. Cuba perhatikan contoh berikut:

a = 14 : b = 5if (a<4) XOR (b=5) then [teruskan]

Dalam kod tersebut, hanya satu sahaja argumen (a kurang daripada 4) atau (OR) (b sama dengan 5) adalah benar untuk keputusan dianggap BENAR dan kawalan akan ke cawangan [teruskan]. Oleh kerana b=5 adalah benar, maka keputusan adalah BENAR

40

Page 41: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

dan diteruskan kawalan ke cawangan [teruskan]. Cuba kita perhatikan pula contoh kedua berikut:

a = 2 : b = 5if (a<4) XOR (b=5) then [teruskan]

Dalam contoh ini, kedua-dua argumen didapati BENAR, maka keputusan dianggap PALSU dan program tidak akan meneruskan kawalan ke cawangan [teruskan].

NOT

Keputusan BENAR apabila sesuatu argumen adalah PALSU. Cuba kaji contoh berikut:

if NOT((a<4) AND (b=5)) then [teruskan]

Dalam kod tersebut, kedua-dua argumen iaitu a mestilah TIDAK kurang dari 4 dan (AND) b mestilah sama dengan 5 dipenuhi untuk membuat keputusan BENAR.

LANJUTAN KAWALAN MODUL

GOSUB

Selain arahan GOTO untuk mengawal cabang dalam aturcara, Just BASIC menyediakan arahan lain untuk memodularkan aturcara dengan fungsi yang tertentu. Oleh kerana penanda cawangan untuk menandakan pecahan aturcara atau sub aturcara, maka salah satu arahan kawalan ialah GOSUB. Arahan GOSUB bermakna pergi ke cabang atau sub aturcara yang mempunyai penanda cawangan GOSUB. Mari kita kaji aturcara berikut:

[cabangSatu]print “Paparan pertama dalam cabang Satu”gosub [cabangDua]print “Paparan kedua dalam cabang Satu”end

[cabangDua]print “Paparan pertama dalam cabang Dua”return

Kadang kala, modul yang dibina berfungsi untuk menyelesaikan satu tugas sahaja dan perlu menghantar semula kawalan ke tempat dimana ia berada. Contoh di atas menunjukkan dua cabang yang ditandakan dengan nama penanda cawangan sebagai [cabangSatu] dan [cabangDua]. Cuba anda jalankan aturcara tersebut dan hasil yang berikut akan dipaparkan:

41

Page 42: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Cuba kita kaji contoh yang diberikan tadi. Dalam cabang [cabangSatu], arahan dalam baris kod pertama ialah memaparkan ‘Paparan pertama dalam cabang Satu’ pada tetingkap utama. Dalam baris kod kedua pula arahan gosub [cabangDua] akan menghantar kawalan ke sub [cabangDua] dan menjalankan arahan untuk memaparkan ‘Paparan pertama dalam cabang Dua’ pada tetingkap utama. Seterusnya kawalan dipulangkan semula ke tempat asal dengan arahan return. Kali ini barulah kawalan berada semula ke cabang [cabangSatu] serta menjalankan arahan selanjutnya iaitu memaparkan ‘Paparan kedua dalam cabang Satu’. Arahan end pula akan menamatkan aturcara.

Kesimpulannya ialah fungsi GOSUB akan mengarahkan kawalan ke cabang aturcara yang dikehendaki. Cabang aturcara yang ditujui perlulah mempunyai pengakhiran return yang bertujuan untuk mengembalikan semula ke kedudukan asal.

FUNGSI

Kali ini, mari kita lihat pula apa yang dinamakan sebagai fungsi (function). Biasanya semua fungsi menerima data dari bahagian lain dalam aturcara. Secara umumnya ia memberikan kita kaedah untuk memanipulasikan data yang diterima secara bermakna. Cuba perhatikan contoh ringkas berikut:

input “Masukkan nama anda :”; nama$print “Nama anda mengandungi ” ; len(nama$) ; “ patah huruf.”

Pada baris kod kedua menunjukkan penggunaan fungsi len( ). Fungsi len( ) digunakan untuk membilang jumlah aksara yang terdapat dalam sesuatu pembolehubah. Cuba anda jalankan aturcara berkenaan dan taipkan nama anda. Dalam contoh ini, saya akan menaipkan nama Ahmad yang mempunyai 5 aksara. Paparan dihasilkan juga adalah 5 bukan.

42

Page 43: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Selain fungsi len( ) ini, tedapat banyak lagi jenis fungsi yang dapat digunakan dalam Just BASIC. Setiap satu fungsi memiliki kegunaannya yang tersendiri misalnya dalam ekspresi trigonometri dalam matematik dan sebagainya.

Kali ini, kita cuba pula fungsi numerik dengan menjalankan aturcara ringkas berikut:

[mula]let kira = kira + 1print “Sin bagi kiraan”; kira; “ ialah” sin(kira)if kira <10 then goto [mula]

Program yang ringkas ini akan menyenaraikan sin (salah satu daripada fungsi dalam trigonometri dalam cabang matematik) untuk nilai dari 1 hingga 10. Mungkin anda perlu ingat semula semula konsep trigonometri dalam mata pelajaran matematik dengan guru yang garang itu! Jika tidak silap, semasa sekolah menengah lagi anda telah didedahkan dengan konsep ini, bukan (kalau anda ambil perhatian semasa guru mengajar…ehm).

Baris kod yang pertama mempunyai pembolehubah kira = kira + 1 yang bermakna pembolehubah kira akan menambahkan dirinya sebanyak 1 sendiri setiap kali gelungan dimasuki. Baris kod ketiga pula adalah pernyataan if…then yang mengawal aliran supaya gelungan (loop) diteruskan selagi nilai pembolehubah kira kurang daripada 10.

Pada baris kedua ialah apa yang akan dipaparkan pada tetingkap utama semasa anda menjalankan aturcara berkenaan. Cuba kita kaji baris kod ini.

print “Sin bagi kiraan”; kira; “ ialah” sin(kira)

Arahan print seperti yang diketahui akan memaparkan apa yang ada dalam “ ”. Cuba perhatikan pula sin(kira) yang akan memaparkan fungsi sin( ) dalam nilai-nilai berlainan pada pembolehubah kira. Paparan berikut akan dihasilkan.

43

Page 44: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Dalam contoh tersebut, kita telah memahami bagaimana menggunakan ekpresi fungsi (function) dalam Just BASIC. Oleh kerana tujuan buku ini adalah untuk memahami bahasa Just BASIC, saya rasa ada eloknya anda merujuk semula kegunaan fungsi-fungsi trigonometri misalnya sinus, tangen dan cosine yang pernah kita pelajari semasa sekolah menengah dahulu (dan saya juga berharap buku matematik anda masih dalam keadaan baik!).

Dalam keadaan sebenar, fungsi dalam Just BASIC (juga dalam kebanyakan bahasa komputer yang lain) ianya banyak membantu pengaturcara membangunkan program dengan lebih mudah dan juga fleksible digunakan dalam kod-kod yang telah ditulis.

Disini, ada disenaraikan fungsi-fungsi matematik yang biasa digunakan dalam Just BASIC untuk rujukan anda.

sqr(n) Mengembalikan punca kuasa dua bagi nsin(n) Mengembalikan sin bagi sudut n (n dalam radian)cos(n) Mengembalikan cos bagi sudut n (n dalam radian)tan(n) Mengembalikan tan bagi sudut n (n dalam radian)asn(n) Salingan sin n (n dalam radian)acs(n) Salingan kos n (n dalam radian)atn(n) Salingan tan n (n dalam radian)exp(n) Fungsi e kuasa n (dimana e = 2.7182818…)log(n) Mengembalikan logaritma jati nint(n) Mengabaikan nilai perpuluhan pada n (dalam bentuk integer)val(s$) Mengembalikan angka bernilai daripada rentetan.

Selain fungsi-fungsi yang dinyatakan diatas, anda boleh merujuk lain-lain fungsi seperti yang terdapat di dalam pustaka kata simpanan.

PENJANAAN NOMBOR RAWAK

Sekiranya anda peminat permainan komputer misalnya permainan ringkas seperti Mine Sweeper yang terdapat dalam Window sudah pasti anda didedahkan dengan fungsi rawak. Anda pasti hairan adakah periuk api tersembunyi dalam permaianan ini sememangnya telah ditetapkan atau diletakkan secara sebarangan oleh komputer. Fungsi ini sememangnya amat istimewa kerana kebolehannya menghasilkan nombor-nombor yang dipilih secara rawak (random) seolah-olah kita melontarkan dadu dan melontarkan syiling.

Sebenarnya, di dalam sebuah komputer terdapat jam yang sentiasa berdetik. Maklumat pada jam ini akan digunakan oleh Just BASIC untuk menyimpan data ketetapan masa nyata ketika arahan dijalankan. Ini samalah juga dengan anda menanyakan pukul berapa sekarang, katakan saya memberi jawapan (maklumat) sekarang jam 3, 8 minit dan 12 saat. Ketika saya menjawab tadi pun saatnya mungkin telah bergerak ke hadapan, bukan.

44

Page 45: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Oleh itu, maklumat ini akan sentiasa berubah-ubah dan terhasilnya pilihan rawak apabila fungsi dijanakan.

Fungsi nombor rawak dalam Just BASIC dijanakan oleh fungsi rnd(n), dimana n ialah mana-mana nilai integer (nombor yang tidak mempunyai perpuluhan). Cuba kita perhatikan aturcara ringkas berikut:

for nombor = 1 to 10print rnd(nombor)next nomborend

Dalam baris-baris kod diatas, kita menggunakan pernyataan for…next untuk membuat 10 gelung (loop) bagi menjanakan 10 nombor rawak. Perhatikan baris kedua yang memberi arahan memaparkan nombor-nombor rawak pada tetingkap utama. Jalankan aturcara tersebut dan hasilnya, sepuluh nombor rawak dijanakan (perhatian: nilai pada paparan anda mungkin berbeza disebabkan sifat rawak).

Jika anda menutup semula dan jalankan semula program ini, pasti nombor-nombor rawak yang lain akan dipaparkan. Perhatikan bahawa sifat yang dijanakan oleh rnd( ) ini akan menjanakan mana-mana nombor lebih besar dari 0 dan kurang dari 1.

Apa kata kita ingin hanya menghasilkan nombor-nombor rawak antara 0 dan 9. Sebelum ini kita telah pelajari fungsi int( ) untuk memberikan nilai integer pada nombor, bukan. Kita boleh gabungkan konsep tersebut dengan fungsi rnd( ). Perhatikan aturcara berikut.

for nombor = 1 to 10print int(rnd(nombor)*10)next nomborend

45

Page 46: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Dalam baris kod kedua, aturcara akan memproses terlebih dahulu operasi di dalam tanda kurungan ‘( )’ dalam iaitu rnd(nombor)*10. Kita mendarabkan nombor yang dijanakan dengan 10 untuk membuat nombor berkenaan dalam kedudukan lebih besar (10 kali ganda). Dalam kurungan kedua pula nombor yang telah digandakan tadi akan diarahkan untuk memberikan nilai integer sahaja. Hasil yang mungkin dipaparkan seperti berikut.

Adalah menjadi kebiasaan sekiranya ingin menjana nombor antara 1 hingga 10 misalnya, kod yang tersebut perlu diubahsuai sedikit seperti berikut:

print int((rnd(nombor)*10)+1)

Keadaan ini adalah bagi memastikan nilai nombor rawak antara 1 hingga 10 boleh dijanakan. Penambahan nilai 1 kerana fungsi integer INT( ) akan memberi nilai 0 jika fungsi rawak menjanakan kurang dari 0.1000 di dalam kurungan tersebut. Sebaliknya nilai yang paling besar ialah hanya sekadar 9 kerana penjanaan terbesar yang boleh dibuat ialah 0.9999 dan sekali lagi fungsi integer akan menjadikan nilai tersebut sebagai 9. Anda boleh mencuba lain-lain nilai rawak yang boleh dijanakan.

46

Page 47: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

KAEDAH & PERANCANGAN

Setiap projek perlu dirancang dengan teliti. Begitu jugalah halnya dengan pengaturcaraan Just BASIC. Kaedah-kaedah perancangan sebelum membina aplikasi yang sebenar secara carta aliran dan juga kod pseudo diterangkan secara ringkas. Teknik-teknik membuat catatan serta ulasan pada kod dan bagaimana menulis aturcara secara efektif akan membantu pengguna merekabentuk program dengan lebih berkesan. Terdapat juga tutorial ringkas bagaimana membina sebuah permainan teka nombor dengan langkah-langkah mudah yang telah dipelajari.

47

Page 48: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

PERANCANGAN ATURCARA

Menulis aturcara merupakan satu proses yang cerewet dan memakan masa yang agak lama terutama yang melibatkan aturcara-aturcara sukar. Walaupun anda menulis aturcara sebagai hobi, adalah sebaik-baiknya ada perancangan akan idea-idea yang ingin dimasukkan ke dalam program berkenaan. Ini boleh mengelakkan hilang punca dan menjadi panduan berguna dalam melihat arah aliran aturcara yang dirancang. Selain itu, ia juga dapat memberikan rujukan berguna sekiranya ingin membuat sebarang perubahan dalam aturcara yang telah dihasilkan.

Mari kita lihat kerja seorang jurutera yang menghasilkan sebuah kereta pasti ada contoh dasar atau prototaip sama ada dalam bentuk lukisan kejuruteraan mahupun model contoh. Dari model inilah mereka akan membuat segala modifikasi dan pembetulan jika perlu selain dapat menguji kereta tersebut sebelum diedarkan secara besar-besaran. Begitu juga halnya dengan menulis aturcara, kita juga perlu membuat prototaip bergantung kepada jenis program yang hendak dibina.

Secara amnya terdapat 2 cara bagaimana merancang aturcara iaitu secara:-(a) Carta Aliran (Flowchart)(b) Kod Pseudo (Pseudocode)

CARTA ALIRAN

Carta aliran merupakan kaedah visual untuk menggambarkan aliran kerja (dalam konsep pengaturcaraan ialah aliran kawalan). Ianya memudahkan kita membina algoritma secara grafik selain mudah untuk membuat perancangan. Carta aliran ini menggunakan simbol-simbol tertentu untuk menggambarkan fungsian atau proses yang dijalankan dalam satu-satu aturcara.

Mula

Masukkan Nama Anda?Masukkan Umur Anda?

Paparkan Nama dan Umuranda serentak.

Tamat

input “Masukkan Nama Anda?”; nama$input “Masukkan Umur Anda?”; umur

print “Nama anda ”; nama$ ; “dan umur anda:”; umur

end

48

Page 49: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Perhatikan carta aliran disebelah kiri dalam ilustrasi ringkas diatas. Setiap satu bentuk simbol memiliki ciri-ciri dan makna yang tersendiri. Simbol ‘mula’ dan ‘tamat’ diwakili oleh terminal segiempat berbucu lengkuk. Perhatikan juga simbol yang digunakan untuk fungsi input dan juga simbol yang digunakan untuk memaparkan Nama dan Umur secara serentak. Seterusnya anda boleh lihat kod-kod aturcara disebelah kiri yang dihasilkan berdasarkan carta aliran disebelah kanan.

Agak ringkas bukan! Selain contoh tersebut, carta aliran kadang-kala mempunyai banyak cabang dan lain-lain kawalan. Ia dapat membantu kita merancang secara visual grafik tentang apa yang hendak dibuat dalam kod-kod aturcara nanti dan sudah pastinya ini akan menjimatkan masa berbanding menulis terus aturcara tanpa sebarang garis panduan.

Antara contoh-contoh simbol carta aliran yang lain adalah seperti berikut:

SimbolTerminal

SimbolProses

SimbolManual Input

SimbolData

SimbolKeputusan

SimbolPersediaan

SimbolDokumen

SimbolPaparan

SimbolStoran Data

Simbol Proses Pratakrif

SimbolPenyambung

SimbolPenyambung

Halaman Lain

Simbol Storan Dalaman

Simbol Data Simpanan

Simbol Data Simpanan

Capaian Terus

SimbolLengah

SimbolEkstrak

SimbolGabung

Simbol Storan Capaian Jujukan

SimbolDokumen Pelbagai

49

Page 50: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

KOD PSEUDO

Kod pseudo (pseudocode) merupakan kod olok-olok yang dikarang sebagai garis panduan penulisan aturcara. Ianya seolah-olah senarai apa yang perlu dilakukan dan bagaimana sesebuah program itu berfungsi ditulis dengan ayat-ayat yang anda sendiri mudah fahami mengikut algoritma aturcara yang hendak dikarang.

Ianya ditulis dengan ringkas untuk menerangkan segala algoritma dalam kod-kod sebenar aturcara nanti. Cuba perhatikan kod pseudo yang ringkas berikut:-

(a) Dapatkan input nama dari pengguna.(b) Dapatkan input umur dari pengguna.(c) Papar nama dan umur pengguna pada tetingkap utama.

Amat ringkas dan mudah difahami bukan! Jadi dengan penjelasan daripada kod pseudo tersebut, memudahkan kita mengilhamkan baris-baris kod yang hendak ditulis tadi. Kod yang akan dihasilkan adalah sama seperti contoh dalam carta aliran.

Penggunaan sama ada carta aliran atau kod pseudo amat digalakkan sebelum penulisan aturcara terutama yang melibatkan program-program yang besar dan namun ianya bukanlah sesuatu yang sangat membelenggu pengaturcara. Ianya adalah alat yang amat berkesan untuk menguruskan aturcara secara lebih sistematik.

MENDOKUMENKAN KOD Just BASIC

Apabila kita menulis sesuatu program yang ringkas dan pendek, biasanya amat mudah kita memahami bagaimana ia berfungsi dan arah kawalan yang ada. Apa kata jika anda telah menghasilkan sebuah aturcara yang besar dan dalam beberapa minggu atau bulan kemudian barulah anda membuka semula aturcara berkenaan. Mungkin yang terjadi ialah anda cuba memahami dan mengingati semula apa yang telah anda kodkan dalam Just BASIC. Proses ini kadangkala menyukarkan kerana kita tidak mampu mengingati segala maklumat yang telah dimasukkan sebelumnya.

(a) PEMBOLEHUBAH

Sememangnya kita boleh menamakan pembolehubah dengan apa sahaja yang disukai, namun adalah sebaik-baiknya menggunakan nama yang bermakna. Gunakan sebaik-baiknya huruf besar dan kecil untuk menamakan pembolehubah anda yang berkaitan dengan fungsi yang dipegangnya. Cuba perhatikan contoh berikut iaitu kod untuk mengira isipadu sebuah kotak:

let d = (a * b * c)

50

Page 51: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Adalah lebih mudah difahami jika ditulis sebagaimana berikut:

let isipaduKotak = (panjangKotak * lebarKotak * tinggiKotak)

Kedua-duanya adalah kod Just BASIC yang sah tetapi kod yang kedua lebih mudah difahami oleh anda sendiri dan orang lain. Lagipun bahasa Malaysia yang digunakan pasti memberi kelebihan kepada kita kerana tidak terbelenggu dengan kata simpanan dalaman Just BASIC.

(b) PENANDA CAWANGAN

Kita hendaklah mempastikan nama yang digunakan pada penanda cawangan (branch label) menggambarkan apa fungsi atau operasi yang dijalankan. Ini akan menyenangkan kita mengetahui fungsi dalaman yang diwakili oleh nama penanda cawangan berkenaan tanpa perlu membelek semula kod dalaman cabang tersebut.

Contohnya jika anda ingin membuat penanda cawangan untuk menunjukkan menu bantuan, penggunaan [bantuan] adalah lebih mudah difahami daripada hanya mengguna [b]. Begitu juga dengan jika anda ingin membuat cabangan keluar, boleh menggunakan [keluar] atau [tamatProgram].

(c) KOD PENGULAS

Kod pengulas (Commenting Code) adalah fungsi istimewa dalam mana-mana bahasa BASIC (dan juga bahasa pengaturcaraan yang lain). Kita boleh meletakkan kod pengulas sebagai dokumen dalaman atau catatan dalam baris-baris kod Just BASIC. Biasanya sebelum membuat ulasan atau catatan, kita perlu letakkan tanda ’ (apostrophy) atau REMContohnya seperti berikut:-

rem Menanyakan nama dan umur pengguna.input “Masukkan Nama Anda?”; nama$input “Masukkan Umur Anda?”; umur

rem Memaparkan nama dan umur pengguna.print “Nama anda ”; nama$ ; “dan umur anda:”; umur

end

Just BASIC akan mengabaikan apa-apa sahaja maklumat pada kod pengulas tersebut dan teruskan dengan aliran berikutnya. Ini bermakna, anda boleh menulis apa sahaja yang berkaitan dengan kod-kod yang ingin diulas. Ulasan anda perlulah berpatutan dan tidak terlalu menganggu kawalan-kawalan arahan lain yang penting. Mendokumentasi program memerlukan latihan dan gunakan gaya atau cara secara konsisten. Setiap orang memiliki gaya berbeza dan tiada yang salah atau betul. Program-program yang kecil tidak perlulah didokumenkan untuk menjimatkan masa anda.

51

Page 52: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

TUTORIAL

PERMAINAN TEKA NOMBOR

Kita telah pelajari arahan-arahan seperti pernyataan input, pernyataan print, pernyataan let, pembolehubah berangka serta pembolehubah rentetan, pernyataan goto, gelungan bersyarat dengan pernyataan if…then, fungsi dan juga cara mendokumentasikan kod-kod Just BASIC dengan efektif.

Dengan pengetahuan asas yang telah diperolehi dalam pengaturcaraan Just BASIC, kali ini kita cuba menghasilkan permainan ringkas meneka nombor (atau juga dipanggil HI-LO Game). Konsepnya amat mudah iaitu, komputer akan menjana satu nombor antara 1 dan 100. Tugas kita hanya meneka nombor berkenaan. Apabila tekaan salah, komputer akan memberitahu sama ada tekaan kita telalu rendah atau terlalu tinggi. Jika kita berjaya membuat tekaan, komputer akan memberitahu berapa banyak tekaan telah dibuat sebelum jawapan tepat diberikan.

Sekarang mari bermula dengan membina garis panduan dengan pseudocode berikut:-

(1) Komputer akan menjana dan memilih satu nombor antara 1 dan 100.(2) Paparkan tajuk program dan cara penggunaan program tersebut.(3) Tanya pengguna supaya meneka nombor.(4) Simpan bilangan tekaan yang telah dibuat oleh pengguna.(5) Jika jawapan BETUL pergi ke Langkah (9).(6) Jika jawapan rendah, beritahu pengguna supaya meneka LEBIH TINGGI.(7) Jika jawapan tinggi, beritahu pengguna supaya meneka LEBIH RENDAH.(8) Balik semula ke Langkah (3).(9) Beritahu pengguna berapa tekaan telah dibuat sebelum meneka BETUL.(10)Tanya pengguna sama ada hendak bermain lagi.(11)Jika pengguna menjawap YA, bersihkan semua dan kembali ke Langkah (1).(12)Beri maklumat kepada pengguna bagaimana untuk menutup program.(13)Tamatkan program.

Jadi kita telah mempunyai garis panduan awal bagaimana aturcara dijalankan dengan pseudocode yang ada. Dengan membuat kod secara langkah demi langkah yang telah didokumenkan tadi kita boleh membuat aturcara secara sistematik.

Langkah (1)Komputer akan menjana dan memilih satu nombor antara 1 dan 100.

Untuk sesebuah menjanakan sesuatu nombor antara 1 dan 100, kita akan menggunakan fungsi rnd( ). Kita akan memulakan penulisan kod dengan menggunakan pengulas rem (atau tanda ’) bagi memudahkan kita mengingati fungsi sesuatu kod yang telah dibentuk.

’ Permulaan permainan interaktif TEKA NOMBOR[mula]tekaSaya = int(rnd(1)*100)+1

52

Page 53: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Membuat sebuah cabang yang dinamai [mula] digunakan sebagai cabang permulaan dalam program nanti. Kita menggunakan fungsi rnd( ) untuk mendapatkan nombor rawak (yang menghasilkan nombor lebih besar dari 0 dan kurang dari 1). Seterusnya hasil tersebut akan didarabkan dengan 100 untuk membesarkan nilainya iaitu menjadi lebih besar dari 0 dan kurang dari 100 (contohnya: nilai 0.373452 akan menjadi 37.3452)

Fungsi int( ) pula akan mengabaikan titik perpuluhan yang diperolehi (contohnya: nilai 37.3452 akan menjadi 37 sahaja). Kemudian nombor 1 ditambah pada hasilan akhir kerana fungsi rawak (random) tadi hanya mampu hasilkan nilai tertinggi 0.99999 yang seterusnya jika didarab dengan 100 hanya memberi nilai tertinggi 99.9999 (atau 99 setelah di integerkan). Jumlah ini tidak cukup tinggi, jadi kita tambah 1 untuk melengkap kemungkinan kepada 100.

Pembolehubah yang memegang nilai janaan rawak pula kita namakan sebagai tekaSaya.

Langkah (2)Paparkan tajuk program dan cara penggunaan program tersebut.

’ Bersihkan skrin komputer dan paparkan tajuk dan arahan.clsprint “PERMAINAN TEKA NOMBOR”printprint “Komputer telah memilih satu nombor antara”print “1 dan 100. Anda dikehendaki cuba meneka”print “nombor berkenaan. Komputer akan beritahu”print “sama ada tekaan anda lebih tinggi atau lebih”print “rendah dari nombor yang ada.”print

Arahan mudah cls akan membersihkan skrin dalam tetingkap utama. Arahan print pula banyak digunakan pada langkah kali ini adalah untuk memaparkan tajuk serta cara-cara permainan kepada pengguna.

Langkah (3)Tanya pengguna supaya meneka nombor.

[tanya]’ Tanya pengguna supaya meneka nombor.input “Baiklah. Apakah nombor tekaan anda :”; tekaPengguna

Kali ini kita hasilkan pula satu lagi cabang yang dinamakan [tanya] supaya ianya dapat digunakan semula berulang kali. Arahan input digunakan untuk mendapat maklum balas pengguna supaya membuat tekaan. Pembolehubah yang dinamakan tekaPengguna akan memegang nilai yang diteka oleh pengguna.

53

Page 54: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Langkah (4)Simpan bilangan tekaan yang telah dibuat oleh pengguna.

’ Tambah satu pada pembilang tekaan pengguna.let bilTekaan = bilTekaan + 1

Langkah ini digunakan pembilang berapa banyak pengguna telah membuat tekaan. Nilai pembolehubah bilTekaan akan bertambah sebanyak 1 kali setiap kali kod ini dilalui (setiap kali gelungan kembali ke kod ini).

Langkah (5)Jika jawapan BETUL pergi ke Langkah (9).

’ Memeriksa sama ada tekaan betul.if tekaPengguna = tekaSaya then goto [menang]

Kod ini akan membandingkan sama ada nilai pada pembolehubah tekaPengguna (input yang dimasukkan oleh pengguna) sama dengan nilai tekaSaya (nilai janaan komputer). Sekiranya didapati nilai yang sama, maka kawalan akan ke penanda cawangan [menang] atau ke Langkah (9) dalam pseudocode kita tadi.

Langkah (6)Jika jawapan rendah, beritahu pengguna supaya meneka LEBIH TINGGI.

’ Memeriksa sama ada tekaan lebih rendah dari nilai sebenar.if tekaPengguna < tekaSaya then print “Teka lebih tinggi”

Kod ini pula akan membandingkan sama ada nilai pembolehubah tekPengguna kurang dari (dengan tanda <) nilai pembolehubah tekaSaya. Jika didapati kurang maka teks “Teka lebih tinggi” akan dipaparkan. Ini bertujuan supaya pengguna cuba meneka nilai yang lebih tinggi dari tekaan yang telah dibuat.

Langkah (7)Jika jawapan tinggi, beritahu pengguna supaya meneka LEBIH RENDAH.

’ Memeriksa sama ada tekaan lebih tinggi dari nilai sebenar.if tekaPengguna > tekaSaya then print “Teka lebih rendah”

Kod ini pula akan membandingkan sama ada nilai pembolehubah tekPengguna tinggi dari (dengan tanda >) nilai pembolehubah tekaSaya. Jika didapati lebih tinggi maka teks “Teka lebih rendah” akan dipaparkan. Ini bertujuan supaya pengguna cuba meneka nilai yang lebih rendah dari tekaan yang telah dibuat.

54

Page 55: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Langkah (8)Balik semula ke Langkah (3).

’ Patah balik untuk input pengguna semula.goto [tanya]

Dalam langkah ini pula, kawalan akan kembali semula ke penanda cawangan [tanya] untuk mengulang semula gelungan. Pengguna akan ditanya semula seperti dalam Langkah (3) tadi.

Langkah (9)Beritahu pengguna berapa tekaan telah dibuat sebelum meneka BETUL.

[menang]’ Membuat bunyi beep sekali.beep

’ Beritahu pengguna berapa kali tekaan dibuat sebelum tekaan tepat.printprint “Anda menang! Anda memerlukan ”; bilTekaan; “ kali tekaan”print “untuk memenagi permainan ini.”

’ Mensetkan semula pembilang.let bilTekaan = 0

Penanda cawangan [menang] akan dijalankan apabila pengguna meneka nilai yang tepat. Perhatikan pernyataan beep adalah untuk memberi bunyi ‘ding!’ sekali. Seterusnya kita boleh paparkan jumlah tekaan dengan pernyataan print dengan memasukkan pembolehubah bilTekaan.

Akhir sekali, kita perlu mensetkan semula pembilang tekaan iaitu pembolehubah bilTekaan kepada 0 untuk permainan semula.

Langkah (10)Tanya pengguna sama ada hendak bermain lagi.

’ Tanya pengguna sama ada hendak bermain lain atau sebaliknya.printinput “Anda mahu bermain lagi (Y/N)”; mainLagi$

Pernyataan input ini akan menanya kepada pengguna sama ada mahu meneruskan permaianan atau tidak. Perhatikan pembolehubah rentetan mainLagi$ untuk jawapan pengguna.

55

Page 56: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Langkah (11)Jika pengguna menjawap YA, bersihkan semua dan kembali ke Langkah (1).

if instr(“Yaya”,mainLagi$)>0 then goto [mula]

Kali ini kita sekali lagi menggunakan pernyataan if…then bersama fungsi instr( ). Ianya merupakan salah satu daripada fungsi yang terdapat dalam Just BASIC. Kegunaan fungsi instr( ) ialah untuk mengenalpasti sama ada pengguna menjawab “Y”, “y”, “YA” atau “ya”. Kadang kala pengguna berkemungkinan akan menaip salah satu daripada perkataan atau huruf tersebut. Jika didapati pengguna menaip dan ada persamaan dalam kandungan dalam fungsi tersebut, maka nilai yang dijana adalah lebih besar dari 0 (sifar). Ini seterusnya akan mengarahkan kawalan (goto) ke penanda cawangan [mula].

Langkah (12)Beri maklumat kepada pengguna bagaimana untuk menutup program.

print “Tekan kekunci ALT – F4 untuk keluar dari program”

Langkah ini akan memaparkan kepada pengguna, cara untuk keluar dari program yang telah sedang dijalankan. Kita boleh gunakan kekunci ALT-F4 untuk keluar dari mana-mana program Just BASIC yang sedang dijalankan.

Langkah (13)Tamatkan program.

end

Sebaik-baik praktis ialah dengan menempatkan pernyataan penamat end pada setiap program Just BASIC anda. Ia juga boleh digunakan pada mana-mana sudut aturcara anda yang memerlukan program untuk berhenti.

Jadi, anda telah berjaya menghasilkan permainan pertama dengan Just BASIC. Ianya menggunakan kod-kod aturcara asas yang ringkas dan mudah difahami. Ini adalah satu contoh permulaan kepada pengaturcara yang ingin membuat permainan yang lebih mencabar. Anda digalakkan untuk mengubahsuai kod-kod yang ada misalnya boleh tukar penghasilan nombor rawak kepada jumlah lebih besar (antara 1 dan 200, 500 atau mungkin 1000). Dengan praktis dan pemahaman asas-asas, kita akan mampu membuat sendiri permainan interaktif berdasarkan idea-idea yang tidak terbatas.

56

Page 57: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Senarai lengkap kod-kod permainan teka nombor tadi adalah seperti berikut:

' Permulaan permainan interaktif TEKA NOMBOR

[mula] tekaSaya = int(rnd(1)*100)+1 ' Bersihkan skrin komputer dan paparkan tajuk dan arahan. cls print "PERMAINAN TEKA NOMBOR" print print "Komputer telah memilih satu nombor antara" print "1 dan 100. Anda dikehendaki cuba meneka" print "nombor berkenaan. Komputer akan beritahu" print "sama ada tekaan anda lebih tinggi atau lebih" print "rendah dari nombor yang ada." print

[tanya] ' Tanya pengguna supaya meneka nombor. input "Baiklah. Apakah nombor tekaan anda :"; tekaPengguna ' Tambah satu pada pembilang tekaan pengguna. let bilTekaan = bilTekaan + 1 ' Memeriksa sama ada tekaan betul. if tekaPengguna = tekaSaya then goto [menang] ' Memeriksa sama ada tekaan lebih rendah dari nilai sebenar. if tekaPengguna < tekaSaya then print "Teka lebih tinggi" ' Memeriksa sama ada tekaan lebih tinggi dari nilai sebenar. if tekaPengguna > tekaSaya then print "Teka lebih rendah" ' Patah balik untuk input pengguna semula. goto [tanya]

[menang] ' Membuat bunyi beep sekali. beep

' Beritahu pengguna berapa kali tekaan dibuat sebelum tekaan tepat. print print "Anda menang! Anda memerlukan "; bilTekaan; " kali tekaan" print "untuk memenagi permainan ini."

' Mensetkan semula pembilang. let bilTekaan = 0 ' Tanya pengguna sama ada hendak bermain lain atau sebaliknya. print input "Anda mahu bermain lagi (Y/N)"; mainLagi$ if instr("Yaya",mainLagi$)>0 then goto [mula] print "Tekan kekunci ALT - F4 untuk keluar dari program" end

57

Page 58: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Artikel RingkasMEMPELAJARI BAHASA PENGATURCARAAN PERTAMA

Saya masih ingat lagi pada tahun 1992 (masih belajar lagi), saya amat teruja dengan permainan-permaian komputer pada masa itu. Sudah tentu permainan ini dibuat dalam persekitaran DOS (Disk Operating System) kerana sistem operasian Windows belum lagi wujud (namun sudah ada Window 3.1 yang pada ketika itu tetapi tidak banyak aplikasi sokongan dan kelajuan unit pemproses pusat yang agak perlahan). Ketika itu, skrin komputer hanya berlatar hitam dengan prompt C:> ditayang pada skrin. Kita perlu menaip sesuatu jika hendak memasuki sebarang aplikasi, oleh itu kita perlu memahami kata kunci arahan yang diterima oleh DOS. Berbalik kepada permainan tadi, saya memang meminati sebarang jenis permainan tembak menembak dan tertanya-tanya bagaimanakah mereka menghasilkan permainan sedikian rupa? Bertitik tolak dengan itu, saya mula membaca sebarang artikel, buku dan majalah berkenaan komputer dan aplikasinya. Jadi mulalah pemahaman bertambah dari sehari ke sehari dan rupanya apa yang dinamakan bahasa komputer telah digunakan sebagai platform untuk membangunkan perisian (dan permainan) oleh mereka yang bekerja sebagai pengaturcara. Sejak itu saya mula bercita-cita untuk menghasilkan permainan-permaianan hebat tersebut. Rupa-rupanya, untuk menghasilkan sebuah aplikasi interaktif komersil bukanlah kerja yang senang. Ianya memerlukan satu pemahaman dan pengetahuan tambahan misalnya bidang matematik dan grafik untuk memberi hasil yang memuaskan.

Bahasa pertama yang saya gunakan ialah QBasic iaitu yang didatangkan sekali dengan sistem operasian MS DOS. Pada mulanya pengaturcaraan dengan QBasic nampak mudah namun setelah sampai ke peringkat melibatkan grafik, set aturcara mula menjadi lebih komplek. Sejak itu, banyak aturcara ringkas telah saya tulis sebagai hobi termasuklah aturcara pangkalan data, penghasil graf, permainan matematik dan bermacam jenis permainan tembak menembak. Walaupun tidaklah secanggih mana, namun ianya semacam memberikan kepuasan peribadi lebih-lebih lagi jika melihat orang lain menggunakan aturcara yang kita bina. Pada ketika itu, sebuah aturcara ringkas yang dipadankan dengan visual grafik sudah cukup untuk menarik orang lain mencuba aturcara yang kita bina. Saya mula sedar bahawa terdapat banyak lagi bahasa-bahasa computer yang lain misalnya C, C++, Ada, Fortran, Logo, Pascal, Perl dan sebagainya. Malahan bahasa-bahasa komputer ini telah berkembang pada hari ini dengan munculnya versi-versi terkini yang memiliki dialek yang pelbagai mengikut pihak yang membangunkannya. Bahasa computer yang berbeza dialek lazimnya memiliki persamaan dari segi arahan-arahan biasa yang telah diterima pakai sejak sekian lama. Bahasa BASIC ini misalnya memiliki berpuluh-puluh dialek yang telah dikembangkan antaranya termasuklah VisualBasic, Liberty Basic, TurboBasic, PureBASIC, iBasic, BCX dan sebagainya. Ada diantaranya yang masih disokong pembangunannya dan sebilangan yang lain hanya tinggal nama!

58

Page 59: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

TATASUSUNAN & PENGURUSAN FAIL

Pengaturcaraan berkaitan pengurusan data dengan kaedah tatasusunan akan membincangkan teknik dan keperluan membina tatasusunan berangka dan rentetan. Dalam bahagian pengurusan fail, perbincangan bagaimana membuka, menyimpan, memadam dan menyunting data di dalam fail berkenaan. Perkara-perkara yang harus diberi penekanan dalam menguruskan fail luaran juga akan dibincangkan dengan lebih lanjut dalam bahagian ini.

59

Page 60: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

MENGGUNAKAN TATASUSUNAN

Apakah yang dinamakan sebagai tatasusunan (arrays) dalam Just BASIC? Pada hakikatnya, komputer banyak digunakan untuk merekod dan mencari senarai sesuatu. Ini banyak digunakan dalam mana-mana industri misalnya senarai pelanggan sebuah bank, senarai saham, senarai huruf-huruf, senarai nama pelajar sekolah dan bermacam-macam lagi. Mungkin kita tidak perasan permainan elektronik (games) yang kita mainkan juga memerlukan sistem pengurusan rekod yang baik. Mungkin data markah anda, mungkin juga rekod musuh-musuh, raksasa-raksasa dan sebagainya ada disimpan dalam fail-fail tertentu.

TATASUSUNAN RENTETAN

Tatasusunan (arrays) merupakan apa yang digunakan oleh Just BASIC untuk menyimpan senarai. Mengapakah penggunaan tatasusunan amat penting bagi mana-mana bahasa pengaturcaraan komputer? Cuba anda bayangkan jika tiadanya tatasusunan, bagaimana untuk menguruskan senarai yang banyak misalnya 100 data, 1000 data atau mungkin lebih. Sudah pasti amat rumit bukan! Jadi, perlulah adanya struktur data yang mengandungi item data berkaitan jenis yang sama disimpan dalam lokasi ingatan secara berturutan.

Sekarang mari kita cuba perhatikan contoh aturcara berikut:

' Menguruskan senarai dengan tatasusunan.' Menyediakan tatasusunan mengandungi 10 item.dim nama$(10)

[tanyaNama]input "Masukkan nama ?"; namaAnda$if namaAnda$ = "" then print "Tiada nama dimasukkan." : goto [keluar]indeks = 0

[masukGelung]' Periksa samada kedudukan indeks berada dalam item tatasusunan belum diguna.if nama$(indeks) = "" then nama$(indeks) = namaAnda$ : goto [namaMasuk]

' Tambah nilai pada indeks dan gelung selagi kurang dari 10.indeks = indeks + 1if indeks < 10 then [masukGelung]

' Beritahu pengguna jika semua item tatasusunan telah habis diguna.print "Semua 10 ruang item telah digunakan!"goto [keluar]

[namaMasuk]print namaAnda$; " telah dimasukkan ke dalam senarai."goto [tanyaNama]

[keluar]end

60

Page 61: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Perhatikan kod-kod tersebut dengan teliti. Pastinya anda perasan akan satu baris pernyataan dim nama$(10) pada permulaan kod aturcara. Pernyataan ini sebenarnya akan memberitahu atau mengistiharkan Just BASIC supaya menyediakan tatasusunan dengan aksara $, seperti mana pembolehubah, ianya dinamakan tatasusunan rentetan (jika tatasusunan tanpa aksara $ diakhir namanya, ia akan dianggap tatasusunan berangka).

Item pertama dalam tatasusunan akan dianggap sebagai bilangan dengan nilai 0. Oleh yang demikian, untuk jumlah tatasusunan sebanyak 10 item, ianya akan bermula dengan 0 hingga 9. Dalam Just BASIC, kita sebenarnya memberi bilangan tatasusunan dari 0 ke 10 bermakna ada sebanyak 11 item. Bagaimana pula kaedah mengawal gelungan (loop) untuk mencari slot kosong yang belum diisi oleh pengguna. Perhatikan baris kod berikut:

if nama$(indeks) = "" then nama$(indeks) = namaAnda$ : goto [namaMasuk]

Pernyataan if nama$(indeks) = “” menggunakan nilai ‘indeks’ untuk mengarah ke item dalam tatasusunan rentetan yang dipilih. Apabila indeks mempunyai nilai 0, kita akan mencari item pertama dalam tatasusunan. Bila gelungan kedua pula berlalu, nilai pada indeks berubah kepada 1, seterusnya mencari pula item kedua dalam tatasusunan dan proses sama berjalan seterusnya.

Dalam baris yang sama juga, perhatikan bahagian nama$(indeks)=namaAnda$ pula digunakan untuk penetapan item yang dipilih oleh indeks. Kesan keseluruhannya ialah ia akan setkan item yang dipilih dalam tatasusunan sebagai nilai yang dipegang oleh namaAnda$ jika tatasusunan yang dipilih memiliki rentetan yang kosong. Seterusnya, arahan goto [namaMasuk] mengarahkan supaya keluar dari gelungan dan menuju ke penanda cawangan [namaMasuk].

Dalam contoh tersebut, katakan saya ingin memasukkan nama 11 orang rakan-rakan ke dalam aturcara. Jadi apa yang terjadi dalam proses tersebut ialah setiap satu item akan diwakili oleh nilai tatasusunan. Namun item kesebelas tidak dapat direkodkan (nama Kamal tidak dapat direkodkan) kerana kita hanya mengistiharkan 10 ruangan tatasusunan dan menghadkan indeks supaya kurang dari nilai 10. Perhatikan jadual berikut:

Nilai indeks diwakili Data yang direkod0 Ahmad1 Abu2 Aminah3 Samy4 Ah Chong5 Patrick6 Muthu7 Michael8 Azam9 Fairuz

Tiada rekod Kamal

61

Page 62: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Hasilnya daripada input data tadi mungkin kelihatan seperti berikut.

Sekarang kita telah fahami bagaimana tatasusunan digunakan untuk menyimpan senarai item. Kelebihan yang diperolehi ialah kita tidak perlu membuat baris kod yang panjang untuk membuat arahan yang sama menyimpan item. Bayangkan jika anda menguruskan 1000 rekod, tentulah baris-baris kod yang panjang (lebih dari 1000 baris kod) terpaksa digunakan jika tanpa fungsi tatasusunan ini. Anda boleh mengubahsuai aturcara tersebut misalnya menukar saiz item kepada 1000. Apa yang perlu ditukar hanyalah peristiharan kepada dim nama$(1000) dan baris pernyataan if index <1000 then [masukGelung]. Jadi selepas ini, pastilah anda boleh masukkan nama rakan-rakan anda (yang seramai 1000 orang itu, jika ada…).

TATASUSUNAN BERANGKA

Seperti yang telah dijelaskan sebelum ini, tatasusunan berangka beroperasi sama seperti tatasusunan rentetan. Cuma bezanya ialah nilai item yang akan diwakili oleh setiap rentetan dalam bentuk angka (nama tatasusunan tidak mempunyai tanda $ pada hujungnya). Untuk melengkapkan penjelasan tatasusunan berangka, mari kita perhatikan contoh yang disediakan berikut:

62

Page 63: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

dim senarai (5)for nombor = 1 to 5senarai (nombor) = nomborprint “Tatasusunan senarai ke-” ;nombor; “ menyimpan nilai ”; senarai (nombor)next nomborend

Kali ini, aturcara tersebut mendemonstrasikan penggunaan tatasusunan berangka sebanyak 5 item. Pernyataan dim senarai(5) memperuntukkan sebanyak lima ruang untuk tatasusunan senarai. Berikutnya kita membuat 5 gelungan dengan pernyataan for…next untuk menjanakan pula nombor 1, 2, 3, 4 dan 5 dalam nilai nombor.

Hasil yang diperolehi apabila kita menjalankan program berkenaan adalah seperti berikut:

PENGISTIHARAN TATASUSUNAN

Adalah penting untuk membuat pengistiharan tatasusunan dengan betul supaya tidak timbulnya ralat (error) semasa menjalankan aturcara. Cuba perhatikan kod ringkas berikut dan cuba jalankan.

’ Kesalahan tatasusunan.dim nama$(10)print nama$(12)

Dalam situasi diatas, kita sebenarnya cuba memaparkan tatasusunan nama$(12) yang tidak wujud. Ini disebabkan kita hanya istiharkan hanya 10 ruang dengan pernyataan dim nama$(10). Keadaan demikian akan menyebabkan Just BASIC memaparkan mesej ralat:

63

Page 64: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Penggunaan tatasusunan tidak terhad kepada satu kegunaan sahaja. Ianya boleh juga digabungkan misalnya tatasusunan rentetan dengan tatasusunan berangka. Katakan anda ingin menyimpan rekod harga barang-barang yang elektrik yang telah anda beli dan ingin memaparkannya dalam bentuk senarai yang tersusun. Untuk membuat aturcara berkenaan perlukan 2 tatasusunan untuk menyimpan nilai harga (angka) dan untuk menyimpan jenis barang (rentetan).

‘ Mengistihar tatasusunan barang dan hargadim barang$(5)dim harga (5)

for bilangan = 1 to 5

‘ Masukkan input pengguna untuk nama barang.input “Masukkan nama barangan :” ; namaBarang$barang$(bilangan) = namaBarang$

‘ Masukkan input pengguna untuk harga barang.input “Masukkan harga barang tersebut :” ; hargaBarangharga(bilangan) = hargaBarang

next bilangan

‘ Memaparkan semua maklumat yang diperolehi.printfor senarai = 1 to 5print “Barangan :” ; barang$(senarai) ; “ berharga RM“ ;harga(senarai)next senaraiend

Jalankan aturcara tersebut dan masukkan input nama barangan dan juga harganya. Setelah 5 nama dan harga barangan dimasukkan, program akan memaparkan semula semua yang telah kita masukkan tadi.

Perhatikan kod-kod aturcara yang telah ditulis. Didapati terdapat 2 peristiharan dim iaitu dim barang$(5) dan dim harga(5). Kedua-duanya masing-masing memperuntukkan 5 ruang untuk tatasusunan rentetan dan tatasusunan berangka. Penggunaan pernyataan for…next pula untuk membuat gelungan (loop) agar pengguna boleh memasukkan input sebanyak yang dikehendaki (5 kali).

Nilai yang dipegang oleh pembolehubah rentetan namaBarang$ akan disimpan dalam tatasusunan barang$(bilangan). Oleh kerana ‘bilangan’ akan mewakili angka 1 hingga 5, maka ada 5 tatsusunan rentetan yang dijana. Begitu juga halnya dengan nilai yang dipegang oleh pembolehubah hargaBarang. Nilai yang dipegang olehnya akan disimpan dalam tatasusunan harga(bilangan).

Seterusnya kita menggunakan semula pernyataan for…next untuk memaparkan semua rekod yang telah dimasukkan tadi pada tetingkap utama.

64

Page 65: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Paparan mungkin kelihatan seperti berikut:

LANJUTAN TATASUSUNAN

Apa yang telah kita sentuh sebelum ini dikenali sebagai tatasusunan satu dimensi. Just BASIC juga menyokong tatasusunan dua dimensi kembar (double dimension arrays). Kedua-duanya boleh menyimpan sama ada dalam bentuk rentetan atau berangka. Ianya boleh menyimpan hingga 2 juta elemen bergantung kepada memori komputer anda. Mari kita lihat sintaks yang digunakan untuk pernyataan tatasusunan ini.

Untuk tatasusunan satu dimensi.dim tatasusunan (saiz) .

dan

Untuk tatasusunan dua dimensi.dim tatasusunan (saiz1, saiz2)

Selain itu, tatasusunan boleh juga ditulis seperti berikut:dim tatasusunan1 (saiz1), tatasusunan2 (saiz2), tatasusunan3 (saiz3), …dan seterusnya.

65

Page 66: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Pernahkah anda melihat helaian elektronik seperti Excel? Jika kita perhatikan, setiap sel padanya menyimpan maklumat dan helaian tersebut terdiri daripada LAJUR dan BARIS. Konsep tatasusunan dua dimensi (dan tatasusunan satu dimensi) juga memiliki lajur dan baris yang memiliki saiz yang boleh ditetapkan.

Katakanlah anda seorang guru yang mempunyai 5 orang pelajar (contoh sahaja, dalam keadaan sebenar mungkin seorang guru mempunyai berpuluh-puluh pelajar). Dan anda mengajar kedua-dua subjek Matematik dan Sains. Sekarang, anda ingin memasukkan data pelajar bersama markah-markah mereka dalam Just BASIC.

Perhatikan kod-kod aturcara dibawah. Jalankan aturcara tersebut dan rekodkan data berdasarkan jadual berikutnya.

’ Mengistiharkan tatasusunan pelajar dan markah 2 subjek.dim rPelajar$(5)dim rMarkah(5,2)

for bilP = 1 to 5

input “Masukkan nama pelajar :” ; namaPelajar$rPelajar$(bilP) = namaPelajar$

input “Masukkan markah subjek Matematik :” ; markahMinput “Masukkan markah subjek Sains :” ; markahSrMarkah (bilP, 1) = markahMrMarkah (bilP, 2) = markahS

next bilP

printfor papar = 1 to 5print “Nama pelajar : “ ; rPelajar$ (papar)print “Markah Matematik : “; rMarkah (papar, 1); “ dan Sains : ” ; rMarkah(papar, 2)next paparend

Cuba kita lihat jadual berikut yang memiliki lajur dan baris yang akan diwakili oleh setiap tatasusunan. Rekodkan data berdasarkan nama pelajar dan markah-markah yang diperolehi berdasarkan jadual dibawah. Nama tatasusunan yang mewakili setiap satu item dipamerkan dalam jadual sebagai rujukan kita.

Nama Pelajar Markah Subjek Matematik Markah Subjek Sains(1) Ahmad rPelajar$(1) 80 rMarkah(1,1) 70 rMarkah(1,2)(2) Zaki rPelajar$(2) 75 rMarkah(2,1) 95 rMarkah(2,2)(3) William rPelajar$(3) 65 rMarkah(3,1) 50 rMarkah(3,2)(4) Noraini rPelajar$(4) 55 rMarkah(4,1) 60 rMarkah(4,2)(5) Muthu rPelajar$(5) 78 rMarkah(5,1) 45 rMarkah(5,2)

66

Page 67: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Hasil yang mungkin dipaparkan selepas data lengkap dimasukkan adalah seperti berikut:

Apa yang berlaku disini ialah kita telah memperuntukkan 15 ruang dengan pernyataan tatasusunan dim rPelajar(5) dan dim rMarkah(5,2). Dalam tatasusunan dua dimensi rMarkah(5,2) memperuntukkan 10 ruangan (5 darab 2 ialah 10). Ini juga bermakna kita memiliki 15 rekod sepertimana yang terdapat dalam jadual yang disediakan tadi. Perhatikan dalam jadual itu juga menunjukkan rekod atau nilai yang dipegang atau diwakili oleh setiap tatasusunan yang berbeza.

MEMBACA DAN MENULIS PADA FAIL

Sekarang kita telah sampai kepada bab yang agak menarik. Saya menganggap anda telah mengetahui bagaimana kita menguruskan data-data dengan apa yang telah kita pelajari sebelumnya. Kali ini sebagai permulaan saya ingin bertanya kepada anda, pernahkah menggunakan mana-mana pemproses perkataan dan helaian elekronik? (yang paling biasa ialah Ms Word dan Ms Excel rasanya, bukan!) Jika anda pernah gunakan program berkenaan, sudah pasti anda juga pernah menyimpan (save) fail dalam format tersendiri (Ms Word hasilkan fail berakhir dengan .doc dan Ms Excel hasilkan fail berakhir dengan

67

Page 68: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

.xls) untuk digunakan di kemudian hari. Fail-fail yang tersebut berkemungkinan disimpan dalam cakera keras, pemacu USB, cakera padat atau disket. Selain menyimpan fail, anda juga sudah pastinya perlu membuka (open) fail berkenaan sebelum dibuka.

Just BASIC juga memiliki keupayaan demikian (mana tahu anda ingin membuat program pemproses perkataan sendiri…). Dalam bahagian ini, kita akan gunakan keupayaan tersebut untuk menyimpan dan membuka fail kita sendiri. Di dalam Just BASIC, terdapat 3 kaedah untuk membaca dan menulis pada fail iaitu secara berjujukan (sequential method), secara capaian rawak (random access) dan secara binari (binary method).

Kita akan gunakan kaedah jujukan (sequential) untuk contoh-contoh berikut. Ianya dinamakan berjujukan (sequential) kerana apabila membaca sesebuah fail, akan bermula dari awal fail dan bergerak dari item ke item sehingga ke penghujung fail. Item boleh terdiri daripada aksara atau perkataan dan dipisahkan oleh tanda koma (,) atau item boleh juga sebuah baris data yang lengkap.

Mari kita biasakan dulu dengan pernyataan-pernyataan yang biasa digunakan untuk urusan ini iaitu:

(a) pernyataan OPEN(b) pernyataan CLOSE(c) pernyataan PRINT

PERNYATAAN OPEN

Pernyataan OPEN akan menyebabkan Just BASIC membuka fail. Fail perlu dibuka terlebih dahulu sebelum kita dapat menulis dan membaca sebarang maklumat yang terdapat didalamnya. Terdapat beberapa cara untuk membuka fail capaian jujukan (sequential), kaedah ini dinamakan sebagai modes.

(a) Mode OUTPUT

Mode OUTPUT adalah untuk menulis pada fail. Cara kod ditulis adalah seperti berikut:

open “failSaya.txt” for output as #pemegangSaya

Anda boleh perhatikan yang mode OUTPUT adalah terperinci. Item terakhir pada kod tersebut iaitu #pemegangSaya ialah nama yang diberikan (untuk memegang fail) oleh Just BASIC untuk membuka fail. Sebarang kod untuk menulis ke dalam fail ini perlu memasukkan rujukan ke #pemegangSaya. Dengan ini Just BASIC tahu fail mana untuk ditulis.Setiap pemegang fail bermula dengan aksara # diikuti oleh mana-mana perkataan atau digit. Adalah digalakkan menggunakan nama pemegang yang mudah diingat untuk mana-mana fail yang sedang dijalankan.

68

Page 69: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Anda tidak boleh membuka lebih dari satu fail pada satu-satu masa yang menggunakan pemegang fail (file handle) yang sama. Jika tidak program anda akan dibatalkan dengan ralat.

(b) Mode INPUT

Mode ini digunakan untuk membaca secara jujukan (sequential) dari fail. Cara ia ditulis adalah seperti berikut:

open “failSaya.txt” for input as #pemegangSaya

PERNYATAAN CLOSE

Pernyataan ini digunakan untuk menutup fail yang telah dibuka apabila kita telah selesai membaca atau menulis padanya. Ini adalah operasi yang perlu dan wajib disertakan apabila menguruskan fail semasa menulis aturcara. Kedua-dua pernyataan OPEN dan CLOSE mesti berada bersama misalnya contoh berikut:

open “failSaya.txt” for output as #pemegangSaya‘ masukkan sebarang kod disini yang merujuk kepada #pemegangSayaclose #pemegangSaya

Perkara lain yang perlu diingat ialah satu-satu fail yang dibuka dalam satu mode perlu ditutup terlebih dahulu sebelum ia boleh dibuka untuk mode yang lain. Jika anda ingin membaca fail yang telah ditulis padanya, anda perlu tutup dahulu fail berkenaan dan buka semula. Contoh adalah seperti berikut:

open “failSaya.txt” for output as #pemegangSaya‘ masukkan sebarang kod disini yang merujuk kepada #pemegangSayaclose #pemegangSaya

open “failSaya.txt” for input as #pemegangSaya‘ masukkan sebarang kod disini yang merujuk kepada #pemegangSayaclose #pemegangSaya

PERNYATAAN PRINT

Pernyataan ini biasa kita gunakan untuk paparan dalam tetingkap utama. Pernyataan PRINT juga boleh digunakan untuk menulis dalam fail yang telah sedia dibuka untuk OUTPUT berjujukan. Mari kita lihat contoh berikut:

open “failSaya.txt” for output as #pemegangSaya

print #pemegangSaya, “HELLO”print #pemegangSaya, “MALAYSIA!”

close #pemegangSaya

69

Page 70: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Aturcara yang ringkas ini akan menghasilkan satu fail dinamakan ‘failSaya.txt’ dan menulis 2 baris perkataan iaitu HELLO MALAYSIA! (setiap satu dikira sebagai satu item). Salin kod tersebut dalam Just BASIC dan jalankan aturcara tersebut. Setelah selesai, cuba kita uji dengan membuka fail bernama ‘failSaya.txt’ dalam direktori Just BASIC menggunakan program Notepad pada window anda. Dapatkah anda perhatikan hasilnya seperti berikut:

Kali ini mari kita aplikasikan pengetahuan yang ada dengan konsep OPEN dan CLOSE tadi. Kita akan gunakan contoh yang sama seperti yang dijelaskan sebelum ini berkenaan barangan dan harga. Semua kod aturcara asal digunakan, Cuma ada sedikit tambahan. Perhatikan dan salin aturcara berikut:

‘ Mengistihar tatasusunan barang dan hargadim barang$(5)dim harga (5)

for bilangan = 1 to 5

‘ Masukkan input pengguna untuk nama barang.input “Masukkan nama barangan :” ; namaBarang$barang$(bilangan) = namaBarang$

‘ Masukkan input pengguna untuk harga barang.input “Masukkan harga barang tersebut :” ; hargaBarangharga(bilangan) = hargaBarang

next bilangan

‘ Memaparkan semua maklumat yang diperolehi.printfor senarai = 1 to 5print “Barangan :” ; barang$(senarai) ; “ berharga RM“ ;harga(senarai)next senarai

' Menulis rekod ke dalam fail bernama barangSaya.txtopen "barangSaya.txt" for output as #barangSayafor kiraan = 1 to 5print #barangSaya, barang$(kiraan)print #barangSaya, harga(kiraan)next kiraanclose #barangSaya

end

70

Page 71: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Sepertimana contoh sebelum ini, masukkan data-data yang sama dari input barang dengan harga masing-masing. Maklumat barangan dan harganya boleh didapati dalam tajuk PENGISTIHARAN TATASUSUNAN yang dibincangkan sebelum ini. Apabila anda selesai memasukkan semua data hasil yang berikut akan diperolehi.

Tidak jauh bezanya dengan apa yang dipaparkan dalam tetingkap utama contoh sebelum ini bukan! Selanjutnya buka fail bernama ‘barangSaya.txt’ dalam direktori yang sama dengan Just BASIC dengan menggunakan Notepad window anda. Hasil yang dipaparkan adalah seperti berikut:

Apa yang berbeza ialah, aturcara ini mempunyai kelebihan menulis maklumat ke dalam fail yang dibuka. Oleh yang demikian, anda boleh menyimpan data yang telah diinput sebelum ini dalam bentuk fail. Fail yang dinamakan barangSaya.txt boleh dibuka pada

71

Page 72: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

bila-bila masa jika anda ingin membuat rujukan. Amat mudah, bukan? Pastinya anda telah bercita-cita untuk membuat sebuah program sendiri sepertimana Ms Word dan lain-lain. Namun kita perlu memahami lebih lanjut konsep manipulasi data dalam Just BASIC terlebih dahulu sebelum mengorak langkah lanjut dalam menghasilkan program yang baik.

MEMBACA DARI FAIL

Sebelum ini kita telah pelajari bagaimana memasukkan data ke dalam sesebuah fail yang baru dibina dengan pernyataan-pernyataan OPEN, CLOSE dan PRINT. Bagaimana pula untuk mengakses data dari fail yang telah ada? Kaedah yang selanjutnya ialah penggunaan pernyataan INPUT. Pernyataan ini boleh digunakan untuk mendapatkan maklumat dari papan kekunci dan juga dari fail yang terdapat dalam pemacu. Untuk membuka fail, kita perlu berada dalam mode INPUT dengan menggunakan pernyataan OPEN seperti berikut:

open “barangSaya.txt” for input as #barangSaya

Pernyataan INPUT untuk membaca dari fail yang dibuka tadi adalah hampir menyerupai pernyataan PRINT sebelum ini.

input #barangSaya, pembolehubah$

Dapatkah anda perhatikan penggunaan pemegang fail bernama #barangSaya dan juga penunjuk nama pembolehubah yang ingin dibuka iaitu pembolehubah$. Di dalam aturcara yang membaca senarai item dalam fail, pernyataan INPUT sepertimana diatas diletakkkan di dalam gelung (loop). Dengan cara ini, setiap item di dalam fail yang telah dibaca akan disimpan ke dalam tatasusunan.

Perkara yang paling mustahak dalam menguruskan item dalam sesebuah fail ialah kita tidak mengetahui berapa banyak item yang terdapat dalam sesebuah fail. Ini bermakna, kita tidak mengetahui setakat mana gelungan perlu dibuat untuk membaca data dari fail tersebut. Salah satu keadah menyelesaikan masalah ini ialah dengan menyertakan PRINT didalam program yang membina fail. Pernyataan PRINT ini akan menulis jumlah item pada permulaan fail sepertimana berikut:

' Menulis rekod ke dalam fail bernama barangSaya.txtopen "barangSaya.txt" for output as #barangSayaprint #barangSaya, 5

for kiraan = 1 to 5print #barangSaya, barang$(kiraan)print #barangSaya, harga(kiraan)next kiraan

close #barangSaya

72

Page 73: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Dalam contoh aturcara barangan dan harga, kita bernasib baik kerana mengetahui bahawa gelungan adalah sebanyak 5. Oleh itu hanya perlu tambah satu baris kod seperti diatas untuk meletakkan nilai 5 pada permulaan fail. Aturcara diatas apabila kita membuka fail yang telah dibuatnya, akan membaca nombor 5 pada permulaan fail dahulu sebelum meneruskan gelung untuk membaca lain-lain item. Jika anda menguruskan aturcara yang tidak menetapkan sebarang jumlah yang tetap, maka pembolehubah yang mewakili jumlah dalam gelungan boleh digunakan.

Sekarang, katakan kita mengetahui jumlah gelung yang hendak dibuat adalah 5, perhatikan aturcara berikut untuk membaca semula fail barangSaya.txt yang telah kita hasilkan sebelum ini. Terdapat fungsi EOF( ) yang bermaksud End Of File. Untuk sebarang pemegang yang diberi, ianya akan memulangkan nilai 0 jika bukan berada di penghujung fail dan nilai –1 jika berada di penghujung fail. Fungsi ini amat berguna untuk memeriksa sama ada kita telah berada dipenghujung fail atau sebaliknya.

' Mengistihar tatasusunan barang dan hargadim barang$(5)dim harga(5)print "Membaca fail bernama barangSaya.txt…"open "barangSaya.txt" for input as #barangSaya

[buatGelung]' Memeriksa samada akhir fail atau tidak.if eof(#barangSaya) = -1 then [tamatGelung]

' Dapatkan maklumat dari fail.input #barangSaya, barang$input #barangSaya, harga

' Membuat tatasusunan untuk setiap item.indeks = indeks + 1nama$(indeks) = barang$nombor(indeks) = harga

' Mengawal aliran gelung.if indeks = 5 then [tamatGelung]goto [buatGelung]

[tamatGelung]' Menutup fail.close #barangSaya

' Paparkan pada tetingkap utama data yang diperolehi.print "Maklumat yang diperolehi dari fail…"print "--------------------------------------"printfor kiraan = 1 to 5print "Nama barangan :" ; nama$(kiraan); " dan harganya " ; nombor(kiraan)next kiraanend

73

Page 74: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Salin aturcara tersebut dan jalankan. Aha…anda akan dapati paparan pada tetingkap utama adalah seperti berikut:

Pastilah maklumat yang dipaparkan adalah seperti mana yang kita telah key-in dalam contoh awal tadi, bukan. Contoh ini sememangnya agak mudah untuk difahami kerana kita telah mengetahui jumlah item yang telah ada dalam fail berkenaan. Seperti yang telah dinyatakan sebelum ini, jika kita tidak tahu berapa banyak item yang berada dalam sesebuah fail, cara yang paling baik ialah setiap program yang kita buat untuk menulis pada fail perlu memperuntukkan ruang khas pada permulaan fail. Ini adalah untuk menyimpan nilai jumlah item dalam fail berkenaan supaya dapat digunakan sebagai rujukan pada nilai pembolehubah berangka sebelum membuat gelungan.

MODE FAIL APPEND

Terdapat had pada penggunaan mode OUTPUT. Penggunaan mode OUTPUT adalah sesuai apabila kita ingin mencipta fail baru disebabkan sifatnya yang akan memadamkan segala isi kandungan data fail yang dibuka apabila digunakan. Cuba perhatikan contoh berikut dan jalankan Aturcara 1 dahulu:

Aturcara 1' Buka fail baru dan masukkan maklumat.open “nombor.txt” for output as #nomborfor x = 1 to 10print #nombor, xnext xclose #nombor

Aturcara 2‘ Buka semula fail dan masukkan maklumat.open “nombor.txt” for output as #nomborfor x = 11 to 20print #nombor, xnext xclose #nombor

74

Page 75: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Apabila anda selesai menjalankan Aturcara 1 diatas, buka fail nombor.txt dengan Notepad window. Pastinya maklumat berikut dapat dipaparkan:

Kali ini cuba tutup Notepad tersebut dan salin pula Aturcara 2 dalam Just BASIC serta jalankan ia. Kemudian buka semula fail bernama nombor.txt dan pastinya hasil berikut akan dipaparkan:

Ke mana hilangnya data asal dalam fail nombor.txt yang ditulis dari Aturcara 1 tadi? Jadi, bagaimanakah caranya kita mengekalkan data yang terdahulu dimasukkan supaya boleh digabungkan dengan data terkemudian. Dengan pengetahuan yang ada, satu-satunya cara untuk mengekalkan data terdahulu dengan OUTPUT ialah dengan membaca dahulu data dari fail asal kemudian menyelitkannya ke dalam fail yang baru. Selepas itu barulah data baru diselitkan ke dalam fail yang sedia terbuka.

Agak menyusahkan, bukan? Jadi, kita tidak mahu membuang masa memikirkan kaedah yang akan menyulitkan walaupun ianya tidak mustahil dilakukan. Ada satu kaedah yang lebih baik iaitu dengan menggunakan mode APPEND. Ianya digunakan untuk membuka fail untuk ditulis sepertimana mode OUTPUT. Mode APPEND membuka fail dari permulaan dan mengekalkan kandungan asal fail tersebut. Apa yang perlu kita lakukan ialah hanya menulis ke dalam fail tersebut dan setiap yang ditulis akan ditambah kepada penghujung fail.

75

Page 76: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Kali ini kita gunakan pula mode APPEND untuk mengekalkan kandungan asal dalam fail. Perhatikan contoh aturcara berikut:

‘ Buka fail dan masukkan maklumat.open “nombor.txt” for output as #nomborfor x = 1 to 10print #nombor, xnext xclose #nombor

‘ Buka fail untuk append.open “nombor.txt” for append as #nomborfor x = 11 to 20print #nombor, xnext xclose #nombor

end

Salin dan jalankan aturcara tersebut ke dalam penyunting Just BASIC anda. Perhatikan penggunaan APPEND (perhatikan baris kod yang ditandakan dengan anak panah ) menggantikan penggunaan mode OUTPUT dalam kod tersebut. Selesai sahaja anda menjalankan aturcara berkenaan, cuba buka semula Notepad window anda dan buka fail nombor.txt. Apakah kandungan maklumat yang terdapat didalamnya? Pasti paparan berikut akan diperolehi.

Kali ini semua maklumat dimasukkan tanpa perlu memadamkan maklumat asal. Ini adalah kaedah yang lebih menjimatkan masa dengan baris kod yang lebih pendek tanpa melalui proses yang mengelirukan.

76

Page 77: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

FAIL MENGHAD KOMA

Secara standard, kaedah membaca sebuah fail jujukan (sequential) dengan pernyataan INPUT akan memecahkan data yang dibaca pada hujung baris dengan tanda koma. Perhatikan kandungan fail-fail berikut:

Kandungan Fail 1 Kandungan Fail 2 Kandungan Fail 31, 2, 3, 4, 5, 6, 7, 8, 9, 10 1, 2, 3, 4, 5

6, 7, 8, 9, 1012345678910

Ketiga-tiga fail tersebut akan menghasilkan paparan output yang sama dengan penggunaan gelung berikut:

[gelung]

if eof(#masuk) then [hentiGelung]input #masuk, item$print item$

goto [gelung]

Oleh kerana tanda koma digunakan untuk mengasingkan item (tambahan pada setiap penghujung baris), format fail yang sebegini dikenali sebagai ‘penghad koma’ (comma delimited). Ini merujuk kepada format yang selalu digunapakai oleh aplikasi-aplikasi perisian komersial (misalnya helaian elektronik) untuk pilihan mengeksport data. Itulah sebabnya kita boleh menggunakan maklumat yang dijanakan oleh perisian tersebut dan maklumat ini boleh dipiawaikan sendiri oleh pengaturcara (anda!).

Apa kata jika kita ingin menggunakan tanda koma untuk disertakan dalam data? Pastinya timbul masalah, bukan. Misalnya, jika anda membuat aturcara yang memperuntukkan data alamat surat-menyurat rumah seperti berikut:

Mohamad Zaki 123, Jalan Chendana

45678 Petaling JayaSelangor

Bagaimana kita hendak memasukkan data 123, Jalan Chendana (ditunjukkan oleh anak panah ) yang memiliki tanda koma ‘,’ ditengahnya?

77

Page 78: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Perhatikan kod berikut:

input #masuk, nama$input #masuk, jalan$input #masuk, bandar$input #masuk, negeri$

Jika kita gunakan kod-kod diatas dalam membaca fail, item kedua iaitu jalan$ hanya akan mengambil nilai ‘123’ kerana tanda koma dengan ‘Jalan Chendana’. Ini bukanlah apa yang kita mahukan aturcara buat. Jadi, bagaimanakah masalah ini diselesaikan?

Pernyataan INPUT yang membaca seluruh baris termasuk tanda koma menggunakan LINE INPUT sebagai penyelesaiannya. Kali ini kita sudah perolehi selesaiannya dan kita ubahsuai kod-kod tadi kepada yang berikut:

line input #masuk, nama$line input #masuk, jalan$line input #masuk, bandar$line input #masuk, negeri$

Kali ini cuba kita melangkah setapak ke hadapan dengan menghasilkan sebuah aturcara ringkas yang membolehkan ia membaca mana-mana fail (termasuk mengandungi koma). Penggunaan pernyataan FILEDIALOG adalah untuk mendapat input nama fail *.txt dari pengguna (pengguna akan masukkan mana-mana nama fail yang berakhir dengan txt yang wujud). Kod aturcara adalah seperti berikut:

filedialog “PILIH NAMA FAIL TEKS ANDA :” , “*.TXT”, namaFail$

if namaFail$ = “ “ then endopen namaFail$ for input as #masuk

[gelungBaca]if eof(#masuk) then [hentiGelung]line input #masuk, barisanTek$print barisanTek$goto [gelungBaca]

[hentiGelung]close #masukend

Uji aturcara tersebut dan buka mana-mana fail yang berakhir dengan txt pada hujungnya. Sebagai contoh, buka fail-fail yang pernah kita buat sebelum ini seperti failSaya.txt, barangSaya.txt dan nombor.txt.

78

Page 79: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

LANJUTAN PENGURUSAN FAIL

Untuk lain-lain pernyataan yang biasa digunakan dan berkaitan dengan pengurusan sesebuah fail ialah pernyataan KILL dan pernyataan NAME.

Pernyataan KILL digunakan untuk memadamkan (delete) sesebuah fail. Cara digunakan ialah dengan syntak berikut:

kill “namaFail”

Pernyataan NAME pula digunakan untuk menamakan semula fail dengan nama yang lain. Cara penggunaan adalah seperti berikut:

name failLama + “.txt” as failBaru + “.dat”

Dalam contoh tersebut, failLama.txt ialah nama fail asal yang hendak ditukarkan kepada nama baru yang dinamakan failBaru.dat. Anda boleh menamakan nama fail baru dengan apa sahaja nama asalkan tidak menggunakan nama fail yang telah sedia wujud.

Seperti yang telah diterangkan sebelum ini, fail dicapai dengan beberapa kaedah. Dalam contoh-contoh sebelum ini, kita telah gunakan kaedah capaian jujukan (sequential method). Selain itu, terdapat 2 lagi kaedah capaian fail yang dikenali sebagai:

(a) kaedah capaian rawak (random access method). Fail yang dibuka dengan capaian ini untuk ditulis dan dibaca dalam satu masa yang sama.

(b) kaedah binari (binary method). Fail yang dibuka dengan capaian ini ditulis dan

dibaca pada permulaan mana-mana bahagian dalam fail.

Pengurusan fail dan data yang terdapat didalamnya merupakan satu bahagian yang paling penting dalam teknologi maklumat. Oleh yang demikian, untuk mengetahui lain-lain kaedah dan bagaimana manipulasi data dengan fungsi-fungsi tambahan lain, anda boleh merujuk kepada fail bantuan yang disediakan oleh Just BASIC. Bahagian ini memang amat berguna terutama bagi mereka yang ingin membuat pengaturcaraan berkaitan pangkalan data. Kita akan turut menggabungkan fungsi-fungsi yang digunakan sebelum ini untuk tajuk-tajuk berikutnya agar pengetahuan lebih mendalam untuk menyatukan kod-kod aturcara agar lebih bermakna untuk perisian yang dibina.

79

Page 80: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Artikel RingkasSOKONGAN TAMBAHAN PENGATURCARA

Sejak penggunaan internet popular, terdapat bermacam-macam laman web yang menjadi tulang belakang dalam menyediakan sokongan kepada para pengaturcara seluruh dunia. Pada masa kini, masing-masing mempromosikan bahawa bahasa pengaturcaraan merekalah yang terbaik dan memberikannya secara shareware mahupun freeware. Misalnya, jika mencubanya secara Shareware, anda diberi tempoh tertentu sebagai contoh 30 hari untuk menguji sesebuah perisian dan jika anda berminat, maka boleh membeli perisian tersebut secara on-line dan sebagainya. Freeware pula adalah bebas digunakan pada bila-bila masa dan tiada had kecuali anda tidak boleh mengubah perisian yang asal dan ianya masih lagi dalam perlindungan hakcipta intelek. Contoh freeware ialah bahasa pengaturcaraan Just BASIC.

Sememangnya internet sangat berguna kerana banyak maklumat terkini dan tambahnilai (upgrade) sesuatu perisian jika perlu. Selain itu ada juga laman-laman web yang menyediakan ruangan perbincangan untuk satu-satu topik tertentu. Ini boleh menambahkan lagi pengetahuan dan maklumat kerana sokongan komuniti yang banyak kadang-kala akan memberikan idea, menyelesai masalah bersama dan juga dapat memberi ruang bertukar pendapat.

Kadang kala, mungkin anda (sebagai pengaturcara) memiliki program yang telah siap dikompil dan ingin mengedarkannya kepada kawan-kawan untuk diuji dan sebagainya (mungkin juga untuk dijual…). Oleh yang demikian selain media sedia ada melalui salinan pada disket, cakera padat (CD), thumb/flash/USB drive dan sebagainya. Satu lagi cara yang pantas ialah dengan secara penghantaran elektronik melalui e-mail dan tapak web. Melalui kaedah ini, anda boleh muat turun (download) dengan mudah dan syarat paling penting ialah agar fail-fail yang dihantar mempunyai saiz yang tidak terlalu besar. Saiz yang agak besar akan melambatkan proses muat turun dan kadang-kala berlaku gangguan pada server dan talian membantutkan segala proses berkenaan.

Oleh yang demikian, cara paling berkesan ialah dengan memampatkan fail-fail berkenaan dengan perisian-perisian yang disediakan sama ada diperolehi secara percuma di internet dan sebagainya. Misalnya kita boleh gunakan program zip dan pemampat (compressor) untuk mengecilkan saiz fail supaya mudah dihantar secara elektronik. Setelah dihantar, pengguna boleh mengektrak semula fail yang dimampatkan tadi kepada fail asal.

Terpulanglah kepada pemilik program berkenaan sama ada ingin menggunakan cara distribusi yang paling baik bergantung kepada sasaran pengguna. Perlu diingat bahawa undang-undang hakcipta berkaitan teknologi maklumat mesti dipatuhi terutama berkenaan harta intelek. Gunakan hanya perisian yang asli dan jadilah pengguna (dan pengaturcara) yang bijak.

80

Page 81: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

ANTARAMUKA PENGGUNA GRAFIK

Kepentingan menggunakan antaramuka pengguna bergrafik (GUI) dalam sesebuah aplikasi tidak dapat dinafikan lagi pada masa kini. Ia memberi impak yang nyata terhadap konsep mesra pengguna. Bahagian ini akan membincangkan bagaimana membina tetingkap-tetingkap dan kawalan-kawalan yang terdapat padanya.

81

Page 82: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

ANTARAMUKA PENGGUNA BERGRAFIK

Apakah sebenarnya yang dinamakan sebagai antramuka pengguna bergrafik (Graphical User Interface – GUI)? Mungkin setiap orang mempunyai pendapat yang berbeza mengenainya namun apa yang pasti ialah jika anda menggunakan sistem operasi Microsoft Windows itu sendiri, anda sebenarnya telah menggunakan antaramuka pengguna bergrafik. Ini bermakna GUI ialah cara kita mengawal komputer dengan memanipulasikan tetingkap (kekotak yang berbentuk segiempat pada skrin monitor anda) dan menggunakan tetikus (mouse) sebagai alatan navigasi.

Sebelum ini, kita telah membincangkan pengaturcaraan yang memaparkan output dalam tetingkap utama (main window) sahaja. Antaramuka pengguna menggunakan tetingkap bergrafik bertindak sebagai pengantara kita dengan komputer. Ini sesuai dengan bahasa Just BASIC itu sendiri yang sebenarnya bahasa pengaturcaraan berasaskan windows. Kali ini, kita akan terus melebarkan pengetahuan mengenai pembinaan aturcara yang boleh menghasilkan tetingkap dan juga hasil-hasil bergrafik yang lain. Mari bermula dengan sebuah aturcara ringkas untuk menghasilkan sebuah tetingkap.

’ Membuka tetingkap.open “Tetingkap pertama saya!” for window as #pertama

’ Berhenti dan tunggu.waitend

Salin aturcara tersebut dan jalankannya. Paparan adalah seperti berikut:

82

Page 83: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Sebuah tetingkap baru akan dipaparkan dengan tertulis pada tajuk (title) tetingkap berkenaan “Tetingkap pertama saya!”. Dapatkah anda perhatikan lapisan sebelumnya adalah lapisan tetingkap utama (main window) yang kerap kita gunakan sebelum ini sebagai paparan. Sekarang tutup semula tetingkap anda (klik pada butang merah X pada bucu atas sebelah kanan tetingkap) dan aturcara ini ditamatkan.

Just BASIC menggunakan pernyataan-pernyataaan seperti OPEN, CLOSE dan PRINT untuk menguruskan kawalan pada tetingkap. Apabila sesebuah tetingkap dibuka, kita boleh hantar arahan untuk dipaparkan padanya. Selain itu, tetingkap boleh dibuka lebih dari satu pada satu-satu masa. Apa yang diperlukan ialah pernyataan OPEN berganda dan setiap tetingkap mestilah memiliki pemegang (handle) yang unik. Pemegang seperti dalam demonstarsi tadi ditunjukkan oleh #pertama.

MENGUBAH SAIZ DAN POSISI TETINGKAP

Kita boleh juga mengubah saiz dan posisi tetingkap yang hendak dihasilkan. Untuk menukar saiz tetingkap, terdapat 2 pembolehubah khas yang perlu disetkan terlebih dahulu iaitu WindowWidth dan WindowHeight sebelum tetingkap dibuka. Kita juga boleh mengenal pasti posisi pembukaan tetingkap dengan mensetkan 2 pembolehubah khas iaitu UpperLeftX dan UpperLeftY. Posisi yang diwakili oleh kedua-dua pembolehubah ini adalah secara relatifnya berkait dengan bucu atas sebelah kiri pada skrin monitor anda.

Sekarang kita cuba aturcara berikut dan jalankannya.

’ Membuka tetingkap dengan saiz 300 x 100 pada posisi 200, 150.WindowWidth = 300WindowHeight = 100UpperLeftX = 200UpperLeftY = 150open “Tetingkap pertama saya!” for window as #pertama

’ Berhenti dan tunggu.waitend

Tetingkap yang lebih kecil sedikit dengan kedudukan yang dinyatakan akan dipaparkan.

83

Page 84: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

MELETAKKAN BUTANG

Sekiranya anda perasan, progam-program berasaskan tetingkap banyak memiliki butang yang apabila kita klik padanya akan menjalankan arahan-arahan tertentu. Butang ini berbentuk segiempat dengan gambaran seperti tiga dimensi apabila diketik dengan tetikus. Sekarang, mari masukkan pula butang pada tetingkap kita. Tambahkan kod aturcara seperti dalam contoh berikut:

’ Membuka tetingkap dengan saiz 300 x 100 pada posisi 200, 150.WindowWidth = 300WindowHeight = 100UpperLeftX = 200UpperLeftY = 150BUTTON #pertama.ok, “OK!”, [klikOK], UL, 15, 15open “Tetingkap pertama saya!” for window as #pertama

’ Berhenti dan tunggu.wait

[klikOK]notice “Anda telah klik butang OK!”

[keluar]close #pertamaend

Dalam aturcara diatas, tambahan pada kod yang bermula dengan BUTTON adalah fungsi penyediaan butang kawalan. Cuba kita perhatikan keseluruhan baris kod ini satu persatu.

BUTTON #pertama.ok, “OK!”, [klikOK], UL, 15, 15

Item pertama iaitu #pertama.ok digunakan sebagai pemegang (handle) untuk butang tersebut. Perhatikan nama yang digunakan hampir sama dengan pemegang tetingkap. Cuma ada tambahan .ok untuk membezakannya dengan pemegang tetingkap.

Item kedua iaitu [klikOK] akan mengarahkan ke penanda cawangan [klikOK] apabila butang diketik semasa program dijalankan. Dalam kes ini, penanda cawangan [klikOK] pula akan menjalankan pernyataan NOTICE. Pernyataan NOTICE akan memaparkan sebuah kekotak dialog (dialog box) dengan perkataan “Anda telah klik butang OK!”.

Item ketiga pula iaitu UL akan memberitahu Just BASIC kedudukan butang OK! adalah secara relatif dengan bucu atas kiri pada tetingkap. Selain UL(upper-left), terdapat juga UR(upper-right), LL(lower-left) dan LR(lower-right) untuk membuat posisi butang pada tetingkap.

Salah satu pilihan ialah dengan menentukan saiz butang yang hendak dipaparkan. Just BASIC secara automatiknya akan memilih saiz untuk anda jika kita tidak tentukan saiz. Kita boleh ubah saiz butang tersebut , misalnya kepada lebar 75 piksel (pixels) dan tinggi 50 piksel (pixels).

84

Page 85: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

BUTTON #pertama.ok, “OK!”, [klikOK], UL, 15, 15, 75, 50

Pernyataan WAIT pula digunakan untuk menunggu sebarang input dari pengguna. Ini adalah pernyataan yang penting agar Just BASIC berhenti seketika untuk menunggu tindakan selanjutnya dari pengguna.

Jalankan aturcara anda dan hasil berikut akan dipaparkan.

Apabila anda klik pada butang OK! pada tetingkap berkenaan, kekotak dialog berikut akan dipaparkan pula.

Ketik pada butang OK dalam kekotak dialog NOTICE berkenaan dan aturcara anda ditamatkan. Jika anda perasan, kekotak dialog NOTICE menyerupai sebuah tetingkap ringkas yang mempunyai ikon serta butang tersendiri. Just BASIC memiliki keupayaan untuk memaparkan kekotak dialog kerana ianya adalah tetingkap terbina dalam khas untuk operasi-operasi rutin. Selain kekotak dialog NOTICE, terdapat lain-lain kekotak atau tetingkap dialog dengan keupayaan tersendiri (ini akan dibincangkan kemudian).

JENIS-JENIS TETINGKAP DALAM Just BASIC

Setakat ini, kita telah didedahkan dengan 2 jenis tetingkap yang biasa digunakan dalam mana-mana aplikasi GUI. Secara umumnya , Just BASIC memiliki 4 jenis tetingkap yang memiliki gaya dan variasi yang tersendiri.

(a) Tetingkap Biasa (window)

Tetingkap biasa ini adalah jenis yang paling banyak digunakan oleh pengaturcara. Contoh pada awal tadi sebenarnya ialah tetingkap biasa (window). Ia boleh mengandungi sebarang kawalan, saiz rangka (frame) yang boleh diubah atau tunda. Selain itu, ia juga

85

Page 86: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

boleh disertakan dengan MENU (menu tarik bawah). Pengguna juga boleh gunakan kekunci TAB untuk menggerakkan focus kawalan dalam tetingkap berkenaan.

(b) Tetingkap Grafik (graphic)

Tetingkap jenis ‘grafik’ ini sesuai untuk menayangkan grafik dan juga grafik bergerak (sprites). Ia tidak semestinya mengandungi kawalan didalamnya. Sesetengah kawalan tidak begitu berjalan lancar jika kita letakkan pada tetingkap grafik ini. Pengubahan saiz dan peletakan bar gelung (scrollbars) adalah optional.

(c) Tetingkap Dialog (dialog)

Tetingkap dialog atau kekotak dialog ini agak sama dengan jenis tetingkap biasa dan ianya boleh mengandungi semua kawalan kecuali MENU (Contoh sebelum ini ada menunjukkan bagaimana kekotak dialog NOTICE digunakan). Tetingkap ini membenarkan penggunaan kekunci TAB untuk menggerakkan focus kawalan dalam tetingkap. Ia juga boleh menetapkan butang tunggusedia (default) dan akan diaktifkan bila pengguna menekan kekunci Enter. Tetingkap ini amat berguna untuk mendapatkan maklumat dari pengguna (itulah sebabnya digelar dialog), disebabkan fokusnya untuk mendapat input pengguna dan tetingkap lain tidak dapat dibuka selagi pengguna tidak memberi reaksi terhadapnya.

(d) Tetingkap Teks (text)

Tetingkap jenis ini agak terhad keupayaan dan fungsiannya. Ianya tidak mengandungi kawalan-kawalan lain kerana ianya hanya berguna untuk memaparkan teks kepada pengguna. Selain itu, ia membenarkan pengguna menulis dan menyunting teks yang ada padanya. Tetingkap teks biasanya mengandungi bar MENU (untuk menu tarik bawah) yang sedia ada dengan tajuk File Menu dan Edit Menu.

MEMBUKA TETINGKAP

Membuka sebuah tetingkap seperti yang telah diterangkan sebelum ini adalah dengan pernyataan OPEN. Namun setiap tetingkap boleh memasukkan gaya yang digunakan dengan fungsi tambahan imbuhan (suffixes). Dengan kata lain, kita boleh setkan beberapa variasi yang dibenarkan untuk kegunaan tetingkap anda.

Kita perhatikan dahulu syntak kod yang digunakan untuk membuka tetingkap. Seperti contoh terdahulu kita membuka tetingkap dengan kod seperti berikut:

open "Tajuk Tetingkap" for jenis as #pemegang

86

Page 87: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Perhatikan pada ‘jenis’ dalam pernyataan OPEN diatas. Kita sebenarnya boleh menambahkan gaya dalam jenis tetingkap yang hendak dimasukkan. Berikut adalah senarai jenis tetingkap dan gaya yang hendak digunakan pada tetingkap berkenaan.

graphicsgraphic_fsgraphic_nsbgraphic_fs_nsbgraphic_nf_nsb

buka tetingkap grafik.buka tetingkap grafik dengan saiz penuh skrin.buka tetingkap grafik tanpa bar gelung (scrollbars)buka tetingkap grafik bersaiz penuh skrin tanpa bar gelung.buka tetingkap grafik tanpa rangka (frame) dan bar gelung.

texttext_fstext_nsbtext_nsb_ins

buka tetingkap teks.buka tetingkap teks dengan saiz penuh skrin.buka tertingkap teks tanpa bar gegelung.buka tetingkap teks tanpa bar gegelung dengan penyunting.

windowwindow_nf

buka tetingkap biasa.buka tetingkap biasa tanpa rangka.

dialogdialog_modaldialog_nfdialog_nf_modaldialog_fsdialog_nf_fs

buka tetingkap dialog.buka tetingkap dialog modal.buka tetingkap dialog tanpa rangka.buka tetingkap dialog modal tanpa rangka.buka tetingkap dialog dengan saiz penuh skrin.buka tetingkap dialog tanpa rangka dengan saiz penuh skrin.

Cuba kita uji gaya-gaya yang ada berdasarkan aturcara asal tadi. Setiap satu gaya mempunyai kelebihan dan kegunaan yang tersendiri. Pengaturcara boleh setkan gaya yang dikehendaki dengan meletakkan imbuhan (suffixes) tambahan seperti diatas. Salin aturcara berikut

’ Membuka tetingkap dengan saiz 300 x 100 pada posisi 200, 150.WindowWidth = 250WindowHeight = 100UpperLeftX = 200UpperLeftY = 150open “Menguji gaya tetingkap!” for graphics as #pertama

’ Berhenti dan tunggu.waitend

87

Page 88: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Jalankan aturcara berkenaan, paparan tetingkap grafik berikut mungkin akan dihasilkan:

Cuba anda ubah sedikit pada kod yang ditunjukkan dengan anak panah tadi dengan mengubahsuai dari graphics kepada graphics_nsb. Kemudian, jalankan aturcara tersebut dan paparan berikut akan dihasilkan.

Dapatkah anda lihat perbezaannya? Tetingkap grafik yang baru ini tidak mempunyai bar gelung (scrollbar) seperti yang pertama tadi, bukan. Kali ini, kita ubahsuai lagi kepada graphic_nf_nsb pula. Jalankan aturcara tersebut dan hasil yang berikut pula akan dipaparkan.

Apa pula perbezaan kali ini? Selain tidak mempunyai bar gelung, tetingkap berkenaan sebenarnya memiliki ciri tidak boleh dibesarkan saiz (rangka tepi tidak boleh dibesar dan kecilkan juga). Perhatikan butang Maksimum (Maximise) yang bertujuan untuk membesarkan tetingkap supaya sama saiz dengan skrin pada bucu atas sebelah kanan juga dikaburkan (disable).

Anda boleh mengubahsuai dan menguji aturcara berkenaan untuk melihat sendiri perbezaan-perbezaan yang terdapat pada tetingkap yang dihasilkan sama ada tetingkap biasa, grafik, dialog mahupun teks. Gunakan jadual yang diberi sebelum ini sebagai panduan anda. Anda digalakkan menguji sendiri setiap gaya dan tetingkap yang ada dan ini akan mempercepatkan pemahaman mengenai konsep gaya pada jenis-jenis tetingkap yang ada.

88

Page 89: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

KAWALAN PADA TETINGKAP

Sebelum ini kita telah didedahkan dengan kawalan yang dibuat pada tetingkap dengan butang kawalan BUTTON. Butang kawalan BUTTON digunakan untuk mengaktifkan kawalan apabila pengguna menekan atau klik dengan tetikus padanya. Selain daripada penggunaan butang-tekan ini, Just BASIC menyediakan beberapa lagi kawalan pada tetingkap yang biasa juga kita lihat dalam aplikasi-aplikasi komersil.

Just BASIC menyediakan 12 jenis kawalan pada tetingkap iaitu:

BMPbutton Butang ini dibentuk daripada fail imej grafik BMP (bitmap file)yang boleh di klik untuk mengaktifkan kawalan.

Button Butang-tekan berbentuk segiempat digunakan untuk mengaktifkan kawalan dengan klik padanya.

Checkbox Kotak kecil yang digunakan untuk arahan menanda (check) atau tidak tanda (uncheck) dari pengguna atau pengaturcara. Digunakan apabila ada option untuk dipilih pada tetingkap.

Combobox Memaparkan kotak teks kecil dengan anakpanah kebawah di hujung. Apabila ditekan anakpanah, senarai pilihan dalam bentuk jatuh-bawah (drop-down) akan dipaparkan untuk pengguna membuat pilihan.

Graphicbox Kekotak yang memaparkan imej grafik samada dalam bentuk BMP, juga objek lukisan seperti bulatan dan garisan. Digunakan lebih kepada paparan grafik untuk pengguna seperti paparan graf dan lukisan.

Groupbox Merupakan label dan kotak. Digunakan untuk membuat kumpulan supaya memudahkan penyelenggaraan arahan dan identifikasi.

Listbox Merupakan kekotak segiempat dengan senarai pilihan. Jika senarai agak panjang, bar gelung akan digunakan untuk navigasi senarai lain.

Menu Menu ini adalah menu jatuh-bawah (drop-down) yang diletakkan pada bar selepas bar tajuk.

Radiobutton Kotak bulat kecil yang mempunyai label teks. Diguna dalam kumpulan iaitu apabila salah satu pilihan ditanda, yang lain membatalkan tanda.

Statictext Merupakan teks ringkas sebagai maklumat kepada pengguna. Tiada interaksi dapat dibuat pada teks berkenaan.

Textbox Kekotak kecil yang mengandungi teks. Pengguna boleh memasukkan input dalam bentuk teks pada kekotak berkenaan.

Texteditor Kekotak teks yang lebih besar dengan bar gelung di kiri dan bawahnya. Digunakan mendapat input teks yang banyak dari pengguna.

89

Page 90: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

MENDAPAT INPUT DENGAN TEXTBOX

Textbox seperti yang telah diterangkan tadi merupakan salah satu daripada arahan yang boleh digunakan pada tetingkap. Sekarang, mari kita gunakan kawalan Textbox ini untuk memaparkan dan menyunting sebaris teks pada tetingkap. Kita akan gunakan pernyataan Textbox untuk membuat aturcara ini seperti berikut:

’ Membuka tetingkap dengan Button dan Textbox.‘ Saiz tetingkap pada 300 x 100 pada kedudukan 200, 150

WindowWidth = 300WindowHeight = 100UpperLeftX = 200UpperLeftY = 150

BUTTON #pertama.ok, “OK!”, [klikOK], UL, 15, 15TEXTBOX #pertama.baris, 60, 15, 200, 25open “Tetingkap pertama saya!” for window as #pertama

‘ Paparkan text ringkas dalam kekotak Textboxprint #pertama.baris, “Taipkan teks anda disini.”

’ Berhenti dan tunggu.wait

[klikOK]‘ Dapatkan kandungan dari kekotak Textboxprint #pertama.baris, “!contents? aString$”

‘ Paparkan tetingkap NOTICE dengan maklumat dari kekotak Textboxnotice aString$

[keluar]close #pertamaend

Jalankan contoh tersebut dan perhatikan bagaimana ianya berfungsi. Apabila anda mula menjalankan aturcara ini, akan dipaparkan tetingkap seperti berikut:

Cuba anda ubahsuai teks dalam kekotak yang memaparkan ‘Taipkan teks anda disini’ pada tetingkap berkenaan. Dalam kes ini saya akan taip ‘Selamat maju jaya’ pada kekotak tersebut. Kemudian, anda boleh klik pada butang OK! atau tekan kekunci Enter. Seketika kemudian, tetingkap dialog NOTICE berikut akan dipaparkan pula.

90

Page 91: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Klik butang OK pada tetingkap dialog berkenaan dan program ditamatkan. Jadi apakah sebenarnya telah terjadi dalam aturcara yang kita tulis tadi? Cuba kita kaji satu persatu tentang penggunaan Textbox tadi. Contoh kawalan Textbox amat ringkas seperti berikut:

TEXTBOX #pertama.baris, 60, 15, 200, 25

Item pertama iaitu #pertama.baris adalah pemegang (handle) untuk Textbox berkenaan sebagaimana contoh sebelum ini. Nombor-nombor 60 dan 15 adalah kedudukan kawalan yang secara relatif berada pada bucu atas kiri tetingkap berkenaan. Nombor-nombor 200 dan 25 pula adalah panjang (width) dan tinggi (height) kekotak kawalan Textbox. Jika tidak cukup panjang, pastinya teks tidak akan kelihatan dihujung baris kekotak kawalan. Begitu juga halnya jika tidak cukup tinggi, pasti tidak akan kelihatan langsung pada kekotak kawalan Textbox anda.

print #pertama.baris, “Taipkan teks anda disini.”

Selepas pernyataan OPEN, perhatikan pula paparan teks ‘Taipkan teks anda disini.’ di dalam kekotak Textbox. Pernyataan item print #pertama.baris ini digunakan untuk memasukkan teks tersebut ke dalam kekotak Textbox apabila program dijalankan.

Sekarang kita lihat pula dalam pananda cawangan (branch label) [klikOK]. Perhatikan baris kod berikut:

print #pertama.baris, “!contents? aString$”

Baris kod ini akan mengarahkan Just BASIC agar meletakkan kandungan dalam Textbox ke dalam pembolehubah yang dinamakan aString$. Kod ini juga boleh ditulis dalam dua pernyataan PRINT dan INPUT yang berasingan seperti mana kod-kod berikutnya:

print #pertama.baris, “!contents?” input #pertama.baris, aString$

Dalam menulis kod-kod sebegini, adalah penting untuk mempastikan tidak ada aksara yang tertinggal (tatatanda seperti ! dan ? juga mempunyai makna penting). Ini boleh mengakibatkan program tidak dapat berjalan dengan baik dan ralat dimaklumkan oleh Just BASIC jika kod yang ditulis tidak lengkap.

91

Page 92: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

MELABEL TETINGKAP DENGAN KAWALAN STATICTEXT

Setakat ini, rekabentuk tetingkap yang kita hasilkan sangat ringkas dan tidak memerlukan untuk memberi tanda padanya. Bagaimana jika kita ini memberi label atau meletakkan teks pada tetingkap mungkin sebagai maklumat tambahan dan sebagainya? Ini amat penting bagi aplikasi-aplikasi yang memerlukan banyak kekotak teks.

Perhatikan aturcara berikut yang diubahsuai sedikit dari yang pernah kita gunakan sebelum ini:

’ Membuka tetingkap dengan Button, Textbox dan Statictext.‘ Saiz tetingkap pada 300 x 100 pada kedudukan 200, 150

WindowWidth = 300WindowHeight = 100UpperLeftX = 200UpperLeftY = 150

BUTTON #pertama.ok, “OK!”, [klikOK], UL, 220, 35TEXTBOX #pertama.baris, 10, 35, 200, 25STATICTEXT #pertama.label, “Taipkan teks anda disini.”, 10, 10, 150, 25open “Tetingkap pertama saya!” for window as #pertama

’ Berhenti dan tunggu.wait

[klikOK]‘ Dapatkan kandungan dari lokasi kemasukan.print #pertama.baris, “!contents? aString$”

‘ Paparkan tetingkap NOTICE dengan maklumat dari kekotak Textboxnotice aString$

[keluar]close #pertamaend

Jalankan aturcara tersebut dan tetingkap berikut akan dipaparkan.

Pastinya perkataan ‘Taipkan teks anda disini’ dipaparkan diatas kekotak Textbox. Ini adalah satu arahan yang baik jika kita ingin memberikan maklumat kepada pengguna tentang apa yang perlu mereka lakukan. Lain-lain arahan adalah sama dengan contoh

92

Page 93: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

sebelum ini. Anda boleh taipkan apa sahaja dalam kekotak berkenaan dan klik butang OK! seterusnya tetingkap dialog NOTICE dipaparkan.

Perhatikan baris kod berikut yang mengandungi arahan Statictext.

STATICTEXT #pertama.label, “Taipkan teks anda disini.”, 10, 10, 150, 25

Sepertimana lain-lain arahan tetingkap, Statictext juga memerlukan pemegang (handle). Teks yang hendak dimasukkan menggunakan tanda “ ” untuk menyimpan kandungannya. Nombor-nombor 10 dan 10 ialah kedudukan teks yang ingin dipaparkan secara relatif dengan bucu atas kiri tetingkap. Nombor-nombor 150 dan 25 pula ialah panjang (width) dan tinggi (height). Perlu diingat bahawa saiz perlulah mencukupi untuk memaparkan aksara atau teks pada tetingkap. Jika tidak cukup panjang atau tinggi kemungkinan teks anda tidak akan kelihatan.

MEMERANGKAP AKTIVITI TUTUP PADA TETINGKAP

Setiap contoh-contoh sebelum ini sebenarnya menunjukkan bahawa kita boleh hentikan atau tutup tetingkap pada bila-bila masa. Ini dapat dilakukan sama ada dengan klik pada kotak menu, menekan kekunci Alt-F4 dan sebagainya. Apabila WINDOWS melalui aktiviti ini atau lebih diumpamakan sebagai peristiwa (event), maka tetingkap akan terus tertutup tetapi Just BASIC masih lagi menganggapnya terbuka. Ini akan menimbulkan masalah apabila kita cuba melakukan apa-apa aktiviti dengan tetingkap tersebut yang tidak lagi dipaparkan.

Keadaan ini diatasi dengan menghantar arahan perangkaptutup (trapclose) kepada tetingkap. Arahan ini akan memberitahu Just BASIC supaya mencangkuk ke dalam aktiviti WINDOWS yang menutup tetingkap kita.

Sekarang mari kita ubahsuai sedikit aturcara yang terdahulu dengan meletakkan arahan perangkaptutup (trapclose). Salin dan jalankan aturcara berikut:

’ Membuka tetingkap dengan Button, Textbox dan Statictext.‘ Saiz tetingkap pada 300 x 100 pada kedudukan 200, 150

WindowWidth = 300WindowHeight = 100UpperLeftX = 200UpperLeftY = 150

BUTTON #pertama.ok, “OK!”, [klikOK], UL, 220, 35TEXTBOX #pertama.baris, 10, 35, 200, 25STATICTEXT #pertama.label, “Taipkan teks anda disini.”, 10, 10, 150, 25open “Tetingkap pertama saya!” for window as #pertama

93

Page 94: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

‘ Hantar arahan trapcloseprint #pertama, “trapclose [keluar]”

’ Berhenti dan tunggu.wait

[klikOK]‘ Dapatkan kandungan dari lokasi kemasukan.print #pertama.baris, “!contents? aString$”

‘ Paparkan tetingkap NOTICE dengan maklumat dari kekotak Textboxnotice aString$

[keluar]‘ Tanya pengguna mahu keluar atau tidak.confirm “Betul anda nak keluar?”; jawab$

‘ Tidak jadi nak keluar.if jawab$ <> “yes” then wait

close #pertamaend

Jalankan aturcara tersebut dan paparan yang sama seperti contoh sebelum ini akan kelihatan iaitu seperti berikut:

Kali ini cuba kita uji perangkaptutup (trapclose) yang telah kita hasilkan pada aturcara tadi. Cuba anda tutup tetingkap ini dengan menekan butang tutup X (penjuru atas kanan) atau buka menu tarik-bawah pada ikon kecil Just BASIC (penjuru atas kiri) dan pilih Close atau pun anda tekan kekunci Alt-F4. Kesemuanya akan memberi arahan tutup pada tetingkap tersebut. Jadi dengan adanya perangkaptutup tadi, tetingkap dialog CONFIRM berikut akan dipaparkan.

94

Page 95: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Jika anda klik pada butang Yes maka tetingkap akan tertutup, sebaliknya jika anda klik pada butang No, maka anda akan kembali ke tetingkap asal. Jadi dengan tambahan baris kod print #pertama, “trapclose [keluar]” akan mengaitkan kawalan ke cawangan [keluar] yang mengandungi arahan tetingkap CONFIRM.

Dalam tetingkap CONFIRM ini pula, pengguna diminta sama ada mahu meneruskan program atau keluar. Jika pengguna mengklik pada butang Yes, maka arahan WAIT akan diaktifkan dan anda kembali ke tetingkap asal. Perhatikan baris-baris kod berikut.

confirm “Betul anda nak keluar?”; jawab$if jawab$ <> “yes” then wait

Penggunaan pernyataan if…then adalah untuk membuat pemilihan WAIT jika anda mengklik pada butang selain “yes”. Dalam tetingkap dialog CONFIRM, hanya terdapat 2 butang iaitu Yes dan No. Maka, ada dua pilihan sahaja yang boleh dijalankan.

PENGGUNAAN TETINGKAP DIALOG

Sebelum ini kita telah didedahkan dengan tetingkap atau kekotak DIALOG iaitu kekotak NOTICE dan CONFIRM. Ianya adalah tetingkap istimewa yang memiliki beberapa perbezaan dengan tetingkap lain antaranya ialah:

(a) Menekan kekunci Tab akan menyebabkan Windows melakukan kitaran kawalan yang ada pada kekotak dialog. Setiap kali kekunci Tab ditekan, kawalan aktif akan dialihkan ke tempat berikutnya.

(b) Tetingkap dialog boleh dijadikan Modal iaitu tetingkap aktif yang tidak akan membenarkan tetingkap utama dijalankan sehinggalah anda menutupnya.

(c) Saiz tetingkap dialog tidak boleh diubahsaiz oleh pengguna.

Sebagaimana namanya iaitu tetingkap DIALOG, ianya amat berguna untuk memaparkan notis yang ringkas, untuk respon Yes dan No, menggesa pengguna agar menaipkan sesuatu teks dan juga boleh digunakan untuk kawalan mencari fail-fail daripada senarai. Cuba perhatikan 4 jenis kekotak dialog berikut dan jalankan setiap satu contoh kod untuk melihat fungsinya dan paparannya:

1. NOTICE

Biasanya untuk menghantar mesej atau maklumat ringkas kepada pengguna.

‘ Memaparkan notis kepada pengguna.notice “Anda telah memasuki zon bahaya!”

95

Page 96: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Jalankan aturcara tersebut dan tetingkap berikut akan dipaparkan:

2. CONFIRM

Digunakan untuk menggesa pengguna sama ada membuat pilihan Yes atau No.

‘ Tanya untuk jawapan Yes atau No.confirm “Adakah anda ingin makan?”; jawapan$

Jalankan kod ringkas diatas dan tetingkap berikut akan dipaparkan:

3. PROMPT

Digunakan untuk mendapat maklumat rentetan daripada pengguna. Pengguna akan menaipkan sesuatu untuk memasukkan input yang diperlukan. Ia mengandungi butang OK dan juga Cancel untuk menghantar arahan selanjutnya.

‘ Menggesa pengguna memasukkan teks.prompt “Masukkan nama anda: “ ; nama$

Jalankan aturcara tersebut dan tetingkap penggesa berikut akan dipaparkan:

96

Page 97: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

4. FILEDIALOG

Biasanya digunakan untuk membuka senarai fail-fail dalam pemacu cakera keras dan lain-lain storan. Pengguna boleh memilih fail yang dikehendaki.

‘ Mencari namafail pilihan pengguna.

filedialog “Ambil fail pilihan” , “*.txt” , piliihan$

Jalankan aturcara ringkas diatas dan paparan berikut akan kelihatan.

Perhatikan bahawa baris kod tersebut digunakan untuk mengarahkan senarai fail yang mempunyai penghujung .txt sahaja disenaraikan. Kita boleh memilih salah satu fail yang ada atau boleh melakukan fungsi-fungsi lain yang dibekalkan pada kekotak dialog fail Windows ini.

97

Page 98: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

MENGUBAH FONT PADA TETINGKAP

Kita boleh menetapkan font (jenis, saiz atau bentuk aksara) untuk semua tetingkap yang dibenarkan oleh Just BASIC. Perhatikan baris kod berikut akan mensetkan font jenis Courier New (ditulis dalam kod dengan courier_new) dengan saiz 8 dan bentuk atribut sendeng (italic).

print #pemegang, "font courier_new 10 italic"

Apabila menggunakan tetingkap teks pula, pastikan arahan dengan aksara ! dihadapan. Perhatikan contoh berikut dan jalankan aturcara anda. Taipkan sebarang teks untuk menguji tetingkap teks berkenaan.

open "Menguji Font" for text as #pemegangprint #pemegang, "!font courier_new 15 italic"wait

Paparan berikut mungkin dihasilkan. Saya akan cuba mengujinya dengan menaipkan perkataan ‘Selamat datang kawan!’. Dapatkah anda lihat font tersebut adalah dari jenis Courier New dan saiznya agak besar sedikit serta dalam kedudukan sendeng (italic).

Daripada contoh yang telah dijalankan sebelum ini, specifikasi font boleh dibahagikan kepada 3 bahagian iaitu:

(a) Jenis font seperti Arial, Courier New dan sebagainya. Ianya perlu ditulis dengan huruf kecil (contohnya Courier New perlu ditulis sebagai courier_new)

(b) Saiz font.(c) Bentuk font sama ada bentuk senget (italic), tebal (bold), garis-tengah (strikeout)

atau garis-bawah (underscore).

LANJUTAN STATICTEXT

Untuk mendemonstrasikan lebih lanjut tentang statictext, mari kita cuba menjalankan aturcara ringkas berikut. Kita namakannya aturcara Countdown kerana memaparkan kiraan kebawah nombor dari 10 ke 1 sedikit demi sedikit. Jalankan aturcara berikut dan lihatlah hasilnya.

98

Page 99: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

' Demonstrasi penggunaan teks dengan Countdown.

STATICTEXT #countdown.stext, "Kiraan : ", 10, 10, 200, 25open "countdown" for window as #countdownprint #countdown, "trapclose [keluar]"

for count = 10 to 1 step -1 print #countdown.stext, "Kiraan : "; count t$ = time$() while t$ = time$() wendnext countprint #countdown.stext, "Kiraan : SELESAI!"wait

[keluar]close #countdownend

Perhatikan baris pertama kod statictext berkenaan akan memaparkan teks “Kiraan :” pada kedudukan yang dinyatakan. Selanjutnya pernyataan OPEN digunakan untuk membuka tetingkap biasa. Ini diikuti dengan perangkaptutup (trapclose) yang dibuat menghubungkan cabang [keluar].

Penggunaan for…next dengan kiraan dari 10 ke 1 merupakan gelung utama. Didalam gelung tersebut pula (digelar gelung tersarang), arahan paparan teks “Kiraan :” beserta dengan nombor (yang diwakili pembolehubah count) dibuat berdasarkan masa semasa. Masa semasa yang menggunakan fungsi time$( ) akan memperlahankan gerakan gelung mengikut detik masa. Jika tidak kita tidak mampu melihat proses ini kerana komputer memproses dengan kelajuan yang sangat pantas.

Berikut adalah paparan akhir apabila selesai pengiraan.

99

Page 100: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

MENGGUNAKAN NOMAINWIN

Tetingkap teks yang selalu terpampang setiap kali kita menjalan aturcara untuk membuka mana-mana tetingkap boleh ditutup fungsinya. Kebanyakan aturcara yang berasaskan GUI biasanya tidak memerlukan tetingkap teks berkenaan. Untuk menutup tetingkap ini, penggunaan NOMAINWIN adalah digalakkan dengan meletakkannya pada permulaan setiap program yang anda buat. Ianya digunakan untuk dua tujuan utama iaiatu:

(a) Menyembunyikan program tetingkap utama.(b) Menghalang notis ‘Execution Complete’ daripada dipapar apabila program tamat.

Dengan penggunaan NOMAINWIN ini, program anda haruslah memiliki keupayaan menutup dirinya sendiri apabila semua tetingkap telah ditutup. Cuba anda letakkan pernyataan ini pada mana-mana program. Hanya masukkan satu baris kod pada permulaan program seperti berikut:

nomainwin

LANJUTAN KAWALAN PADA TETINGKAP

Seperti yang telah dibincangkan dalam contoh-contoh sebelum ini, kawalan tetingkap amat penting dan kerap kali digunakan untuk berinteraksi dengan pengguna. Oleh yang demikian, kita perlu memahami kawalan-kawalan tetingkap yang ada untuk memberikan program yang kita bina lebih mesra pengguna.

1. BUTTON

Antara imej yang paling biasa kita nampak dalam GUI ialah butang kawalan berbentuk segiempat dalam keadaan seakan-akan tiga dimensi. Arahan yang digunakan untuk mengendalikan butang ini adalah BUTTON. Pernyataan ini akan meletakkan butang yang memiliki label teks pada tetingkap apabila dibuka dengan pernyataan OPEN. Bagi menetapkan lebar dan ketinggian pula adalah optional kerana Just BASIC akan secara automatik memberikan saiz pada butang tersebut. Syntak bagi BUTTON adalah seperti berikut:

BUTTON #pemegang.ext, “label”, penilai, bucu, posX, posY {,lebar, tinggi}

Perhatikan bahawa pernyataan ini dimulakan dengan #pemegang.ext iaitu pemegang bagi sesebuah tetingkap dan sambungannya (extension) yang unik untuk rujukan bagi butang tersebut. Label pula adalah teks yang digunakan dan akan dipaparkan didalam butang tersebut. Penilai pula adalah nilai yang akan diwakilkan apabila butang diaktifkan iaitu ketika pengguna mengklik pada butang berkenaan. Penanda cawangan boleh diletakkan sebagai penilai.

100

Page 101: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Bagi bucu rujukan pula anda boleh memilih 4 jenis bucu iaitu bucu UL (upperleft), UR(upperright), LL(lowerleft) dan LR(lowerright). Bagi meletakkan posisi butang berkenaan, boleh ditetapkan pada posX dan posY iaitu bersetentangan dengan bucu yang ditetapkan tadi. Contoh dalam tajuk perbincangan awal sebelum ini iaitu ‘Meletakkan Butang’ adalah kaedah atau teknik yang biasa digunakan untuk menulis kod aturcara dengan pernyataan BUTTON ini.

2. BMPBUTTON

Pernyataan ini adalah agak sama fungsinya dengan pernyataan BUTTON, cuma ianya menjadikan imej bitmap sebagai butang kawalan. Syntak yang digunakan adalah seperti berikut:

BMPBUTTON #pemegang.ext, filespec, penilai, bucu, posX, posY

Pernyataan ini dimulakan dengan #pemegang.ext untuk merujuk kepada tetingkap mana yang dibuka. Parameter filespec pula akan merujuk kepada kedudukan fail bitmap yang kita gunakan sebagai imej butang kawalan berkenaan (fail yang memiliki sambungan .bmp). Bagi penilai, seperti yang pernah dibincangkan adalah nilai yang akan diwakilkan apabila butang diaktifkan iaitu ketika pengguna mengklik pada butang berkenaan. Penanda cawangan boleh diletakkan sebagai penilai. Bagi bucu rujukan pula anda boleh memilih 4 jenis bucu iaitu bucu UL (upperleft), UR(upperright), LL(lowerleft) dan LR(lowerright). Bagi meletakkan posisi butang berkenaan, boleh ditetapkan pada posX dan posY iaitu bersetentangan dengan bucu yang ditetapkan tadi.

Untuk mendemonstrasi penggunaan BMPBUTTON, kita boleh menggunakan fail-fail bitmap yang turut disertakan dalam pakej Just BASIC. Kebanyakan fail ini disimpan dalam folder \bmp dalam folder utama Just BASIC itu sendiri. Cuba perhatikan contoh pernggunaan pernyataan BMPBUTTON berikut:

WindowWidth = 400WindowHeight = 200nomainwinBMPBUTTON #w.panah, "bmp\arrwbttn.bmp", [klik], UL, 10, 10open "Contoh kawalan BMPBUTTON" for window as #w

[gelung]wait

[klik]notice "Anda telah klik pada butang anakpanah."close #wend

Aturcara ringkas ini menggunakan sebuah fail bitmap dari folder \bmp iaitu arrwbttn.bmp sebagai butang kawalan. Anda boleh juga melukis sendiri butang kawalan

101

Page 102: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

asalkan ianya dalam format bitmap. Apabila pengguna klik pada butang berkenaan, arahan akan pergi ke penanda cawangan [klik] dan tetingkap notice dipaparkan. Jalankan aturcara berkenaan dan paparan berikut akan kelihatan:

3. CHECKBOX

Arahan ini akan meletakkan kawalan yang digelar kotak pemeriksaan (checkbox). Ianya merupakan paparan sebuah kotak kecil dengan label pada sebelah kanannya. Pengguna boleh klik dan tanda ‘checked’ akan kelihatan. Jika pengguna klik semula dalam kotak berkenaan, maka tanda ‘checked’ tersebut akan hilang. Ini bermakna kita boleh aktif dan nyahaktifkan sesuatu maklumat (on atau off). CHECKBOX boleh ditulis dengan syntak yang berikut:

CHECKBOX #pemegang.ext, “label”, setPmegang, resetPmegang, x, y, lebar, tinggi

Ada dua kelainan dalam syntak berkenaan iaitu setPmegang dan resetPmegang. Kedua-duanya digunakan untuk menghantar ke label cawangan apabila pengguna sama ada tanda pada kotak berkenaan atau sebaliknya. Untuk demonstrasi penggunaannya, cuba perhatikan aturcara berikut:

WindowWidth = 180WindowHeight = 160

nomainwin

button #1, "&Ok", [keluar], UL, 120, 90, 40, 25checkbox #1.cb, "Ini adalah CheckBox", [set], [reset], 10, 10, 130, 20textbox #1.tx, 10, 90, 100, 24

open "Cubaan CheckBox" for dialog as #1print #1, "trapclose [keluar]"

[inputGelung]input r$

102

Page 103: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

[set]print #1.cb, "set"goto [bacaCb]

[reset]print #1.cb, "reset"goto [bacaCb]end

[bacaCb]print #1.cb, "value?"input #1.cb, t$print #1.tx, "Saya telah di "; t$goto [inputGelung]

[keluar] close #1end

Dalam aturcara tersebut, kita gunakan input r$ untuk memberhentikan seketika bagi menunggu input pengguna. Cuba jalankan aturcara berkenaan dan paparan berikut akan kelihatan. Sekiranya anda klik pada kotak segiempat yang berlabel ‘Ini adalah kotak CheckBox’ dan uji semula dengan klik semula kemudiannya.

Apa yang terjadi ialah jika anda klik pada kotak berkenaan bermakna anda akan mengarah kawalan ke penanda cawangan [set], seterusnya dalam cabang berkenaan akan memapar ‘set’ pada TEXTBOX yang telah kita tetapkan. Keadaan yang sama akan berlaku jika checkbox dinyahaktifkan iaitu akan mengaktifkan penanda cawangan [reset] seterusnya akan memaparkan ‘reset’ pada TEXTBOX yang dipaparkan.

4. COMBOBOX

COMBOBOX atau kekotak kombo amat menyerupai LISTBOX melainkan ianya direka untuk menjimatkan ruang. Ini kerana ia hanya akan memaparkan item yang dipilih sahaja berbanding memaparkan keseluruhan item dalam senarai. Apabila pengguna klik pada anak panah checkbox pada penjuru sebelah kanan, senarai akan dipaparkan dalam bentuk

103

Page 104: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

senarai jatuh-bawah (drop down). Kemudian pengguna bolehlah memilih salah satu dari item-item yang terdapat dalam senarai tersebut. Apabila satu item dipilih, ianya akan difokuskan (highlight) dan nama item yang dipilih tadi akan dipaparkan apabila senarai jatuh-bawah telah ditutup.

Selain itu, pengguna boleh juga menaip ke dalam textbox yang merupakan sebahagian daripada COMBOBOX. Program kita boleh mendapatkan kandungan daripada bahagian ini. COMBOBOX memiliki pembolehubah rentetan yang juga turut menggunakan tatasusunan rentetan tertentu. Terdapat juga arahan untuk memuatkan semula item yang telah dikemaskinikan ke dalam kandungannya apabila kandungan tatasusunan rentetan telah berubah. Syntak bagi COMBOBOX adalah seperti berikut:

COMBOBOX #pemegang.ext, tatasusun$( ), penilai, posX, posY, lebar, tinggi

Cuba anda perhatikan bahawa terdapat parameter tatasusun$( ) dalam syntak diatas. Ianya adalah merupakan tatasusun rentetan yang akan mengandungi isi kadungan didalam COMBOBOX. Kita perlu mempastikan tatasusunan telah diistiharkan sebelum membuka tetingkap. Parameter penilai pula adalah penanda cawangan yang ditujui apabila pilihan telah dibuat dari item dalam COMBOBOX.

Perhatikan contoh aturcara ringkas yang berikut:

nomainwina$(1) = "Pertama"a$(2) = "Kedua"a$(3) = "Ketiga"a$(4) = "Keempat"

combobox #w.combo, a$(),[buatCombo],10,10,120,200open "Demonstrasi ComboBox" for window as #w#w "trapclose [keluar]"#w.combo "selectindex 1"

wait

[keluar]close #wend

[buatCombo]#w.combo "selection? pilih$"notice "Anda memilih ";pilih$wait

Dalam contoh diatas, kita mengistiharkan 4 tatasusun sebagai pertama, kedua, ketiga dan keempat. Item dalam tatasusun ini digunakan oleh COMBOBOX sebagai isi kandungan yang dipaparkan. Cuba anda jalankan aturcara tersebut dan buat pilihan Kedua seperti berikut:

104

Page 105: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Agak ringkas bukan. Apabila anda telah memilih item Kedua tersebut, maka arahan akan dihantar ke penanda cawangan [buatCombo]. Didalam penanda cawangan tersebut, tetingkap Notice akan diaktifkan seterusnya membuat paparan berikut:

Cuba dan uji lain-lain item dalam senarai pilihan dalam COMBOBOX yang anda telah bina. Paparan yang sama akan kelihatan dan setiap paparan tetingkap Notice akan memberikan maklumat berdasarkan pada pilihan anda.

5. LISTBOX

Kawalan tetingkap LISTBOX amat menyerupai COMBOBOX yang telah dibincangkan sebelum ini. Ianya merupakan kotak yang mengandungi senarai item yang boleh dipilih dalam sesebuah program. LISTBOX juga dimuatkan dengan penggunaan tatasusun

105

Page 106: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

rentetan dan arahan RELOAD akan mengemaskinikan kandungan dalamannya apabila tatasusun rentetan tersebut berubah atau diubah.Syntak penggunaan LISTBOX adalah seperti berikut:

LISTBOX #pemegang.ext, tatasusun$( ), penilai, posX, posY, lebar, tinggi

Parameter-parameter yang digunakan dalam LISTBOX adalah agak sama dengan yang digunakan dalam COMBOBOX. Hanya yang membezakan kedua-duanya ialah dari segi paparan iaitu LISTBOX dipaparkan secara terus dalam bentuk senarai yang terkandung dalam kotak dan menggunakan bar gelung untuk menyenaraikan item. COMBOBOX pula menggunakan kaedah senarai tarik bawah (pull down) untuk menyenaraikan item.

Kali ini cuba kita perhatikan contoh yang berikut untuk lebih memahami penggunaan LISTBOX dalam aplikasi yang dibina. Salin contoh berikut:

nomainwinWindowWidth = 270 : WindowHeight = 180pilihan$(0) = "Rambutan"pilihan$(1) = "Durian"pilihan$(2) = "Langsat"pilihan$(3) = "Jambu"pilihan$(4) = "Belimbing"

listbox #w.list, pilihan$(), [buatPilihan], 5, 35, 250, 90button #w, "Teruskan", [buatPilihan], UL, 5, 5button #w, "Batal", [batalPilihan], UR, 15, 5open "Pilihan buah kegemaran" for window as #wprint #w, "trapclose [keluar]"

[tunggu]wait

[buatPilihan]print #w.list, "selection? dipilih$"notice dipilih$ + " telah dipilih"goto [tunggu]

[batalPilihan]notice "Status pilihan dibatalkan"

[keluar]close #wend

Perhatikan penggunaan 5 tatasusun rentetan yang menyenaraikan nama buah-buahan. Berikutnya, apabila pengguna telah memilih salah satu daripada senarai berkenaan maka kawalan akan diarahkan ke penanda cawangan [buatPilihan]. Dalam penanda cawangan berkenaan, tetingkap Notice akan diaktifkan dan paparan berdasarkan pembolehubah rentetan dipilih$ akan ditayangkan dalam tetingkap berkenaan. Perhatikan juga kegunaan

106

Page 107: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

BUTTON sebagai pengaktif kawalan agar proses ini berjalan ketika pengguna klik pada butang ‘Teruskan’ dalam tetingkap berkenaan.Jalankan aturcara berkenaan dan paparan berikut akan kelihatan:

Cuba anda klik pada pilihan Rambutan dan seterusnya klik pada butang kawalan ‘Teruskan’ untuk melihat hasilnya. Pastinya tetingkap Notice berikut akan dipaparkan untuk menggesa pengguna.

Anda boleh menguji lain-lain pilihan dan klik pada butang ‘Teruskan’ untuk melihat kesan akan tindakan pilihan item yang telah dibuat. Apabila anda ingin keluar dari program, hanya perlu klik pada butang kawalan ‘Batal’ yang mengaktifkan penanda cawangan [batalPilihan] seterusnya [keluar] dalam aturcara berkenaan.

6. GROUPBOX

Fungsi kawalan ini adalah untuk menggabungkan arahan-arahan lain ke dalam satu kumpulan dalam sebuah kotak. Ianya akan membuat kawalan tetingkap seolah-olah tersarang dalam sebuah kumpulan. GROUPBOX amat berguna apabila digabungkan dengan fungsi-fungsi yang terdapat dalam RADIOBUTTON. Ini disebabkan keperluan untuk menggabungkan beberapa RADIOBUTTON ke dalam sebuah kumpulan untuk memilih hanya satu sahaja butang kawalan yang aktif. Syntak yang digunakan adalah seperti berikut:

GROUPBOX #pemegang.ext, “label”, x, y, lebar, tinggi

107

Page 108: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Contoh penggunaan GROUPBOX akan dibincangkan dalam tajuk RADIOBUTTON.7. RADIOBUTTON

Kawalan RADIOBUTTON adalah agak unik kerana ia biasanya digunakan lebih daripada satu pada satu-satu masa. Kegunaannya ialah untuk mendapatkan maklum balas pilihan daripada beberapa RADIOBUTTON. Hanya satu sahaja RADIOBUTTON akan dibenarkan aktif pada satu-satu masa. Ini bermakna jika pengguna klik pada satu butang, maka butang-butang lain RADIOBUTTON akan dinyahaktifkan secara automatik.

Syntak yang digunakan untuk menulis kod adalah seperti berikut:

RADIOBUTTON #pmegang.ext, “label”, setPmegang, resetPmegang, x, y, lebar, tinggi

Perhatikan bahawa “label” merupakan penanda teks yang digunakan untuk dipaparkan pada tetingkap manakala setPmegang merupakan penanda cawangan yang akan aktif jika memilih RADIOBUTTON berkenaan dan resetPmegang akan mengarah ke penanda cawangan lain jika dinyahaktifkan (atau pun tidak diaktifkan). Biasanya penggunaan RADIOBUTTON adalah secara bersama dengan GROUPBOX kerana kebolehannya untuk mengumpulkan sekumpulan RADIOBUTTON dalam satu bahagian. Cuba perhatikan contoh yang berikut:

nomainwin

WindowWidth = 520WindowHeight = 220

groupbox #w, "Apakah nama ibu negara Malaysia?", 240, 20, 200, 140radiobutton #w.kl, "Kuala Lumpur", [kl], [tiada], 260, 45, 130, 20radiobutton #w.jb, "Johor Bahru",[jb], [tiada], 260, 70, 130, 20radiobutton #w.kk, "Kota Kinabalu", [kk], [tiada], 260, 95, 130, 20

groupbox #w, "Apakah nama ibu negeri Selangor?", 20, 20, 200, 140radiobutton #w.as, "Alor Setar", [as], [tiada], 40, 45, 130, 20radiobutton #w.kb, "Kota Bharu", [kb], [tiada], 40, 70, 130, 20radiobutton #w.sa, "Shah Alam", [sa], [tiada], 40, 95, 130, 20button #w, " &OK ", [ok], UL, 450, 30

open "Soalan-soalan Percubaan" for dialog as #wprint #w, "trapclose [keluar]"

print #w.kk, "set"print #w.sa, "set"

[gelung] wait

[kl] status$ = "Kuala Lumpur"

108

Page 109: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

wait

[jb] status$ = "Johor Bahru" wait

[kk] status$ = "Kota Kinabalu" wait

[as] cstatus$ = "Alor Setar" wait

[kb] cstatus$ = "Kota Bharu" wait

[sa] cstatus$ = "Shah Alam" wait

[ok] msg$ = status$ + chr$(13) + cstatus$ + chr$(13) msg$ = msg$ + "Anda pastikah jawapan ini?" confirm msg$ ; answer$

[keluar] close #w end

[tiada] wait

Dalam contoh tersebut, terdapat 2 kumpulan RADIOBUTTON masing-masing dengan penanda cawangan yang tersendiri. Kesemua nyahaktif akan dihantar ke penanda cawangan [tiada]. Apabila semua pilihan telah disetkan dan pengguna klik pada butang ‘Ok’, maka semua pembolehubah rentetan yang diterima dari ketetapan akan dihantar ke [ok]. Dalam penanda cawangan [ok] pula, tetingkap Confirm akan diaktifkan untuk menggesa pengguna dengan maklumat yang digabungkan sebagai msg$. Selanjutnya program akan ditutup dengan sendiri apabila sampai ke penanda cawangan [keluar].

Fungsi “set” pula akan menetapkan item yang ditanda sebagai pilihan asal iaitu semasa anda membuka program, butang berkenaan telah ditandakan. Sekarang mari kita uji aturcara tersebut dengan menjalankannya dan paparan berikut akan kelihatan:

109

Page 110: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Cuba anda pilih ‘Shah Alam’ dan ‘Kuala Lumpur’ sebagai jawapan dan klik butang Ok. Hasilnya, tetingkap Confirm berikut akan dipaparkan untuk menggesa pengguna. Oleh kerana kita tidak setkan apa-apa tindakan sama ada memilih Yes atau No, maka program akan dihentikan apabila anda klik mana-mana butang.

8. MENU TARIK BAWAH

Menu merupakan antara arahan yang paling biasa terdapat dalam mana-mana aplikasi komputer. Kedudukan menu yang berada pada baris selepas tajuk tetingkap agak mudah digunakan dan merupakan piawai biasa meletakkan menu pada penjuru atas kiri tetingkap aplikasi. Apabila pengguna klik pada tajuk menu, maka satu senarai item dalam bentuk tarik bawah (pull down) akan dipaparkan dibawahnya. Just BASIC memiliki keupayaan untuk menghasilkan menu tarik bawah sebagai kawalan program yang dibina.

Syntak yang digunakan untuk menghasilkan menu tarik bawah adalah seperti berikut:

MENU #pmegang, “tajuk”, “teks1”, [cabang1], “teks2”, [cabang2], “teks2”, |, …

Arahan ini akan membuat menu tarik bawah dengan pemegang tetingkap yang ditetapkan dengan “tajuk” merupakan nama bagi menu tarik bawah berkenaan. Perhatikan “teks1” diikuti [cabang1] dan “teks2” diikuti dengan [cabang2], yang bermakna setiap teks akan membawa kawalan ke penanda cawangan yang telah ditetapkan.

110

Page 111: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Tanda ‘|’ pula bermaksud garisan pemisah antara item-item dalam menu. Ianya adalah optional dan agak berguna jika kita ingin memisahkan item-item dalam menu berkenaan dengan garisan agak nampak lebih kemas dan teratur mengikut kategori.

Tanda ‘&’ pula boleh diletakkan pada “tajuk” dan “teks” untuk membolehkan aksara yang akan menjadi ‘hotkey’. Ini bermaksud jika pengguna menekan kekunci Alternate bersama dengan huruf atau aksara yang telah ditanda dengan ‘&’ ini, maka secara automatik arahan mengaktifkan item berkenaan. Dalam paparan menu tarik bawah, ianya akan ditandakan dengan garis bawah.

Sekarang kita cuba hasilkan sebuah aturcara ringkas yang menggunakan menu tarik bawah sebagai kawalan. Perhatikan aturcara ringkas berikut sebagai contoh:

nomainwin

menu #w, "Warna", "Merah", [merah], "Hijau", [hijau], "Biru", [biru]menu #w, "Bentuk", "Segiempat", [segi4], "Bulat", [bulat], “Segitiga”, [segi3]

open "Contoh Penggunaan Menu" for graphics_nsb as #wprint #w, "trapclose [keluar]"wait

[merah]wait

[biru]wait

[hijau]wait

[segi4]wait

[bulat]wait

[segi3]wait

[keluar]close #wend

Dalam contoh aturcara tersebut, terdapat 2 menu yang dinamakan sebagai Warna dan Bentuk. Setiap item dalam menu tarik bawah berkenaan akan mengarahkan kawalan ke penanda cawangan yang telah disetkan dalam aturcara. Jalankan aturcara anda dan paparan yang berikut akan dihasilkan. Cuba uji kawalan menu dengan klik pada item-item yang tedapat didalamnya.

111

Page 112: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

9. TEXTEDITOR

Kawalan tetingkap dengan arahan TEXTEDITOR ini agak sama dengan TEXTBOX melainkan ianya memiliki bar gelung (scrollbar) bersama set-set arahan lain. Ianya sangat sama dengan jenis tetingkap teks dan membolehkan sebahagian besar teks dimasukkan oleh pengguna. Ini amat berguna apabila pengguna ingin menghasilkan sebuah aplikasi yang memerlukan banyak input teks sepertimana Ms Notepad.

Syntak penggunaan TEXTEDITOR adalah seperti berikut:

TEXTEDITOR #pemegang.ext, posX, posY, lebar, tinggi

Dengan penambahan TEXTEDITOR ini akan menyebabkan tetingkap secara automatik memaparkan bar menu yang mengandungi menu EDIT. Fungsi-fungsi yang terdapat dalam menu EDIT berkenaan adalah sama dengan item yang biasa kita gunakan dalam penyunting teks dalam tetingkap utama.

112

Page 113: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

ASAS PENGATURCARAAN GRAFIK

Kebolehan untuk menghasilkan grafik dalam Just BASIC dibincangkan dalam bahagian ini. Ini meliputi asas-asas pernyataan yang digunakan untk menghasilkan imej dengan turtle graphic dan warna-warna yang disokong. Selain itu, objek ringkas juga dapat dilukis dengan mudah seperti garisan, segiempat dan bulatan. Bagaimana melukis carta pai juga akan turut diselitkan untuk mempelbagaikan kaedah melukis dengan kod. Interaksi lukisan dengan kawalan misalnya tetikus membolehkan lukisan dibuat secara masa nyata. Imej grafik juga boleh dimuat turun dari fail bitmap dan bagaimana menggunakan kaedah ini untuk mendapat imej yang baik turut diterangkan bersama contoh.

113

Page 114: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

PENGATURCARAAN GRAFIK

Salah satu yang mendorong kebanyakan orang mendekati komputer ialah dengan keupayaannya menghasilkan grafik. Didalam pasaran pada hari ini, kita boleh dapati berbagai-bagai perisian grafik dengan fungsi-fungsi manipulasi imej yang berguna. Malahan jika anda suka menonton wayang, kebanyakan imej efek khas dihasilkan dengan bantuan komputer. Jika anda lihat permainan-permainan computer, semuanya mempamer grafik yang berkualiti tinggi dan kadang kala menyamai imej sebenar.

Kita beralih kepada tajuk asal iaitu pengaturcaraan grafik dengan Just BASIC. Komputer mungkin digunakan untuk menghasilkan diagram, graf, animasi, lukisan seni, corak-corak dan sebagainya. Bahasa pengaturcaraan Just BASIC juga memiliki keupayaan grafik dan ianya dicapai dengan 2 kaedah kawalan grafik berbeza iaitu dengan:

(a) Penggunaan tetingkap grafik.(b) Penggunaan kekotak grafik (graphicbox)

Just BASIC boleh menghasilkan tetingkap grafik dengan pernyataan OPEN sepertimana lain-lain tetingkap. Perhatikan baris kod berikut.

open “Kawasan Lukisan!” for graphics as #utamawait

Kita boleh menambah lebih daripada satu kekotak kawalan GRAPHICBOX dalam tetingkap lain. Perhatikan aturcara berikut yang menyelitkan kekotak grafik ke dalam tetingkap biasa:

graphicbox #utama.lukis, 10, 10, 150, 200open “Kawasan Lukisan!” for window as #utamawait

Kedua-dua kawalan grafik berkenaan memahami arahan-arahan grafik yang dihantar oleh satu-satu arahan. Kaedah kedua memiliki boleh digunakan untuk memberikan lebih dari satu kawasan lukisan yang dihasilkan dengan kawalan tetingkap atau kekotak dialog yang lain.

OPERASI GRAFIK

Semenjak zaman dahulu hingga ke hari ini, manusia menggunakan pensel/pen dan kertas untuk membuat sesuatu lukisan. Kedua-duanya mesti ada supaya kita dapat menghasilkan lukisan yang indah tidak kira apa jenis sekalipun. Di dalam Just BASIC, operasi melukis juga dilakukan dengan pen. Pen ini tidak kelihatan tetapi konsepnya sama dengan melukis di atas kertas.

114

Page 115: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Dalam konsep ini, pen boleh jadi sama ada berada ‘diatas’ atau ‘dibawah’. Jika berada diatas, operasi melukis tidak kelihatan (samalah dengan anda mengangkat pen dari kertas dan menggerakkan pen!). Sebaliknya jika pen berada dibawah dan jika pen digerakkan, operasi melukis akan kelihatan (samalah dengan anda meletakkan pen pada permukaan kertas dan mula melukis!).

Operasi melukis boleh melibatkan perkara-perkara berikut:

(a) Grafik TURTLESepertimana penjelasan sebelum ini, grafik TURTLE boleh dilukis dengan pen dengan arahan kebawah yang boleh digerakkan dari satu lokasi ke lokasi yang lain. Ia sesuai digunakan untuk melukis grafik dan objek interaktif.

(b) Objek TersediaObjek tersedia seperti kekotak (boxes), garisan (lines) dan bulatan (circle) juga boleh digunakan dalam grafik. Beberapa criteria darinya boleh diubahsuai seperti saiz dan warna. Anda juga boleh memenuhi warna dalam sesebuah kekotak dan bulatan.

(c) Grafik TeksArahan grafik juga mempunyai keupayaan untuk meletakkan teks pada kawalan pada kedudukan yang dikehendaki.

(d) Saiz dan WarnaSaiz (width) sesuatu pen yang digunakan juga boleh diubahsuai mengikut keperluan. Kawalan warna juga boleh disetkan malahan mampu mengisi objek tersedia yang dilukis.

Lanjutan daripada penerangan sebelum ini, pasti anda perasan akan nama ‘turtle graphic’ yang bukanlah bermakna seekor penyu. Dari segi sejarahnya, disebabkan sesetengah versi sistem komputer yang agak berbeza sedikit, maka terdapat komputer yang menggunakan kertas sebenar dan juga memiliki pen khas yang dilampirkan pada robot kecil yang berbentuk seperti penyu (berbentuk bujur hemisfera). Cara melukis sebegini kerap dipanggil sebagai ‘turtle graphic’. Just BASIC menyokong gaya lukisan sebegini dengan hanya beberapa arahan ringkas. Berikut adalah arahan-arahan yang boleh digunakan dalam grafik TURTLE tersebut:

up Mengangkat pen keatas (jangan melukis!).down Meletak pen kebawah (boleh melukis!).home Meletakkan pen ditengah-tengah kawasan grafik.go Gerak ke hadapan dari posisi semasa.goto Pergi ke posisi yang spesifik.place Pergi ke posisi spesifik tetapi tidak melukis.turn Pusing turtle ke arah lawan-jam dengan jumlah sudut yang dinyatakan.north Menyebabkan turtle mengarah ke utara (arah atas).posxy Memberitahu kita kedudukan atau lokasi turtle.

115

Page 116: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Mari kita cuba menggunakan grafik turtle ini untuk melukis. Salin kod-kod yang agak panjang berikut dan jalankannya.

' Melukis kotak.open "Melukis Kotak" for graphics as #lukis

' Angkat pen dan tujui lokasi pertama.print #lukis, "up"print #lukis, "home"print #lukis, "north"print #lukis, "go 50"print #lukis, "turn 90"print #lukis, "go 50"

' Letakkan pen dan mula melukisprint #lukis, "down"print #lukis, "turn 90"print #lukis, "go 100"print #lukis, "turn 90"print #lukis, "go 100"print #lukis, "turn 90"print #lukis, "go 100"print #lukis, "turn 90"print #lukis, "go 100"

waitend

Apakah yang dipaparkan dalam tetingkap grafik anda? Anda telah menghasilkan sebuah grafik segi empat yang pertama. Tahniah! Tetingkap grafik anda mungkin seperti berikut:

Sekarang cuba gerakkan kebawah dengan menggunakan bar gelung (scrollbar). Lihat ilustrasi kedua diatas. Pastinya segi empat kita tadi teralih ke atas tetingkap. Biarkan hanya tinggal separuh segiempat berkenaan.

116

Page 117: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Gerakkan keatas kembali ke kedudukan asal. Apakah yang berlaku pada segiempat yang kita hasilkan sebelum ini. Didapati garisan yang telah dihasilkan sebelum ini hilang. Ini adalah disebabkan kita belum memberitahu Just BASIC yang kita telah selesai melukis secara bersekuen. Untuk menjadikan lukisan kita sebelum ini ‘melekat’ pada tetingkap tersebut memerlukan arahan FLUSH.

Sekarang, cuba anda selitkan arahan berikut diakhir kod iaitu sebelum pernyataan WAIT dan END. Kemudian uji semula aturcara anda dan pastinya segiempat tersebut ‘terlekat’ pada tempatnya walaupun anda meminima atau maksimakan tetingkap utama.

print #lukis, “flush”

Kod-kod yang anda telah jalankan tadi amat panjang dan banyak mengulang arahan. Ada beberapa cara untuk meringkaskan kod berkenaan misalnya anda boleh gunakan tanda semicolon ; untuk memisahkan arahan dalam satu baris yang sama. Jika kod berulang, anda juga boleh gunakan gelung seperti for…next. Perhatikan kod panjang sebelum ini yang ditulis semula seperti berikut:

' Melukis kotak.open "Melukis Kotak" for graphics as #lukis

' Angkat pen tujui lokasi dan letak semula pen.print #lukis, "up; home; north; go 50; turn 90; go 50; down"

' Mula melukis segiempat.for x = 1 to 4print #lukis, "turn 90; go 100"next x

print #lukis, “flush”waitend

117

Page 118: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Mari kita gunakan fungsi grafik ini menghasilkan sebuah karya seni yang ringkas dan penghasilannya boleh dianimasikan. Aturcara ringkas berikutnya akan menghasilkan garisan-garisan yang diadunkan untuk membentuk spiral. Kita namakan ianya sebagai aturcara Lukis Spiral. Salin dan jalankan aturcara berikut:

' Demonstrasi melukis spiral.open "Lukis spiral" for graphics as #lukisprint #lukis, "trapclose [keluar]"print #lukis, "home; down"

for x = 1 to 100print #lukis, "turn 91; go "; x*2t$=time$()while t$=time$()wendnext x

print #lukis, "flush"wait

[keluar]close #lukisend

Perhatikan bagaimana kita gunakan nilai pembolehubah x yang telah digelung dengan for…next. Hasilnya akan memaparkan perubahan pada arahan go yang berganda 2 kali setiap kali gelung beredar. Perhatikan bagaimana adanya jarak (space) antara arahan go dengan penutup kata ” (perhati dengan teliti: go ”; x * 2).

Arahan kod-kod melibatkan time$() seperti yang digunakan dalam program sebelum ini adalah untuk melambatkan gelung supaya kita boleh melihat animasi bagaimana spiral dilukis satu persatu.

118

Page 119: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

LANJUTAN FLUSH DAN SEGMEN

Lukisan berlaku dalam segmen dan ianya seolah-olah beratur satu per satu hingga ke segment lukisan yang terakhir. Arahan FLUSH akan menutup segmen semasa dan membuka segment yang baru. Segment yang telah ditutup ini akan digunakan semula untuk melukis pada tetingkap apabila diperlukan. Sekiranya segmen lukisan tidak ditutup dengan arahan FLUSH ini, lukisan tersebut dianggap tidak wujud apabila keperluan untuk membentuk semula kawasan yang telah dilukis tadi diperlukan. Cuba aturcara berikut sebagai demonstrasi tambahan:

nomainwingraphicbox #tingkap.lukis, 5, 5, 250, 250open "Tiga Bulatan" for window as #tingkap

print #tingkap.lukis, "home; down"print #tingkap.lukis, "fill green"

print #tingkap.lukis, "circle 100"print #tingkap.lukis, "flush"print #tingkap.lukis, "circle 60"print #tingkap.lukis, "flush"print #tingkap.lukis, "circle 30"print #tingkap.lukis, "flush"wait

Aturcara ini dinamakan sebagai Tiga Bulatan dan cuba jalankan aturcara ringkas ini dan paparan berikut akan dihasilkan:

Sekiranya tetingkap grafik dan graphicbox menerima arahan lukisan yang banyak, adalah dinasihatkan supaya memadamkan segemen yang tidak diperlukan. Jika lukisan segemen tidak dipadamkan, RAM (random access memory) pada komputer anda berkemungkinan

119

Page 120: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

akan dipenuhi arahan lukisan ini. Terdapat 2 cara untuk memadam (delete) arahan lukisan yang tidak dikehendaki ini iaitu CLS dan DISCARD.

Arahan CLS

CLS adalah cara yang paling mudah sekali memadamkan arahan lukisan. Penggunaan adalah dengan menempatkan arahan CLS sebelum arahan lukisan grafik yang baru. Penggunaan kaedah ini akan menyebabkan skrin menjadi kosong serta merta sebelum lukisan baru ditayangkan. Keadaan ini sebenarnya akan menyebabkan skrin akan berkelip-kelip pada grafik atau animasi jika digunakan.

print #tingkap.lukis, “cls”

Adalah tidak mustahil untuk memadamkan setiap satu segmen yang tidak diperlukan. Dengan kaedah ini, kita tidak akan memadamkan seluruh grafik, maka efek kerdipan tidak akan kelihatan. Setiap segmen memiliki nombor dan setiap kali segmen ditutup dengan arahan FLUSH, setiap segmen akan memiliki nombor lebih besar sebanyak 1 daripada yang terdahulunya. Ini bermakna segmen terakhir sebenarnya lukisan anda paling awal dalam senarai. ID segment pertama ialah 1, segmen kedua ialah 2, ketiga ialah 3 dan seterusnya. Dalam contoh Tiga Bulatan sebelum ini, kita sebenarnya telah menghasilkan 3 segmen yang setiap satunya memiliki ID tersendiri.

Cuba kita selitkan baris-baris kod berikut sebelum pernyataan WAIT:

.

.print #tingkap.lukis, "segment drawSegment"print #tingkap.lukis, "delsegment "; drawSegment -1print #tingkap.lukis, "redraw"

wait

Dalam aturcara ini anda sebenarnya mengambil nombor ID dengan segment dan letakkan pada pembolehubah drawSegment. Selanjutnya apabila nombor ID setiap segment telah dipegang oleh pembolehubah drawSegment kita boleh memadamkan segmen dengan arahan delsegment. Perhatikan jika anda ingin memadam:

(a) Segmen ketiga (bulatan besar dan warna hijau) memerlukan drawSegment - 3(b) Segmen kedua (bulatan sederhana) memerlukan drawSegment - 2(c) Segmen pertama (bulatan kecil) memerlukan drawSegment – 1

Cuba anda uji satu persatu dengan hanya mengubah nombor pada belakang drawSegment dan lihatlah hasilnya. Fungsi “redraw” pula adalah melukis semula semua segmen yang masih dianggap wujud oleh Just BASIC. Jika kita telah buang salah satu segmen, maka

120

Page 121: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

lukisan semula akan memberikan paparan terbaru tanpa segmen yang kita telah padamkan tadi.

Berikut adalah paparan-paparan yang telah dihasilkan sekiranya kita gunakan arahan memadamkan segmen yang dinyatakan:

(a) Segmen ketiga dipadamkan. (b) Segmen kedua dipadamkan.

(c) Segmen pertama dipadamkan.

121

Page 122: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Arahan DISCARD

Arahan ini sebenarnya akan membuang mana-mana arahan grafik yang tidak diFLUSH. Ini lebih bertujuan mengurangkan penggunaan memory atau melepaskan memory pada komputer agar tidak membebankan RAM (random access memory). DISCARD lebih menyerupai kesan yang dihasilkan apabila kita tidak menggunakan FLUSH dan cuba memaksima dan meminima tetingkap iaitu kemungkinan besar lukisan tidak akan kelihatan.

MELUKIS OBJEK TERSEDIA

Sebelum ini kita telah melihat contoh bagaimana melukis sebuah segiempat dengan grafik TURTLE. Just BASIC menyediakan lukisan objek biasa yang terbina dalam iaitu arahan melukis kotak (BOX), bulatan (CIRCLE) dan juga garisan (LINE).

(a) Melukis Kotak

Kotak boleh dilukis dengan kedudukan pen sebagai posisi bucu dan juga koordinat X dan Y untuk bucu yang berikutnya. Arahan grafik kotak boleh ditulis dengan syntak berikut:

print #pemegang “box X Y”

Selain itu, anda juga boleh mengisi kotak berkenaan dengan warna. Arahan grafik kotak agak sama tetapi perlu disertakan juga dengan arahan warna latar (backcolor) beserta isian kotak (boxfilled) untuk memenuhi ruang objek dengan warna yang dikehendaki. Contoh syntak ditulis adalah seperti berikut:

print #pemegang “backcolor WARNA”print #pemegang “boxfilled X Y”

(b) Melukis Bulatan

Bulatan boleh dilukis dengan arahan circle dengan radius pada posisi pen semasa. Seperti mana melukis kotak, kita boleh isi warna dalam bulatan dengan arahan warna latar (backcolor) dan isian bulatan (circlefilled). Syntak yang digunakan adalah seperti berikut:

print #pemegang “circle RADIUS”

print #pemegang “backcolor WARNA”print #pemegang “circlefilled RADIUS”

Bulatan membujur (elipse) juga boleh dilukis dengan mensetkan panjang (width) dan tinggi (height). Ia juga turut disertakan dengan fungsi isian (elipsefilled) dengan warna (backcolor) seperti mana kedua-dua kotak dan bulatan tadi. Syntak adalah seperti berikut:

122

Page 123: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

print #pemegang “elipse PANJANG TINGGI”

print #pemegang “backcolor WARNA”print #pemegang “elipsefilled PANJANG TINGGI”

(c) Melukis Garisan

Garisan boleh dilukis untuk menghubungkan dari satu lokasi ke lokasi yang lain. Arahan ini akan melukis garisan bermula dari posisi X1 Y1 ke X2 Y2. Syntak adalah seperti berikut:

print #pemegang “line X1 Y1 X2 Y2”

Kita boleh membesarkan saiz garisan dengan menukar saiz pen yang digunakan. Saiz ini juga memberi kesan ke atas garisan yang digunakan untuk melukis kotak dan bulatan. Saiz asal (default) diwakili oleh nombor 1. Syntak untuk menukar saiz pen adalah seperti berikut:

print #pemegang “size SAIZ”

Sekarang mari kita cuba lukis objek-objek berkenaan ke dalam kekotak grafik. Hasilkan aturcara berikut dan jalankannya. Anda juga boleh melukis berdasarkan idea anda sendiri dengan objek-objek yang boleh digunapakai seperti kotak, bulatan dan garisan. Mungkin anda dapat hasilkan corak-corak abstrak yang baik dengan pelbagai bentuk.

nomainwingraphicbox #tingkap.lukis, 5, 5, 302, 315open "Grafik Objek Tersedia" for window as #tingkapprint #tingkap.lukis, "home; down"

' Hasilkan banyak bulatan.for ganda=10 to 150 step 15print #tingkap.lukis, "circle "; gandanext ganda

' Hasilkan garisan merah tebal.print #tingkap.lukis, "color red"print #tingkap.lukis, "size 5"print #tingkap.lukis, "line 150 155 240 230"

' Hasilkan segiempat kecil biru.print #tingkap.lukis, "backcolor blue"print #tingkap.lukis, "boxfilled 265 255"

print #tingkap.lukis, "flush"wait

123

Page 124: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Jalankan aturcara tadi dan paparan berikut akan ditayangkan pada graphicbox anda. Corak bulatan berganda dapat dilukis dengan operasi gelung for…next. Warna dan saiz pada garisan merah tersebut juga dapat diubahsuai. Akhir sekali segiempat kecil boleh dimasuk warna didalamnya dengan arahan boxfilled dan backcolor.

WARNA GRAFIK

Perbincangan diatas sebenarnya turut menggunakan pelbagai warna untuk menambah seri pada grafik kita. Selain itu, garisan boleh ditebal dan dinipiskan dengan mudahnya. Just BASIC sebenarnya menyokong pelbagai warna yang boleh digunakan bersama arahan-arahan grafik. Pengguna biasanya menggunakan kira-kira 65,000 dan lebih pemacu warna didalam komputer yang lebih dikenali sebagai RGB (red, green, blue). Setiap warna diberi nilai dari angka 0 hingga 255 yang mana nilai 0 adalah paling gelap manakala nilai 255 adalah yang paling cerah.

Warna-warna yang biasa digunapakai dalam grafik Just BASIC adalah seperti berikut:

yellow (kuning) green (hijau)brown (coklat) darkgreen (hijau gelap)red (merah) cyan (cyan)darkred (merah gelap) darkcyan (cyan gelap)pink (merah jambu) white (putih)darkpink (merah jambu gelap) black (hitam)blue (biru) lightgrey (kelabu muda)darkblue (biru gelap) darkgrey (kelabu gelap)

124

Page 125: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Sekarang, cuba kita ubahsuai sedikit program Lukis Spiral sebelum ini untuk melukis warna-warna padanya. Salin aturcara berikut dan jalankan.

nomainwinopen "Lukis Spiral" for graphics as #lukisprint #lukis, "fill darkgray"print #lukis, "home; down"for x = 1 to 100print #lukis, "color "; x*2+55; " 0 "; 200-xprint #lukis, "turn 91; go "; x*2next xprint #lukis, "flush"wait

Paparan spiral bewarna seperti berikut akan kelihatan lebih menarik daripada asal.

Arahan fill darkgray akan memenuhi ruang grafik dengan warna kelabu gelap terlebih dahulu. Lokasi pen kemudian diletakkan pada tengah-tengah tetingkap sebelum pen bersedia untuk melukis. Penggunaan for…next pula untuk membuat perubahan warna setiap kali gelung dijalankan. Perhatikan grafik spiral yang dihasilkan dengan warna-warna yang sedikit demi sedikit berubah.

GRAFIK TEKS

Teks grafik boleh juga dilukis dengan kemudahan yang amat ringkas dengan Just BASIC. Anda hanya perlu memberi posisi pen yang dikehendaki pada tetingkap dan gunakan tanda sengkang “ \ ” sebelum menulis teks grafik yang dikehendaki. Perhatikan contoh aturcara yang berikut.

125

Page 126: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Aturcara Grafik Teks 1nomainwinopen "Lukis Teks" for graphics as #lukisprint #lukis, “fill white; color red”print #lukis, "place 50 50"print #lukis, "\SELAMAT DATANG!"print #lukis, "flush"wait

Sekiranya anda mahu memasukkan tanda sengkang “ \ ” sebagai salah satu daripada teks, maka penggunaan tanda “ | ” boleh diletakkan pada hadapan ayat misalnya seperti aturcara berikut:

Aturcara Grafik Teks 2nomainwinopen "Lukis Teks" for graphics as #lukisprint #lukis, "place 10 50"print #lukis, "|Just BASIC di C:\program files\Just BASIC"print #lukis, "flush"wait

Jalankan kedua-dua aturcara tersebut secara berasingan. Kelihatan teks-teks yang telah dikodkan sebelum ini kelihatan dalam tetingkap grafik anda. Teks ini akan dianggap sebagai sebahagian daripada grafik. Paparan berikut akan dihasilkan daripada aturcara yang telah dijalankan tadi.

Paparan dari aturcara Grafik Teks 1 Paparan dari aturcara Grafik Teks 2

126

Page 127: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

FAIL BITMAPS

Apakah yang dikenali sebagai fail bitmap? Anda mungkin kerap menggunakan fail-fail sebegini dalam aplikasi-aplikasi lain misalnya Paintbrush dalam Windows sendiri. Dalam Windows, bitmap adalah fail yang membentuk sebuah kawasan segiempat yang mengandungi imej. Windows menyokong bitmap yang menggunakan 2 warna (hitam dan putih), bitmap yang mengandungi berjuta warna dan apa-apa sahaja yang berwarna! Kita boleh hasilkan bitmap dengan mudahnya dengan aplikasi-aplikasi grafik misalnya Paintbrush, malahan boleh juga mengimport gambar dari mesin pengimbas (scanner) dan kamera digital. Fail-fail bitmap dikenali dengan nama akhiran .BMP.

Didalam bahasa Just BASIC, terdapat arahan-arahan yang boleh digunakan untuk memanipulasikan bitmap ini. Bitmap boleh diimport dari pemacu storan (lokasi fail) dan dipaparkan pada tetingkap grafik ataupun pada kekotak grafik. Misalnya, dalam pakej Just BASIC ini juga menyediakan sebuah folder dinamakan bmp yang menyimpan banyak fail-fail BMP (lokasi storan anda mungkin berada di C:\program files\Just BASICv1.01\bmp\). Cuba salin aturcara berikut:

nomainwinopen “Paparan Bitmap” for graphics as #bitmaploadbmp “aBitmap”, “bmp\cherry.bmp”print #bitmap, “drawbmp aBitmap 50 50”print #bitmap, “flush”wait

Kita bernasib baik kerana terdapat fail-fail grafik BMP disediakan. Kita akan memilih sebuah fail bitmap yang bernama cherry.bmp untuk dibuka oleh Just BASIC. Pernyataan LOADBMP digunakan untuk membuka fail bitmap dilokasi yang dinyatakan tadi. Perkataan “aBitmap” adalah nama yang akan diwakili oleh imej bitmap berkenaan. Selanjutnya arahan DRAWBMP digunakan untuk melukis imej dari aBitmap tadi. Cuba anda jalankan aturcara berkenaan dan paparan berikut akan dihasilkan:

127

Page 128: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Kita juga boleh gabungkan grafik yang lain dengan bitmap. Sekarang kita gabungkan kod-kod sebelum ini dengan grafik bitmap yang sedia ada. Perhatikan aturcara berikut yang telah diubahsuai sedikit:

nomainwinopen "Gabungan Grafik" for graphics as #lukis

‘ Lukis Spiral.print #lukis, "home; down"for x = 1 to 100print #lukis, "turn 91; go "; x*2next x

‘ Lukis bitmap.loadbmp “aBitmap”, “bmp\lemon.bmp”print #lukis, “drawbmp aBitmap 110 120”print #lukis, “flush”wait

Jalankan pula aturcara tersebut dan paparan berikut akan dihasilkan:

Dalam contoh diatas, lukisan spiral terlebih dahulu diaktifkan dan diikuti dengan arahan memuatkan fail bitmap bernama lemon.bmp pada kedudukan yang dinyatakan. Fail bitmap akan ditampal pada lapisan berikutnya. Bentuk bitmap yang segiempat dapat dilihat dengan jelas yang berada diatas spiral. Anda boleh cuba fail-fail bitmap lain seperti gambar-gambar anda sendiri yang diambil dari digital kamera. Ini adalah fungsi yang penting supaya kita dapat membuat aplikasi yang turut menyertakan grafik dan memerlukan kita memuatkan grafik dari sumber dan lokasi yang lain.

128

Page 129: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

MENGAWAL GRAFIK DENGAN TETIKUS DAN KEKUNCI

Tetingkap grafik dan kekotak grafik mempunyai keupayaan untuk membaca aktiviti pergerakan tetikus (mouse) dan juga kekunci (keyboard). Segala input dari perkakasan (devices) ini tadi akan dihantar oleh Just BASIC untuk membuat sebarang kelakuan (misalnya melukis grafik) yang telah ditetapkan dalam aturcara. Salin aturcara yang dinamakan ‘Lukis Sesuatu’ berikut dan jalankannya.

nomainwinopen "Lukis Sesuatu" for graphics as #lukisprint #lukis, “when leftButtonMove [mengecat] “print #lukis, “when characterInput [menulis] “print #lukis, “down ; size 3”wait

[mengecat]print #lukis, “set “; MouseX; “ “ ; MouseYwait

[menulis]print #lukis, “\”; Inkey$wait

Cuba anda tekan-tahan butang kiri tetikus dan gerakkan didalam tetingkap grafik berkenaan. Anda boleh cuba lukis sesuatu seperti mana program Paintbrush Windows. Nampaknya kita telah hasilkan program lukisan yang terkecil didunia, bukan! Anda hanya boleh lukis dan menaip seseuatu didalamnya. Paparan berikut mungkin kelihatan apabila anda melukis pada tetingkap berkenaan dengan tetikus.

129

Page 130: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Walaupun aturcara tersebut ringkas, tetapi memberikan persembahan visual yang baik. Kita sebenarnya telah menggunakan fungsi memproses peristiwa (event). Setiap kali kita menggerakkan mouse sebenarnya peristiwa tersebut akan mengaktifkan kawalan tertentu dalam Just BASIC. Perhatikan dalam aturcara tersebut pada baris print #lukis, “when leftButtonMove [mengecat] ” yang bermaksud apabila butang-kiri tetikus ditekan dan tetikus digerakkan, maka pergi ke label cawangan [mengecat]. Begitu juga dengan baris kod print #lukis, “when characterInput [menulis] ” yang bermaksud apabila aksara ditaip dengan kekunci maka pergi ke label cawangan [menulis]. Kedua-duanya menggunakan fungsi ‘when’ dihadapan bermaksud apabila pengguna melakukan sesuatu yang memberi input pada kawalan (samada pada kekunci atau tetikus).

Lokasi tetikus diperolehi dengan menggunakan pembolehubah MouseX dan MouseY. Pembolehubah Inkey$ pula memegang nilai aksara yang ditekan oleh pengguna pada papan kekunci. Untuk menangkap aksara yang ditaip pengguna, input grafik perlukan fokus. Oleh itu kadang kala memerlukan kita meletakkan focus dengan arahan setfocus seperti berikut:

print #lukis, “setfocus”

Setiap peristiwa seperti yang diterangkan sebelum ini boleh dikendalikan asalkan ianya dikodkan terlebih dahulu. Terdapat beberapa peristiwa (event) yang boleh digunakan sebagai kawalan pengguna iaitu seperti berikut (perhatian bahawa nama-nama peristiwa adalah sentitif kepada perubahan huruf besar dan kecil):

leftButtonDown Menekan butang-kiri tetikus.leftButtonUp Melepaskan butang-kiri tetikus.leftButtonMove Menggerakkan tetikus sambil menekan butang-kiri.leftButtonDouble Menekan dua kali (double-click) pada butang-kiri tetikus.rightButtonDown Menekan butang-kanan tetikus.rightButtonUp Melepaskan butang-kanan tetikus.rightButtonMove Menggerakkan tetikus sambil menekan butang-kanan.rightButtonDouble Menekan dua kali (double-click) pada butang-kanan tetikus.middleButtonDown Menekan butang-tengah tetikus.middleButtonUp Melepaskan butang-tengah tetikus.middleButtonMove Menggerakkan tetikus sambil menekan butang-tengah.middleButtonDouble Menekan dua kali (double-click) pada butang-tengah tetikus.mouseMove Tetikus digerakkan apabila tiada butang ditekan.characterInput Kekunci ditekan apabila input fokus diaktifkan.

Peringatan bahawa penggunaan huruf besar dan kecil amat memberi makna dalam Just BASIC. Anda hendaklah menulis dengan betul kerana perlunya sensitiviti pada sebarang huruf yang ditaip untuk mengelakkan sebarang ralat yang tidak dikehendaki.

130

Page 131: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Arahan-arahan pada kekotak grafik boleh dihantar sama ada untuk mengaktifkan atau sebaliknya. Apabila graphicbox tidak diaktifkan, maka ia tidak boleh memerangkap sebarang peristiwa pada papan kekunci dan tetikus. Antara arahan-arahan yang boleh digunakan ialah seperti berikut:

print #pemegang.ext, “setfocus” Menyebabkan kawalan menerima sebarang input fokus. Bila kekunci ditekan akan diarah ke kawalan.

print #pemegang.ext, “enable” Menyebabkan kawalan akan diaktifkan.

print #pemegang.ext, “disable” Menyebabkan kawalan tidak aktif. Sebarang aktiviti tetikus dan kekunci tidak dapat diperangkap.

print #pemegang.ext, “autoresize” Menyebabkan kawalan saiz berpandukan saiz yang dibuat oleh pengguna.

MELUKIS CARTA PAI

Sebenarnya Just BASIC memiliki fungsi-fungsi kawalan grafik yang lain untuk kegunaan pengaturcara. Ini mungkin meliputi fungsi-fungsi binaan dalam dan juga mengawal rupa bentuk tetingkap yang dipaparkan.

Lanjutan daripada itu, satu perkara lagi yang ingin dibincangkan ialah dengan keupayaan membina sebuah carta pai. Mungkin anda pernah melihat rupabentuk carta pai mempunyai bentuk sebuah bulatan yang kadang kala dipotong umpama pai atau masa sekarang ini lebih berbentuk pizza. Just BASIC menyokong pembinaan carta pai dengan arahan grafik yang sama dengan lain-lain. Mari kita cuba perhatikan contoh ringkas berikut:

nomainwinopen "Carta Pai" for graphics as #lukisprint #lukis, "home; down"print #lukis, "pie 250 250 0 300"wait

Perhatikan bahawa kita memulakan lukisan dengan mengarahkan pen berada ditengah tetingkap. Berikutnya perhatikan arahan “pie 250 250 0 300” iaitu pembinaan carta pai disetkan pada saiz dengan 250 pertama adalah panjang (width) dan 250 kedua bermakna ketinggian (height). Oleh kerana kita mahukan carta pai ini berbentuk bulat maka kedua-dua panjang dan tinggi hendaklah sama. Ini diikuti dengan angka 0 bermakna anda bermula dengan sudut 0 darjah dan membesar ikut-arah-jam pada 300 darjah. Sebaliknya jika anda menggunakan tanda negatif (-) bermakna ianya membentuk darjah lawan-arah-jam. Carta pai ini akan bermula pada kedudukan darjah pertama (0 darjah) dan bermula pada kedudukan tersebut untuk membentuk darjah berikutnya.

Sekarang salin dan jalankan aturcara ringkas tersebut dan fahami proses pembinaan tadi dengan teliti. Carta pai dapat diperhatikan seperti ilustrasi berikut:

131

Page 132: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Dapatkah anda perhatikan pai tersebut (seperti pacman kalau anda biasa bermain games) yang seolah-olah telah terpotong. Rasanya elok juga anggap ia sebagai carta pizza kerana populariti pizza semakin tinggi di negara kita! Lukisan carta ini akan bermula dengan membina garisan lurus bermula dari titik tengah mengarah ke kanan (dianggap darjah 0). Selanjutnya bulatan akan dibentuk dari hujung garisan tadi dan membentuk 300 darjah dari garis tadi. Selanjutnya, garisan lurus ke tengah kembali dibuat apabila mencapai darjah yang ditetapkan.

MEWARNAKAN CARTA PAI

Kita juga boleh warnakan carta ini dengan warna yang disokong oleh Just BASIC. Ubah sedikit aturcara asal tadi dengan memasukkan kod-kod tambahan. Salin aturcara berikut dan jalankan untuk melihat hasilnya.

Nomainwinopen "Carta Pai Warna" for graphics as #lukisprint #lukis, "home; down"print #lukis, “backcolor yellow”print #lukis, "piefilled 250 250 0 300"wait

Hasilnya adalah seperti dipaparkan pada ilustrasi berikutnya. Kita telah tetapkan warna kuning pada arahan “backcolor” sebelum meletakkan arahan “piefilled”. Seperti mana lain-lain arahan warna latar dengan backcolor adalah penting disetkan terlebih dahulu sebelum arahan lanjutan pengisian pada carta pai berkenaan. Tiada perbezaan antara pembinaan carta pie bewarna dan carta pai biasa kecuali arahan ‘pie’ digantikan dengan ‘piefilled’.

132

Page 133: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Anda boleh menggabungkan lebih daripada satu carta pai untuk membentuk sebuah carta yang lengkap. Gunakan kreativiti anda untuk menghasilkan carta pai dengan pelbagai bentuk dan warna.

MENETAPKAN BAR GELUNG TETINGKAP

Bar gelung (scrollbar) yang selalu terdapar pada tetingkap grafik boleh disembunyikan dan boleh juga ditetapkan nilai gelungannya. Bar gelung amat penting digunakan apabila kawasan lukisan lebih luas daripada tetingkap. Gelungan yang dibuat membolehkan kita melihat grafik yang tidak tercapai dengan saiz tetingkap yang ada.

Just BASIC juga berupaya menguruskan kawalan bar gelung ini sama ada bar gelung sebelah kanan (verticle scrollbar) dan sebelah bawah (horizontal scrollbar). Syntak yang digunakan ialah seperti berikut:

Untuk bar gelung sebelah bawah,

print #pemegang, “horizscrollbar on/off [min max]

Untuk bar gelung sebelah kanan,

print #pemegang, “vertscrollbar on/off [min max]

Bagi memahami sintaks tersebut, mari kita cuba 2 contoh ringkas berikut untuk arahan mengaktifkan bar gelung dan menyahaktifkan bar gelung. Salin dan jalankan kedua-dua aturcara tersebut secara berasingan.

133

Page 134: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Aturcara Pertama:nomainwinopen "Bar Gelung Aktif" for graphics as #lukisprint #lukis, "horizscrollbar on [min max]"print #lukis, "vertscrollbar on [min max]"wait

Aturcara Kedua:nomainwinopen "Bar Gelung Tidak Aktif" for graphics as #lukisprint #lukis, "horizscrollbar off [min max]"print #lukis, "vertscrollbar off [min max]"wait

Paparan yang berikut akan dihasilkan apabila anda menjalankan aturcara pertama dan kedua secara berasingan.

Paparan Aturcara Pertama. Paparan Aturcara Kedua.

Perhatikan betul-betul perbezaan antara kedua-dua tetingkap berikut. Bar gelung akan kelihatan pada tetingkap dari aturcara pertama manakala bar gelung langsung tidak kelihatan pada tetingkap kedua. Sebenarnya jika anda perhatikan arahan dalam kedua-dua aturcara berkenaan jika letakkan OFF bermakna sembunyikan bar gelung dan sebaliknya jika ON. Apabila kita ON pada bar gelung tersebut, parameter [Min Max] adalah optional yang menunjukkan nilai jarak minima dan maksima yang digelung oleh bar berkenaan. Jarak dikira dalam bentuk piksel (pixel). Tanpa parameter ini, bar gelung akan setkan 0 sebagai nilai default.

134

Page 135: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

SPRITE UNTUK ANIMASI

Sprite dan mask amat penting untuk tujuan penganimasian imej misalnya dalam permainan interaktif. Bahagian ini akan membincangkan semua perkara berkaitan seperti membina dan menggunakan fail bitmap untuk membentuk sprite dalam aturcara dan sifat dan orientasi sprite yang boleh dimanipulasikan. Selain itu, teknik menggabungkan imej latar belakang dengan sprite untuk menghasilkan animasi yang meyakinkan juga akan disentuh dalam bahagian ini. Turut dibincangkan ialah contoh-contoh penggunaan pemasa sebenar (timer) untuk membuat kitaran yang membentuk bingkai animasi pada tetingkap grafik.

135

Page 136: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

PENGENALAN SPRITE

Sebelum ini kita telah pelajari bagaimana penggunaan fungsi grafik boleh diolah mengikut keperluan pengaturcara dengan Just BASIC. Grafik-grafik berkenaan adalah sekadar corak-corak atau gambar-gambar BMP biasa yang tidak bergerak. Bagaimana jika kita mahu membuat objek atau sesuatu gambar itu bergerak atau dianimasikan? Bahasa Just BASIC sepertimana lain-lain bahasa pengaturcaraan turut memiliki fungsi-fungsi yang boleh digunakan untuk membuat grafik bergerak. Jika anda perhatikan kebanyakan permainan komputer mempunyai grafik-grafik cantik dan boleh bergerak mengikut arah kawalan yang pengguna gunakan.

Lanjutan daripada itu, kita akan cuba memahami satu lagi fungsi yang berhubung kait rapat dengan grafik iaitu SPRITES. Apakah yang dinamakan sebagai sprite? Kali ini kita akan cuba memahami dengan contoh-contoh yang ditunjukkan berikutnya. Oleh kerana pakej Just BASIC turut menyediakan beberapa fail grafik, rasanya elok juga dijadikan sebagai contoh kita nanti.

Katakan kita ada 2 buah fail BMP yang mengandungi gambar latar dan gambar orang sedang berlari. Sebelum ini kita ketahui bahawa fail bitmap merupakan sebuah fail grafik segiempat. Perhatikan gambar latar yang berikut dan gambar orang sedang berjalan disebelahnya.

Jika kita ingin menggabungkan kedua-dua gambar bitmap ini, katakanlah gambar orang sedang berjalan pada grafik latar berkenaan. Maka mungkin kita akan letakkan seperti yang ditunjukkan dibawah ini.

Perhatikan bahawa gambar bitmap yang berbentuk segiempat dengan gambar orang berjalan ini nampak tidak begitu kena. Apa yang kita mahukan ialah supaya gambar orang berjalan berkenaan seolah-olah bersatu dengan latar belakang untuk membentuk pandangan yang lebih meyakinkan. Oleh yang demikian, gambar yang mungkin kita mahukan adalah seperti yang ditunjukkan dibawah ini.

136

Page 137: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Gambar ini adalah lebih realistik daripada yang sebelumnya, bukan. Gambar ini kelihatan seakan-akan bersatu dan tidak adanya kawasan hitam segiempat yang asal daripada gambar asal orang berlari tadi. Imej yang kita saksikan ini dinamakan sebagai SPRITE.

BAGAIMANA MEMBENTUK SPRITE

Seperti yang dinyatakan sebelum ini, bitmap memiliki sifat segiempat. Grafik realistik tidak memerlukan kawasan segiempat sebagai sempadan kerana berkemungkinan kita hanya perlukan sebahagian daripada kandungannya sahaja. Dalam contoh sebelum ini, bitmap orang berlari berkenaan berlatarkan warna hitam sedangkan kita tidak mahu latar tersebut kelihatan. Cuba anda bayangkan sebuah kertas yang mempunyai gambar tersebut dan anda memotongnya mengikut bentuk badan orang berkenaan dengan gunting. Pasti anda dapat mengasingkan antara ganbar orang berlari tersebut dengan latar hitamnya. Ini sebenarnya dapat dilakukan ke atas bitmap oleh Just BASIC.

Imej berada dilatar grafik bitmap dengan 2 lapisan yang dinamakan sebagai MASK dan SPRITE.

(a) Lapisan MASK akan diletakkan terlebih dahulu serta memiliki latar belakang yang bewarna putih. Bentuk imej adalah merupakan Mask yang sebenar dan ianya bewarna hitam. Oleh yang demikian, ianya adalah grafik hitam putih yang mengikut bentuk imej asal.

(b) Lapisan SPRITE pula adalah imej sebenar yang akan dipaparkan. Latar belakang imej ini adalah bewarna hitam penuh.

137

Page 138: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Just BASIC perlu menggunakan kedua-dua Sprite dan Mask untuk menghasilkan grafik yang baik. Sprite dan Mask digabungkan bersama dimana kedudukan Mask adalah betul-betul diatas Sprite dalam sesebuah fail. Perhatikan grafik dibawah setelah Mask dan Sprite dicantumkan bersama.

Adalah tidak mustahil anda boleh menghasilkan sendiri fail bitmap yang mengandungi kedua-dua Mask dan Sprite. Terdapat program-program grafik yang boleh digunakan untuk membina kedua-duanya misalnya MS Paint pada Windows.

Apa yang terjadi ialah Sprite yang kelihatan ini adalah gabungan piksel latarbelakang dengan piksel Mask dan bitmap Sprite dengan operasi dalaman komputer dikenali sebagai Operasi Bitwise. Para pengaturcara tidak perlu memeningkan kepala memikirkan masalah ini kerana Just BASIC sendiri akan melakukan operasi berkenaan. Oleh itu, Sprite dalam bahasa Just BASIC adalah grafik yang perlu mengandungi Mask diatasnya. Mask akan diletakkan pada bitmap latar dalam memori komputer dan tidak dipaparkan pada skrin komputer. Ini seperti yang dipaparkan dalam grafik dibawah:

Apabila Mask berada pada tempatnya, maka lapisan kedua akan ditambah dan hasilnya dipaparkan dibawah. Paparan ini sebenarnya dicapai apabila arahan DRAWSPRITES dilaksanakan dalam Just BASIC.

138

Page 139: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

LATAR BELAKANG

Dalam bahagaian-bahagian yang lepas, kita pernah menggunakan tetingkap grafik (graphics window) dan kekotak grafik (graphicbox) sebagai platform paparan grafik. Mana-mana tetingkap yang menyertakan Sprite hendaklah terdiri daripada tetingkap grafik atau pun kekotak grafik sahaja. Hanya satu sahaja tetingkap yang boleh mengguna Sprite pada program yang dibina pada satu-satu masa dalam Just BASIC. Dalam contoh-contoh berikutnya ini kita akan gunakan fail-fail sprite yang terkandung dalam pakej Just BASIC. Fail-fail ini terdapat dalam folder yang dinamakan SPRITES.

Kita mulakan dengan latar belakang dari fail bitmap yang dimuatkan ke dalam tetingkap. Jika hendak membuat sebuah animasi, pastinya kadang-kala mengandungi 2 imej yang penting dan disatukan dalam sebuah tetingkap. Dua komponen ini ialah latar belakang dan imej utama yang hendak dianimasikan. Untuk mendapat lebih pemahaman, mari kita perhatikan aturcara ringkas berikut:

nomainwin

‘ Muat turun fail dari folder sprites.loadbmp "landskap", "sprites\bg1.bmp"

‘ Setkan saiz tetingkap yang dibuka.WindowHeight = 200WindowWidth = 400

‘ Buka tetingkap grafik dan paparkan latar.open "Cuba Latar Belakang" for graphics_nf_nsb as #latarprint #latar, "background landskap"print #latar, "drawsprites"wait

Pertama sekali, Just BASIC akan memuatkan fail bitmap yang dinamakan bg1.bmp yang sedia ada dalam folder sprite dan kita diberikan nama pembolehubah sebagai ‘landskap’. Berikutnya, saiz tetingkap grafik ditetapkan dengan tinggi (WindowHeight) 300 piksel dan panjang (WindowWidth) 400 piksel. Tetingkap grafik dibuka dengan imbuhan nf_nsb yang bermakna setkan tetingkap yang tiada rangka dan saiz yang tidak boleh ubah.

Perhatikan pula arahan membuka latar iaitu baris kod berikut:

print #latar, "background landskap"

Arahan ini adalah untuk menyatakan kepada Just BASIC yang kita telah peruntukkan pembolehubah ‘landskap’ sebagai latar belakang (arahan background). Oleh kerana arahan background memerlukan kita meletakkan sprite, ianya perlu disertakan dengan arahan drawsprites. Ini penting kerana tanpa arahan drawsprites, paparan latar belakang tidak ditunjukkan pada tetingkap yang dibuka. Oleh itu, kod print #latar, “drawsprites” adalah sebagai pelengkap kepada pembinaan latar bersama sprite.

139

Page 140: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Jalankan aturcara tadi dan paparan latar berikut akan kelihatan.

Sekarang, cuba anda ubahsuai sedikit pada kod aturcara berkenaan dengan hanya menukar panjang tetingkap (WindowWidth) daripada 400 kepada 600 piksel. Baris kod yang baru adalah seperti berikut:

WindowWidth = 600

Sekarang mulakan semula dengan menjalankan aturcara tersebut. Tetingkap berikut akan dipaparkan pada skrin. Adakah anda nampak perbezaan antara tetingkap grafik asal dengan tetingkap yang telah diubah panjangnya ini.

Dapatkah anda perhatikan bahawa jika anda membina saiz tetingkap grafik yang lebih kecil daripada saiz imej sebenar, maka anda akan hanya nampak ruang yang boleh dipaparkan dalam tetingkap berkenaan sahaja. Imej selebihnya tersembunyi kerana saiz tetingkap tidak dapat menampung saiz sebenar.

Sebaliknya jika tetingkap kita lebih besar daripada saiz imej sebenar, maka imej latar akan menyesuaikan saiz supaya dapat memuat semua ruang pada tetingkap berkenaan.

140

Page 141: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Jika kita tidak masukkan arahan background, maka hanya ruang kosong putih sahaja dipaparkan sebagai latar belakang.

LATAR BELAKANG DAN SPRITE

Seperti mana yang dijelaskan sebelum ini, dalam Just BASIC sebuah imej bitmap sprite yang mengandungi mask diatasnya. Sekarang kita cuba untuk menggunakan imej yang sedia ada dibekalkan bersama pakej Just BASIC untuk mendemonstrasikan penggunaan sprite dan mask ini pada latar belakang (background).

Kita gunakan aturcara sebelum ini iaitu imej latar belakang untuk menggabungkan dengan sprite. Perhatikan aturcara yang telah diubahsuai sedikit berikut:

nomainwin

' Muat turun 2 fail dari folder sprites.loadbmp "landskap", "sprites\bg1.bmp"loadbmp "orang1", "sprites\cave1.bmp"

' Setkan saiz tetingkap yang dibuka.WindowHeight = 200WindowWidth = 600

' Buka tetingkap grafik dan paparkan latar.open "Cubaan Latar Belakang & Sprite" for graphics_nf_nsb as #latarprint #latar, "background landskap"

' Paparkan sprite.print #latar, "addsprite orang orang1"print #latar, "drawsprites"wait

Sekarang kita telah memuatkan sebuah lagi fail bitmap yang bernama cave1.bmp dan dinamakan dengan pembolehubah orang1. Berikutnya perhatikan juga kod memasukkan pembolehubah orang1 dengan arahan addsprite seperti berikut:

print #latar, "addsprite orang orang1"

Perhatikan, kita boleh memberikan nama sprite yang hendak digunakan sama dengan nama pembolehubah bagi fail bitmap yang dimuatkan. Kita juga boleh menggunakan nama lain sebagai nama sprite selain dari nama yang diberikan tadi. Nama sprite diguna sebagai rujukan untuk mensetkan sebarang perubahan atau memberikan arahan.

Nama sprite adalah untuk bagi merujuk kepada imej atau pun sekumpulan imej. Dalam kes di atas, hanya satu imej sahaja iaitu orang1 yang diwakili oleh nama sprite orang. Kadang kala adalah penting menggunakan nama sprite untuk sekumpulan imej-imej yang bersambungan misalnya gaya orang berjalan, katak yang melompat, imej letupan dan apa sahaja yang menggambarkan pergerakan.

141

Page 142: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Jalankan aturcara tersebut dan paparan berikutnya akan dihasilkan:

Perhatikan bahawa imej orang berada pada kedudukan diatas penjuru sebelah kanan latar belakang iaitu lokasi permulaan kerana kita tidak memberikan arahan lokasi dalam aturcara tersebut.

MEMBERI SIFAT PADA SPRITE

Sprite boleh dimanipulasikan dengan baiknya dalam Just BASIC. Ciri-ciri pada sprite boleh disetkan misalnya memberikan nama rujukan (name), menentukan ketampakan (visibility), menentukan skala (scale), memberi orientasi (orientation), membuat kitaran (cycle), menempatkan lokasi (location), memberi pergerakan (motion) dan menghantar (travel). Kita akan membincangkan ciri-ciri yang paling penting agar dapat menghasilkan sebuah animasi yang kemas dan berkesan.

Ciri NAME

Ciri ini telah dibincangkan dalam tajuk sebelum ini. Arahan untuk memberikan nama bagi sprite ialah ADDSPRITE. Kita boleh memberi nama kepada satu imej atau satu kumpulan imej yang telah dimuat dari fail-fail bitmap dengan arahan LOADBMP. Perhatikan aturcara berikut dan jalankan:

nomainwin' Muat turun 2 fail bitmap dari folder sprites.loadbmp "orang1", "sprites\cave1.bmp"loadbmp "orang2", "sprites\cave2.bmp"

‘ Buka tetingkap grafik.open "Cubaan Sprite" for graphics_nf_nsb as #latar

' Paparkan sprite.print #latar, "addsprite orang orang1 orang2"print #latar, "drawsprites"wait

142

Page 143: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Paparan tetingkap berikut akan ditayangkan:

Dalam aturcara diatas, kita telah memuatkan 2 buah fail imej bitmap iaitu cave1.bmp dan cave2.bmp dan memberikan nama pembolehubah masing-masing orang1 dan orang2. Selanjutnya, kita memberikan nama sprite sebagai ‘orang’ yang menggabungkan 2 buah pembolehubah berkenaan. Paparan hanya memaparkan imej yang pertama kerana kita tidak memberikan sifat dan arahan lain kepada sprite berkenaan.

Ciri VISIBILITY

Setiap sprite yang ditambah akan dipaparkan dalam bentuk bingkai yang dianimasikan. Arahan SPRITEVISIBLE pula digunakan untuk memberikan ciri sama ada sprite berkenaan kelihatan dan boleh tampak (visible) atau pun sebaliknya. Katakan kita ingin menyembunyikan sprite ‘orang’ yang dalam aturcara sebelum ini maka kod yang berikut boleh digunakan:

print #latar, “spritevisible orang off”

Sebaliknya jika kita ingin menampakkan semula sprite yang disembunyikan tadi, maka arahan berikut boleh digunakan:

print #latar, “spritevisible orang on”

143

Page 144: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Perbezaan kedua-duanya arahan ini hanya perkataan OFF (tutup) dan ON (buka). Arahan ini penting misalnya dalam permainan komputer, kita ingin menghilangkan sprite selepas sesebuah objek ditembak dan sebagainya.

Ciri CYCLE

Just BASIC akan secara automatiknya membuat kitaran (cycle) melalui senarai imej yang terdapat pada sprite jika diberi arahan CYCLESPRITE. Arahan ini memerlukan nama sprite dan juga nilai untuk bilangan bingkai. Nilai ‘1’ akan menyebabkan sprite membuat kitaran semua imej dalam senarainya hingga ke imej terakhir. Nilai ‘-1’ pula akan menyebabkan kitaran senarai dalam bentuk susunan yang terbalik.

Contoh penggunaan kitaran ini boleh ditulis seperti berikut:

print #latar, “cyclesprite orang 1”

Atau jika kita inginkan kitaran dalam susunan terbalik boleh ditulis seperti berikut:

print #latar, “cyclesprite orang -1”

Sebagai contohnya, arahan ini akan menyebabkan kitaran dilakukan ke atas dua imej dibawah secara berturutan.

orang1 orang2

Ini akan menghasilkan seolah-olah orang ini berlari apabiala kedua-dua imej tersebut dipapar secara berturutan. Jika kita menambah ONCE pada arahan CYCLESPRITE akan menyebabkan sprite mengitar imej didalamnya sebanyak sekali sahaja dan berhenti pada imej akhir (atau imej awal jika susunan terbalik). Ini kadang kala berguna pada imej-imej yang tertentu untuk dianimasikan misalnya animasi letupan. Contoh arahan yang dibuat adalah seperti berikut:

print #latar, “cyclesprite orang 1 once”

144

Page 145: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Arahan ini menyebabkan kitaran sekali sahaja dan berhenti pada imej yang kedua (imej terakhir kerana hanya ada 2 imej sahaja) dalam sprite ‘orang’ berkenaan.

Ciri SCALE

Penskalaan adalah satu lagi ciri yang paling penting dalam manipulasi imej. Skala (scale) ke atas sprite akan menyebabkan saiz sesuatu sprite boleh dikawal. Penskalaan sprite boleh dibuat dengan peratusan daripada saiz imej asal (tinggi dan panjang). Penggunaan arahan SPRITESCALE adalah dalam bentuk peratusan misalnya 200 bermakna saiz 2 kali ganda daripada asal, 50 bermakna separuh daripada saiz asal dan sebagainya.

Sebagai contoh mari kita besarkan saiz imej orang kepada lebih besar sebanyak satu setengah kali ganda daripada asal. Kod yang ditulis adalah seperti berikut:

print #latar, “spritescale orang 150”

Berikut adalah contoh-contoh imej yang telah diskalakan dengan peratusan tertentu.

Imej Skala 200 Imej Skala 100 Imej Skala 50

Ciri ORIENTATION

Secara asalnya, sprite dipaparkan sebagaimana ianya dimuatkan dari fail asal bitmap. Adalah mudah untuk kita mengubah orientasi imej berkenaan dengan fungsi-fungsi yang diboleh digunakan dalam Just BASIC. Kadang kala kita ingin gunakan imej yang sama tetapi dalam bentuk seperti terbalik (flip), bertentangan (mirror) atau pun memusing (rotate). Kesemuanya dapat dilakukan oleh Just BASIC tanpa kita perlu mengubahsuai fail bitmap yang asal tadi. Fungsi-fungsi ini boleh digunakan secara bersama untuk memberi kesan yang tertentu pada imej. Contoh penggunaan kod adalah seperti berikut:

print #latar, “spriteorient orang normal”print #latar, “spriteorient orang flip”print #latar, “spriteorient orang mirror”print #latar, “spriteorient orang rotate180”

145

Page 146: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Hasil-hasil yang berikut mungkin akan dihasilkan jika kita memasukkan kod-kod berkenaan secara berasingan dalam aturcara yang dibuat.

Normal Flip Mirror Rotate 180

Ciri orientasi flip akan menterbalikkan secara menegak sprite anda manakala ciri orientasi mirror adalah untuk membalikkan imej seolah-olah seperti cermin. Ciri rotate pula akan memutarkan imej sprite berkenaan mengikut sudut dalam darjah yang ditetapkan oleh pengaturcara. Ciri-ciri ini amat berguna bila kita ingin menggunakan imej yang sama tetapi dalam orientasi yang berbeza misalnya orang berkenaan berjalan ke arah kanan dan kita ingin menukar arah ke kiri hanya perlukan orientasi mirror.

Ciri POSITION dan MOVEMENT

Sprite boleh digerakkan ke posisi X (kedudukan menegak) dan Y (kedudukan melintang) pada tetingkap grafik dengan menggunakan arahan SPRITEXY. Contoh kod boleh ditulis seperti berikut dimana sprite diletakkan pada kedudukan X pada 100 piksel dan Y pada 130 piksel:

print #latar, “spritexy orang 100 130”

Just BASIC akan secara automatiknya menggerakkan sprite apabila setiap kali bingkai baru dilukis apabila arahan SPRITEMOVEXY dikodkan. Arahan berikutnya pula akan menggerakkan sprite orang sebanyak 2 piksel pada posisi X dan 5 piksel pada posisi Y.

print #latar, “spritemovexy orang 2 5”

Sprite akan berhenti secara automatik apabila arahan SPRITEMOVEXY berada pada nilai 0 untuk kedua-dua posisi X dan posisi Y.

print #latar, “spritemovexy orang 0 0”

Untuk mengelakkan bayangan, animasi dilakukan dalam memori komputer secara tidak nampak. Bingkai-bingkai animasi dibina keseluruhannya berada diluar skrin komputer anda. Oleh itu, arahan DRAWSPRITE amat penting digunakan bagi memaparkan animasi berkenaan.

146

Page 147: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

MENGEMASKINI PAPARAN

Arahan DRAWSPRITE akan mengemaskinikan paparan iaitu menyebabkan semua sprite yang boleh tampak dilukis pada posisi yang ditentukan, menggerakkannya apabila arahan SPRITEMOVEXY diaktifkan. Ia juga akan dipapar dalam skala dan orientasi semasa. Arahan ini mesti dibuat jika memerlukan untuk melukis bingkai animasi yang baru. Kadang kala perubahan boleh dilakukan semasa DRAWSPRITE dijalankan termasuklah perubahan pada lokasi, orientasi dan skala.

Sekiranya latarbelakang imej hendak digerakkan, arahan BACKGROUNDXY perlu digunakan terlebih dahulu dalam kod sebelum arahan DRAWSPRITE dijalankan. Kod yang mungkin digunakan adalah seperti berikut:

print #latar, “drawsprite orang”;

PENGAWALAN MASA DALAM ANIMASI

Kita biasa melihat kamera filem untuk wayang gambar memiliki gelung-gelung bingkai (frame) filem yang panjang. Ianya adalah bertujuan untuk menyambungkan imej-imej tersebut dan apabila kitaran dibuat dengan kelajuan tertentu, akan menyebabkan satu kesinambungan imej yang akan membentuk pergerakan pada wayang (movie). Mata kita sebenarnya dikelirukan dengan imej-imej yang bersambung ini untuk membentuk animasi.

Dalam konteks yang sama, pengaturcara perlu mengawal kelajuan imej yang dijanakan dalam aturcara. Sekiranya bingkai animasi dilukis tanpa berhenti seketika (pause), aksi tersebut mungkin agak terlalu pantas dilihat oleh mata kasar manusia terutama dalam komputer berkelajuan tinggi. Just BASIC menyediakan kawalan ke atas kelajuan bingkai lukisan semasa animasi dijalankan. Ini boleh dicapai dengan penggunaan TIMER untuk pemasaan berjeda (interval) dan juga arahan ringkas PAUSE bagi subrutin.

PEMASAAN SEBENAR

Arahan TIMER dalam Just BASIC adalah fungsi yang paling baik untuk animasi. Ia akan menyebabkan arahan dihantar ke label cawangan yang dikehendaki dalam jeda masa (interval) milisaat (millisecond). Dalam masa satu saat bersamaan 1,000 milisaat. Sebagai contoh, setengah saat adalah 500 milisaat, suku saat adalah 250 milisaat dan sebagainya. Sebagai contoh perhatikan baris kod berikut yang akan menghantar arahan ke cabang [lukisBingkai] setiap satu persepuluh saat:

timer 100, [lukisBingkai]

Untuk mematikan kawalan pemasaan, kita boleh gunakan baris kod aturcara berikut:

147

Page 148: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

timer 0

Pemasaan boleh diaktifkan dan juga dimatikan dengan memberikan arahan TIMER. Jeda pemasaan boleh diubah dan juga cabang yang diaktifkannya. Jam dalam CPU (central processing unit) pada computer anda berdetik 18 kali sesaat. Ini bermakna, setiap detik bersamaan 56 milisaat atau kurang dan seterusnya menyebabkan animasi bergerak pada kelajuaan tinggi iaitu 18 bingkai sesaat.

PEMASAAN DENGAN PAUSE SUBROUTINE

Di dalam sebuah komputer yang pantas (kebanyakan komputer hari ini memang amat pantas), bingkai animasi yang berturutan amat laju hingga sukar mata kasar untuk melihat kesan pertindihan imej yang dijanakan. Keadaan yang terlalu pantas ini perlu diperlahan dengan cara pemanggilan subroutine digelar PAUSE. Ia memerlukan parameter dalam jumlah milisaat untuk berhenti seketika (pause) antara bingkai. Oleh kerana terdapat 1000 milisaat dalam 1 saat, maka kita dapatkan setengah saat dengan 500 milisaat dan suku saat diwakili 250 milisaat. Jika demikian, satu persepuluh saat ialah 100 milisaat pause menggunakan mil parameter 100.

Perhatikan kod yang ditunjukkan berikut:

sub Pause mil t = time$ (“miliseconds”) while time$ (“miliseconds”) < t+mil wend end sub

Kod berkenaan sebenarnya akan mengaktifkan pause (berhenti seketika) antara bingkai sebanyak satu persepuluh saat setiap kali arahan DRAWSPRITES berikut diaktifkan:

call Pause 100

Pemprosesan gelung untuk animasi sprite dengan pause (berhenti seketika) antara bingkai akan kelihatan seperti berikutnya.

[gelung] scan call pause 100 print #latar, “setfocus; when characterInput [keluar]” print #latar, “when leftButtonDown [kiri]” print #latar, “when rightButtonDown [kanan]” gosub [lukisBingkai]goto [gelung]

148

Page 149: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Apakah bezanya antara kedua-dua arahan TIMER dan PAUSE? Fungsi yang digunakan dalam TIMER akan menyebabkan label cawangan diaktifkan pada set kitaran yang diukur dengan milisaat. Mensetkan kitaran kepada 250 misalnya akan mengarahkan kawalan ke label cawangan tertentu setiap satu persepuluh saat. Fungsi PAUSE ini pula hanya akan menyebabkan pemberhentian seketika pada set kitaran. Memberikan pause sebanyak satu persepuluh saat antara bingkai animasi tidak sama dengan melukis bingkai animasi setiap satu persepuluh saat. Ini adalah kerana pause satu persepuluh saat melukis, masa digunakan sedangkan kod di penanda cawangan diaktifkan. Penggunaan TIMER lebih lancar dan pemasaan yang lebih tepat untuk animasi.

MENGANIMASIKAN SPRITE

Sekarang kita telah bersedia untuk menganimasikan sprite dengan fungsi-fungsi yang dipelajari sebelum ini. Untuk membuat sebuah animasi sprite yang baik, kita memerlukan beberapa imej bitmap yang memiliki kesinambungan antara satu sama lain. Cuba kita perhatikan aturcara berikut dan jalankan:

WindowHeight = 200WindowWidth = 600nomainwinloadbmp "orang1", "sprites\cave1.bmp"loadbmp "orang2", "sprites\cave2.bmp"open "Sprite Orang Berlari" for graphics_nf_nsb as #latarprint #latar, "trapclose [keluar]"

print #latar, "addsprite orang orang1 orang2"print #latar, "spritexy orang 10 90"print #latar, "cyclesprite orang 1"xKitar = 50print #latar, "when leftButtonUp [animasi]"wait

[animasi]print #latar, "when leftButtonUp"timer 100, [kitar]wait

[kitar]xKitar = xKitar + 10if xKitar = 580 thenxKitar = -50end ifprint #latar, "spritexy orang ";xKitar;" 90"print #latar, "drawsprites"wait

[keluar]timer 0close #latarend

149

Page 150: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Apabila tetingkap grafik kosong dipaprkan. Cuba anda klik-kanan tetikus pada tetingkap berkenaan. Pastinya ada kelihatan orang yang tengah berlari ke kanan tanpa henti dan apabila orang tersebut sampai ke penghujung tetingkap, ia akan hilang dan keluar pada permulaan kiri tingkap semula. Jadi, kita sebenarnya telah menghasilkan animasi dengan gabungan 2 bingkai imej iaitu cave1.bmp dan cave2.bmp yang membuat pergerakan ke kanan. Paparan berikut mungkin kelihatan:

Apakah yang berlaku dalam aturcara berkenaan. Walaupun kod-kod berkenaan agak panjang sedikit, namun kita sebenarnya menggunakan apa yang telah dipelajari sebelum ini. Pertama sekali kita setkan saiz tetingkap kepada 200 piksel tinggi dan 600 piksel panjang. Ada 2 fail perlu dimuatkan dahulu dengan arahan LOADBMP untuk digunakan dalam sprite kita. Tetingkap grafik dibuka dengan ciri tiada bar gelung dan tidak boleh ubah saiz.

Berikutnya, pembolehubah sprite orang digunakan untuk mewakilkan imej orang1 dan orang2. Kemudian sprite diletakkan pada lokasi 10 dan 90 dengan kitaran biasa. Kita gunakan pula fungsi leftButtonUp untuk menggesa arahan ke label cawangan [animasi] sekiranya pengguna menekan butang-kiri tetikus. Ini bertujuan untuk mengaktifkan animasi dalam cabang [animasi]. Sebelum masuk ke label cawangan, terlebih dahulu kita tetapkan pembolehubah xKitar = 50 untuk digunakan kemudian nanti.

Dalam cawangan [animasi], fungsi leftButtonUp akan turut diaktifkan apabila arahan disambungkan kepadanya disebabkan pengguna menekan butang-kiri tetikus. Apabila fungsi ini aktif, ia memberikan ruangan jeda masa untuk berhenti seketika sebanyak satu persepuluh saat dengan TIMER 100. Selanjutnya ia akan ke label cawangan [kitar] setiap satu persepuluh saat dan kembali semula. Proses ini berturutan tanpa henti sehingga pengguna keluar dari program.

Di dalam cawangan [kitar] pula, xKitar=xKitar+10 adalah kawalan kepada lokasi X atau melintang sprite berkenaan. Lokasi X akan bertambah setiap 10 piksel setiap kali bingkai dipulangkan semula ke cawangan asal [animasi]. Untuk kawalan sempadan tetingkap, jika xKitar=580 atau sprite berada dihujung tetingkap, maka nilai xKitar diubah semula kepada –50 (iaitu permulaan tetingkap). Ini dicapai dengan operasi SPRITEXY dengan pembolehubah xKitar.

150

Page 151: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Animasi berkenaan agak kosong, bukan. Sekarang kita tambahkan pula latar belakang untuk memberikan suasana yang lebih realistik dalam sebuah animasi. Ubahsuai sedikit aturcara berkenaan seperti berikut:

WindowHeight = 200WindowWidth = 600nomainwin

loadbmp "orang1", "sprites\cave1.bmp"loadbmp "orang2", "sprites\cave2.bmp"loadbmp "landskap", "sprites\bg1.bmp"

open "Sprite Orang Berlari" for graphics_nf_nsb as #latarprint #latar, "trapclose [keluar]"print #latar, "addsprite orang orang1 orang2"print #latar, "spritexy orang 10 90"print #latar, "cyclesprite orang 1"print #latar, "background landskap"xKitar = 50print #latar, "when leftButtonUp [animasi]"wait

[animasi]print #latar, "when leftButtonUp"timer 100, [kitar]wait

[kitar]xKitar = xKitar + 10if xKitar = 580 thenxKitar = -50end ifprint #latar, "spritexy orang ";xKitar;" 90"print #latar, "drawsprites"wait

[keluar]timer 0close #latarend

Kali ini, imej dari fail bitmap bg1.bmp juga telah dimuatkan dan dipaparkan dengan arahan BACKGROUND untuk menjadikannya sebagai latar belakang animasi kita. Jalankan aturcara anda dan pastinya latar belakang yang pernah kita gunakan dalam contoh sebelum ini dipaparkan. Imej latar belakang berkenaan menjadi platform pertama atau lapisan paling bawah. Imej yang dijanakan dengan sprite pula akan menampal pada latar belakang berkenaan untuk bergabung menjadi sebuah imej yang meyakinkan.

Jalankan aturcara yang baru tersebut dan tekan butang-kiri tetikus anda seperti contoh pertama tadi. Untuk seketika perhatikan orang tersebut berlari dan kaji pergerakan dan lokasinya. Paparan orang berlari berikut akan dihasilkan pada tetingkap grafik anda.

151

Page 152: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Bagaimana sekarang? Agak menarik melihat animasi orang berkenaan berlari ke kanan dan muncul semula disebelah kiri tetingkap. Kita boleh mengubahsuai pergerakan orang berkenaan dengan bermacam-macam idea dengan fungsi orientasi yang dibekalkan oleh Just BASIC.

Oleh kerana orang tersebut berlari ke penjuru kanan tetingkap, sekarang kita akan ubah arah orang berlari berkenaan ke sebelah kiri apabila dia sampai dipenjuru kanan tetingkap grafik tersebut. Berikutan itu, imej tersebut perlu mengarah ke kiri dan meneruskan berlari hingga ke penjuru kiri pula. Apabila sampai ke penjuru kiri, kita arahkan pula ia berlari balik ke kanan seperti asal tadi (rasanya idea tersebut agak baik, bukan!).

Kita hanya perlu menambah satu pembolehubah baru dan juga mengubah kod dalam label cawangan [kitar] untuk memberikan logik yang berpatutan ke atas arahan. Masukkan pembolehubah berikut dibawah baris xKitar=50 untuk mensetkan nilai awal pembolehubah angka kepada 10. Anda boleh kodkan seperti berkut:

angka = 10

Cuba gantikan pula kod asal dalam cabang [kitar] berkenaan dengan yang berikut:

[kitar]xKitar = xKitar + angka

if xKitar = 560 thenangka = -10print #latar, "spriteorient orang mirror"end ifif xKitar = -10 thenangka = 10print #latar, "spriteorient orang normal"end if

print #latar, "spritexy orang ";xKitar;" 90"print #latar, "drawsprites"wait

152

Page 153: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Kita gunakan dua pernyataan if…then untuk memberikan arahan bersyarat iaitu syarat pertama mengubah arah sprite dengan mirror apabila sampai ke penjuru tepi sebelah kanan tetingkap. Syarat kedua juga akan mengubah kembali sprite kepada orientasi normal apabila ia sampai ke penjuru sebelah kiri tetingkap. Paparan berikut akan kelihatan apabila orang berlari ke sebelah kiri balik.

Sekarang kita telah memiliki aturcara animasi yang baik dan ringkas. Anda boleh berlatih dengan mengubahsuai kod-kod yang ada dengan berbagai kemungkinan lain. Ianya terpulang kepada imaginasi anda untuk memberikan gaya persembahan mengagumkan.

MENGESAN PERLANGGARAN SPRITE

Kebanyakan permainan komputer memerlukan pengesan perlanggaran (collision detection) kerana banyak sprite yang berinteraksi dengan sprite-sprite yang lain untuk membentuk hasil tertentu. Antara contoh yang biasa kita lihat ialah bila sprite peluru yang ditembak mengena sprite musuh atau raksaksa akan menyebabkan persentuhan 2 sprite. Apabila kedua-duanya bersentuhan akan menyebab musuh meletup atau hilang bergantung kepada permainan berkenaan. Inilah pentingnya untuk mengesan mana-mana persentuhan yang terjadi supaya aksi dan kesan tertentu boleh dimasukkan dalam sesebuah permainan.

Kita bernasib baik kerana Just BASIC melakukan tugas ini secara automatik dengan adanya arahan SPRITECOLLIDES yang digunakan bersama dengan INPUT untuk mendapatkan pembolehubah rentetan yang mengandungi nama sprite yang lain. Pernyataan INPUT boleh dikecualikan apabila kita memiliki nama sprite yang diletak ke dalam tanda “ ” pada arahan SPRITECOLLIDES. Perhatikan contoh kod berikut yang boleh digunakan.

print #latar, “spritecollides orang”input #latar, senarai$

153

Page 154: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Atau pun kita boleh menulis kod tanpa pernyataan INPUT dengan menggabungkan sekali seperti berikut:

print #latar, “spritecollides orang senarai$”

Perhatikan bahawa orang adalah sprite yang aktif dan jika ianya melanggar lain-lain sprite yang dipegang oleh nilai senarai$ maka arahan SPRITECOLLIDES terjadi. Nilai pada senarai$ berkemungkinan lebih daripada satu sprite lain kerana dalam permainan komputer mungkin banyak jenis musuh yang dihadapi. Berikut adalah contoh senarai$:

senarai$ = “musuh1 musuh2 musuh3”senarai$ =”musuh1 musuh2”senarai$ =”musuh1”senarai$ =” “

Dalam baris pertama kod diatas, melaporkan bahawa orang akan menyentuh musuh1, musuh2 dan musuh3 semasa bingkai animasi dijalankan. Begitu juga dengan baris kod kedua diatas, orang akan menyentuh musuh1 dan musuh2 semasa bingkai animasi bergerak. Baris kod ketiga pula akan melaporkan orang bersentuhan dengan musuh1 sahaja semasa bingkai animasi berlangsung. Dalam baris kod keempat pula, sprite orang tidak menyentuh mana-mana sprite lain semasa bingkai animasi berlangsung.

Sprite yang tidak kelihatan (invisible) masih lagi dapat mengesan perlanggaran. Oleh itu, jika kita tidak mahu sprite yang tidak kelihatan ini keluar daripada kawasan latar paparan boleh diletakkan diluar kawasan paparan yang aktif. Kadang kala sprite tidak kelihatan boleh digunakan untuk menjadi tempat disesebuah skrin yang memerlukan pengesan perlanggaran. Contoh yang paling baik ialah katakan sebuah sprite perlu menyentuh laluan keluar untuk keluar ke tahap seterusnya, maka sprite tidak nampak ini digunakan di kawasan-kawasan tertentu pada skrin supaya dapat bertindak bila sprite bersentuhan dengannya.

MENYINGKIRKAN SPRITE

Kadang kala adalah penting untuk menyingkirkan sprite yang tidak diperlukan lagi dari senarai item supaya tidak menghidupkan pengesan perlanggaran. Ini boleh dilakukan dengan arahan REMOVESPRITE supaya sprite yang telah berlanggar misalnya tidak lagi berada dalam kawasan permainan. Fungsi ini sangat penting untuk mengelakkan sprite-sprite yang sudah tidak digunakan tetapi masih lagi terdapat dalam skrin komputer dinyahaktifkan dengan segera. Kod yang mungkin ditulis adalah seperti berikut:

print #latar, “removesprite orang”

154

Page 155: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Untuk mendemonstrasikan kedua-dua fungsi pengesan perlanggaran (collision detection) dan REMOVESPRITE ini, kita akan ubahsuai sedikit aturcara yang pernah kita gunakan sebelum ini. Salin dan perhatikan paparan animasi berkenaan dengan teliti.

WindowHeight = 200WindowWidth = 600nomainwinloadbmp "orang1", "sprites\cave1.bmp"loadbmp "orang2", "sprites\cave2.bmp"loadbmp "ketam1", "sprites\crab1.bmp"loadbmp "ketam2", "sprites\crab2.bmp"loadbmp "ketam3", "sprites\crab3.bmp"loadbmp "landskap", "sprites\bg1.bmp"

open "Sprite Orang Berlari" for graphics_nf_nsb as #latarprint #latar, "trapclose [keluar]"

print #latar, "addsprite ketam ketam1 ketam2 ketam3"print #latar, "spritexy ketam 350 120"print #latar, "cyclesprite ketam 1"print #latar, "addsprite orang orang1 orang2"print #latar, "spritexy orang 10 90"print #latar, "cyclesprite orang 1"print #latar, "background landskap"xKitar = 0ketam$ = "ketam"print #latar, "when leftButtonUp [animasi]"wait

[animasi]print #latar, "when leftButtonUp"timer 200, [kitar]wait

[kitar]xKitar = xKitar + 10if xKitar = 580 then [tunggu]print #latar, "spritexy orang ";xKitar;" 90"print #latar, "drawsprites"print #latar, "spritecollides orang ketam$"if ketam$>"" thenprint #latar, "removesprite ketam"end if

[tunggu]wait

[keluar]timer 0close #latarend

155

Page 156: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Apabila aturcara berkenaan dijalankan, maka terdapat satu watak baru iaitu seekor ketam dimasukkan dalam animasi berkenaan. Perhatikan apabila sprite orang berkenaan berlari (kelajuan berlari diperlahankan sedikit) dan melanggar ketam berkenaan, maka ketam berkenaan terus hilang dari paparan. Ini boleh dilihat seperti ilustrasi berikut:

Dalam aturcara berkenaan, kita telah memuatkan satu lagi sprite yang dinamakan ketam iaitu hasil gabungan 3 imej bitmap (crab1.bmp, crab2.bmp dan crab3.bmp). Selanjutnya, imej ketam dimasukkan ke dalam senarai pembolehubah rentetan ketam$.

156

Page 157: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Dalam label cawangan [kitar] terdapat beberapa penambahan dan perubahan dibuat. Selepas baris DRAWSPRITES, baris berikutnya kita memasukkan arahan pengesan perlanggaran SPRITECOLLIDES ke atas sprite orang dengan pembolehubah ketam$. Ini bermakna jika sprite orang melanggar mana-mana item dalam senarai pembolehubah ketam$ maka, pengesanan diaktifkan.

Apabila perlanggaran telah dikesan, maka dengan menggunakan pernyataan if…then, kita menjanakan pula arahan REMOVESPRITE untuk membuang sprite ketam dari paparan aktif. Oleh kerana proses ini berlaku setiap 200 milisaat dan berulang, maka sprite orang akan terus berlari sehingga sampai ke penjuru sebelah kanan tetingkap. Dalam masa yang sama, kita berhentikan larian dengan menamatkan aturcara apabila orang berkenaan sampai ke penamat dihujung kanan tetingkap.

Penggunaan timer 200 adalah untuk memperlahankan sedikit larian orang berkenaan supaya kita boleh melihat pergerakan dan bagaimana perlanggaran terjadi antara sprite orang dengan sprite ketam. Demonstrasi ringkas ini menunjukkan bahawa kita boleh hasilkan sebuah permainan yang menarik dengan pengetahuan yang telah diperolehi dengan menambah pelbagai watak lain selain gaya permainan yang mudah.

MENGESAN KEDUDUKAN SPRITE

Dalam menulis aturcara, kadang kala adalah penting untuk kita mengesan kedudukan sprite supaya boleh melakukan sesuatu aktiviti tertentu padanya. Untuk mengesan kedudukan sprite, Just BASIC juga memiliki fungsi arahan yang iaitu SPRITEXY?. Sekiranya arahan CENTRESPRITE telah dibuat, maka lokasi X dan Y sprite akan memberikan lokasi di kedudukan tengah-tengah sprite berkenaan. Jika tiada arahan CENTRESPRITE, maka petunjuk kedudukan menggunakan penjuru sebelah kiri sprite. Sepertimana pengesan perlanggaran, fungsi ini boleh diikuti dengan pernyataan INPUT dengan mengunakan 2 pembolehubah penerima koordinat X dan Y.

print #latar, “spritexy? orang”input #latar, x, y

Selain itu, penerima koordinat boleh juga berada didalam arahan SPRITEXY?. Contoh berikut mungkin digunakan dalam sesebuah aturcara.

print #latar, “spritexy? orang x y”

157

Page 158: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

LANGKAH-LANGKAH MENGANIMASIKAN SPRITE

Bagi memudahkan kita mengenalpasti cara berkesan membentuk animasi dengan sprite, beberapa langkah yang penting perlu dijalankan dengan berkesan. Langkah-langkah ini merupakan kaedah biasa pembentukan sebuah animasi sprite dengan segala fungsi dan arahan yang terdapat dalam Just BASIC.

PENYUSUNAN RANGKAKERJA

1. Membuka tetingkap mengandungi graphicbox atau membuka tetingkap grafik.2. Memuat dari fail bitmap untuk setiap sprite yang hendak digunakan dalam

animasi dengan arahan LOADBMP.3. Memuat dari fail bitmap bagi latarbelakang animasi dengan arahan LOADBMP.4. Menetapkan latarbelakang untuk animasi dengan arahan BACKGROUND.5. Menetapkan semua sprite dengan arahan ADDSPRITE untuk setiap sprite.6. Untuk meletakkan kitaran (cycle) bagi setiap sprite yang hendak dianimasikan

gunakan arahan CYCLESPRITE.7. Untuk meletakkan perubahan saiz sprite daripada saiz sprite yang asal, boleh

menggunakan arahan SPRITESCALE.8. Untuk meletakkan perbezaan rupa orientasi sprite, boleh menggunakan arahan

SPRITEORIENT sama ada normal, mirror, flip mahupun rotate.9. Untuk meletakkan kedudukan yang berbeza setiap kali bingkai animasi berjalan,

gunakan arahan SPRITEXY.

SEMASA ANIMASI DIJALANKAN

10. Gerakkan sprite secara individu, jika perlu gunakan arahan SPRITEXY.11. Ubahkan skala, kitaran, orientasi dan ketampakan sprite seperti yang diperlukan

dengan ketetapan dalam aturcara dengan arahan-arahan seperti SPRITESCALE, SPRITEORIENT, SPRITEVISIBLE dan SPRITECYCLE.

12. Dapatkan lokasi atau kedudukan semasa sprite dengan arahan SPRITEXY?.13. Dapatkan senarai semua nama-nama sprite lain yang digunakan untuk mengesan

perlanggaran dengan sprite yang difokus dengan arahan SPRITECOLLIDES.14. Letakkan semula bingkai animasi pada skrin dengan arahan DRAWSPRITES.

Perlu diingatkan disini bahawa, langkah-langkah yang diatas adalah berdasarkan apa yang telah dipelajari dalam topik-topik yang lepas. Walau bagaimana pun, ada terdapat juga fungsi-fungsi lain yang amat berguna dalam menambahkan lagi keberkesanan animasi yang kita jalankan. Fungsi-fungsi arahan ini akan kita pelajari dalam topik-topik berikutnya.

158

Page 159: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

LANJUTAN GRAFIK & SPRITE

Bahagian ini akan membincangkan lebih lanjut akan kaedah-kaedah menghasilkan grafik dan sprite dengan dengan Just BASIC. Hubungkait antara kedua-dua fungsi grafik dan sprite serta bagaimana membentuk sprite dengan kod. Disini juga akan memberikan beberapa teknik yang kerap digunakan oleh pengaturcara dalam implementasi sprite dan latar belakang. Selain itu, perbincangan lanjut mengenai warna serta corak dan radian menarik yang boleh dihasilkan dengan beberapa kaedah ringkas.

159

Page 160: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

LANJUTAN GRAFIK DAN SPRITE

Seperti yang telah dibincangkan pada bahagian-bahagian yang lepas, Just BASIC ada menyediakan berbagai-bagai arahan menghasilkan grafik dan juga memanipulasikan sprite dengan berkesan. Kemaskini paparan bagi sprite boleh dilakukan dengan arahan DRAWSPRITES manakala untuk grafik, ianya boleh dilukis dengan arahan-arahan biasa seperti LINE, CIRCLE, BOXFILLED dan sebagainya. Setiap arahan grafik ini mesti dijalankan selepas sahaja setiap arahan DRAWSPRITES dibuat.

Terdapat kelemahan yang nyata jika menggunakan arahan grafik dengan kerap kerana imej akan kelihatan seperti berbayang atau berhenyot (flickering). Ini adalah akibat tindanan imej lukisan yang berulang dalam memori komputer. Penggunaan sprite dapat menyelesaikan masalah ini dengan baiknya.

Oleh yang demikian, masih terdapat cara untuk kita jadikan imej dari grafik yang dilukis sebagai imej kekal pada latar belakang aturcara. Ini dicapai dengan arahan GETBMP bersama arahan BACKGROUND untuk menetapkannya sebagai latar belakang.

LATARBELAKANG DARI SKRIN

Latarbelakang yang hendak diambil daripada skrin memerlukan kita melukis pada skrin terlebih dahulu sama ada pada tetingkap grafik ataupun graphicbox. Kita boleh gunakan arahan-arahan biasa grafik seperti FILL, LINE, CIRCLE, BOXFILLED dan sebagainya. Bitmap yang dihasilkan pada skrin ini sebenarnya dimuatkan pada memori komputer dan digunakan dengan arahan GETBMP.

Dengan arahan tersebut, kita boleh tetapkan berapa luas kawasan yang kita ingin muatkan dalam bentuk saiz tertentu dengan menetapkan koordinat penjuru atas-kiri dan penjuru bawah-kanan segiempat kawasan berkenaan. Sebagai contoh, kita memiliki imej dari tetingkap grafik yang berkeluasan 400 piksel panjang dan 300 piksel tinggi. Jika kita hendak mengambil imej seluas 399 piksel panjang dan 299 piksel tinggi dan namakan bitmap berkenaan sebagai ‘lanskap’ maka arahan berikut boleh digunakan.

print #latar, “getbmp lanskap 0 0 399 299”print #latar, “background lanskap”

MENGGUNAKAN FLUSH

Dalam tetingkap grafik dan kekotak grafik, segala lukisan dengan grafik akan hilang bila tetingkap berkenaan terlindung oleh tetingkap lain atau bila tetingkap diminimakan. Oleh itu seperti yang diterangkan sebelum ini, adalah perlu untuk kita membuat imej grafik berkenaan ‘terlekat’ pada tetingkap. Penggunaan arahan FLUSH akan membuat lukisan kita melekat pada tetingkap dan boleh digunakan bersama dengan arahan-arahan seperti DELSEGMENT, DISCARD, REDRAW dan CLS.

160

Page 161: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Penggunaan FLUSH amat berguna untuk membuatkan imej yang dijana dengan arahan GETBMP agar melekat pada tetingkap. Walau bagaimana pun, arahan FLUSH biasa tidak dapat digunakan pada grafik yang dilukis dengan arahan sprite. Oleh itu, cara yang mungkin ialah dengan menggunakan FLUSH kepada dalaman kekotak grafik atau tetingkap grafik. Arahan yang diperlukan adalah seperti contoh berikut:

print #latar, “getbmp lanskap 0 0 399 299”print #latar, “drawbmp lanskap 0 0 ; flush”

Dalam contoh diatas, baris pertama kod akan mengambil sejumlah kawasan segiempat bermula dari kedudukan 0 0 bermakna dari penjuru atas-kiri tetingkap. Ianya bersaiz 399 piksel panjang dan 299 piksel tinggi manakala imej dinamakan sebagai ‘lanskap’. Arahan berikutnya iaitu DRAWBMP dalam baris kedua kod tersebut akan menjalankan operasi melukis ‘lanskap’ pada kedudukan yang sama iaitu penjuru atas-kiri tetingkap. Arahan FLUSH kemudian digunakan agar imej yang dilukis tadi melekat pada tetingkap.

Harus diingat bahawa dalam menulis aturcara, jangan sekali-kali menggunakan arahan FLUSH pada setiap bingkai animasi bila ia dijalankan. Ini disebabkan arahan ini memerlukan memori yang banyak dan kita tidak perlu menggunakan memori komputer yang keterlaluan hanya untuk menjalankan sedikit animasi.

Untuk demonstrasi penggunaan GETBMP ke atas grafik ini, salin dan jalankan aturcara berikut:

WindowHeight = 200WindowWidth = 575nomainwinopen "Contoh Latar Grafik" for graphics_nf_nsb as #latarprint #latar, "size 2; color brown; down"print #latar, "place 0 120"

for i = 1 to 4print #latar, "turn 45; go 100; turn 90; go 100; turn 225"next i

for j = 1 to 15print #latar, "size 1; color green; line 0 ";165-j*2;" 575 ";165-j*2next j

print #latar, "up; place 430 40; down"print #latar, "color red; backcolor red; circlefilled 20 20"

print #latar, "getbmp lanskap 0 0 199 574"print #latar, "drawbmp lanskap 0 0; flush"waitend

161

Page 162: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Paparan grafik ringkas yang berikut akan dihasilkan.

Aturcara tersebut menggunakan arahan-arahan biasa dalam membina grafik seperti LINE, CIRCLE, TURN dan GO. Namun begitu, untuk membolehkannya digunakan sebagai mana fail dari format bitmap, maka arahan GETBMP telah digunakan. Cuba anda perhatikan baris-baris arahan yang terdapat dalam kod tersebut berikut:

print #latar, "getbmp lanskap 0 0 199 574"print #latar, "drawbmp lanskap 0 0; flush"

Kita sebenarnya telah mengambil kawasan seluas 199 piksel tinggi dan 574 piksel panjang pada tetingkap grafik berkenaan sebagai bitmap yang dinamakan ‘lanskap’. Bila bitmap telah disimpan pada memori, maka arahan DRAWBMP perlu disertakan untuk memaparkan grafik berkenaan pada skrin. Arahan FLUSH pula untuk memastikan imej berkenaan melekat pada tetingkap grafik anda. Jadi imej berkenaan tidak akan hilang apabila anda cuba meminimakan tetingkap atau membuka tetingkap yang lain.

MENGHASILKAN SPRITE DENGAN GRAFIK

Oleh kerana penggunaan fungsi-fungsi grafik tidak digalakkan dalam animasi kerana akan terjadi kerdipan (blinking) apabila dijalankan, helah yang terbaik ialah dengan menjadikan grafik berkenaan sebagai sprite. Namun begitu, terdapat kelemahan yang agak nyata kerana kesukaran untuk membentuk imej mask, terhad kepada bentuk-bentuk yang asas sahaja serta menggunakan lebih banyak memori daripada biasa. Kita akan mempelajari helah untuk menghasilkan sprite menggunakan grafik.

Seperti yang kita maklum, sebuah sprite harus mengandungi mask diatasnya supaya dapat digunakan oleh Just BASIC untuk membuat animasi. Oleh yang demikian, kita perlu juga melukis mask bagi setiap sprite yang kita hasilkan sebelum disimpan dalam memori dengan arahan GETBMP. Sebagai contoh, katakan kita ingin menghasilkan sebuah animasi pacman (pacman adalah permainan yang agak popular suatu masa dulu) yang mempunyai hanya bentuk bulat dan mulut yang boleh digerakkan. Jika kita lihat dengan

162

Page 163: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

baik, ianya seolah-olah seperti sekeping pizza, bukan. Oleh yang demikian, imej-imej berikut diperlukan dalam aturcara kita untuk menghasilkan animasi:

Imej 1 Imej 2 Imej 3 Imej 4

Adalah tidak mustahil melukis imej-imej berkenaan dengan adanya fungsi-fungsi grafik seperti PIEFILLED, CIRCLEFILLED dan BOXFILLED. Apa kata kita namakan program yang akan dihasilkan ini sebagai Pizzaman untuk memberikan keunikan sedikit. Sekarang, cuba perhatikan aturcara berikut yang akan membina kedua-dua sprite dan mask dalam program kita nanti.

WindowWidth = 600WindowHeight = 300nomainwin

open "Pizzaman" for graphics as #lukisprint #lukis, "trapclose [keluar]"print #lukis, "down; fill black"

print #lukis, "color white; backcolor white"print #lukis, "place 0 0"print #lukis, "boxfilled 400 100"

for i = 0 to 3print #lukis, "color brown; backcolor yellow"print #lukis, "place ";50 + 100 * i;" 150"print #lukis, "piefilled 100 100 30 ";300 + 20 * iprint #lukis, "backcolor brown; place ";50 + 100 * i;" 125; circlefilled 5"

print #lukis, "color black; backcolor black"print #lukis, "place ";50 + 100 * i;" 50"print #lukis, "piefilled 100 100 30 ";300 + 20 * inext iwait

163

Page 164: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Berdasarkan aturcara tersebut, kita menggunakan akan menggunakan tetingkap grafik untuk memaparkan animasi nanti. Pertama sekali ialah kita memerlukan sebuah latar hitam untuk membina sprite. Ianya dicapai dengan arahan “down; fill black”.

Ini diikuti dengan membuat penetapan sebuah segiempat putih sebagai latar kepada mask yang akan turut dibina di atas sprite kita nanti. Perhatikan kotak dibina dari penjuru atas kiri tetingkap dan mempunyai 400 piksel panjang dan 100 piksel tinggi.

Proses selanjutnya ialah menjanakan 4 carta pie dengan fungsi for…next. Perhatikan dan kaji penggunaan piefilled setiap satu yang akan menempatkan 4 imej dikedudukan dan sudut yang berbeza. Kita turut letakkan mata Pizzaman berkenaan dengan warna coklat dengan saiz yang agak kecil iaitu berdiameter 5 piksel.

Cuba anda perhatikan pula pembinaan mask dengan penetapan warna hitam iaitu “color black; backcolor black” kerana kita mahukan bentuk yang sama tetapi warna objek yang hitam. Formula yang sama digunakan dengan meletakkan lokasi dan juga arahan PIEFILLED.

Jalankan aturcara tersebut dan tetingkap berikut akan dipaparkan:

Sekarang kita telah menyediakan 4 imej yang baik untuk animasi kerana kesemuanya masing-masing memiliki sprite dan mask. Oleh yang demikian, langkah selanjutnya ialah bagaimana kita menempatkan imej-imej ke dalam memori ini untuk sebelum pergerakan. Kali ini kita memerlukan pembolehubah rentetan untuk memegang imej bitmap yang telah dijanakan oleh arahan GETBMP. Pembolehubah ini akan menyimpan nama-nama bitmap dari imej berkenaan (kita namakan sebagai bmp0, bmp1, bmp2 dan bmp3). Sekarang masukkan dan selitkan aturcara berikut ke dalam gelung for…next yang pertama tadi sebelum baris pernayataan ‘next i’.

164

Page 165: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

pizzaBmp$ = "bmp";iprint #lukis, "getbmp ";pizzaBmp$;" ";i * 100;" 0 100 200"

pizzaSprite$ = "pizza";i + 1print #lukis, "addsprite ";pizzaSprite$;" ";pizzaBmp$print #lukis, "spritexy ";pizzaSprite$;" ";25 + i * 100;" 125"

Perhatikan bahawa kita telah menamakan sprite berkenaan sebagai pizza1, pizza2, pizza3 dan pizza4. Selanjutnya kita tetapkan kedudukan keempat-empat sprite berkenaan pada kedudukan 25 piksel panjang (pizza1), 125 piksel panjang (pizza2), 225 piksel panjang (pizza3) dan 325 piksel panjang (pizza4). Kesemua sprite berada pada kedudukan ketinggian piksel yang sama iaitu 125. Ini kerana kita mahukan animasi pizzaman yang bergerak secara mendatar ke arah kanan.

Selanjutnya kita akan menggunakan sprite yang telah dibina tadi untuk menghasilkan animasi dengan arahan-arahan seperti penetapan kitaran dan sebagainya. Salin aturcara dibawah dan sambungkan daripada aturcara diatas untuk melengkapkan program kita:

print #lukis, "addsprite pizzaCycle bmp0 bmp1 bmp2 bmp3 bmp2 bmp1"print #lukis, "spritexy pizzaCycle 50 10"print #lukis, "cyclesprite pizzaCycle 1"xCycle = 50

print #lukis, "cls; fill green"print #lukis, "getbmp bg 0 0 20 20"print #lukis, "background bg"print #lukis, "flush"print #lukis, "drawsprites"

print #lukis, "when leftButtonUp [animasi]"print #lukis, "backcolor green; place 300 50"print #lukis, "\Klik Butang-kanan Tetikus untuk Animasi"wait

[animasi]print #lukis, "when leftButtonUp"timer 100, [jalanKan]wait

[jalanKan]xCycle = xCycle + 10if xCycle = 550 thenxCycle = -50end ifprint #lukis, "spritexy pizzaCycle ";xCycle;" 10"print #lukis, "drawsprites"wait

[keluar]timer 0close #lukisend

165

Page 166: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Jalankan aturcara yang telah dilengkapkan tadi dan paparan berikut akan ditunjukkan pada tetingkap grafik anda:

Sekiranya anda klik pada butang-kiri tetikus, maka didapati animasi berlangsung dan anda saksikan pergerakan yang agak lancar bagaimana pizzaman (atau pacman) tersebut sambil membuka mulut dan menutup mulutnya dan bergerak ke kanan.

Perhatikan dalam aturcara tersebut kita menggunakan 3 label cawangan yang dinamakan [animasi], [jalanKan] dan [keluar]. Namun sebelum itu, kita telah menetapkan dahulu sprite yang dinamakan pizzaCycle dengan kitaran animasi ke hadapan. Oleh kerana kita akan menggunakan perubahan pada koordinat X dalam animasi ini, maka kita tetapkan dahulu pembolehubah berangka dinamakan xCycle pada nilai 50 (kedudukan piksel X).

Arahan GETBMP digunakan untuk menyalin skrin bewarna hijau dan digunakan kembali sebagai latar belakang. Oleh itu, perlu diletakkan juga arahan BACKGROUND untuk menjadikannya imej berkenaan sebagai latar belakang bitmap. Arahan FLUSH dan DRAWSPRITES pula bertindak menyiarkan paparan grafik dan sprite dalam tetingkap.

Selanjutnya perhatikan arahan WHEN leftButtonUp yang mengarahkan ke label cawangan [animasi] apabila kita menekan butang-kiri tetikus. Didalam label cawangan [animasi] berkenaan pula, Timer 100 berfungsi untuk melambatkan sedikit arahan sebelum dihantar ke label cawangan [jalanKan].

Didalam label cawangan [jalanKan] sebenarnya proses menggerakkan animasi dibuat dengan membuat gelung yang mengubah pembolehubah xCycle berturutan. Perhatikan kita gunakan arahan SPRITEMOVEXY untuk menggerakkan kedudukan xCycle yang sentiasa berubah setiap kali gelung dibuat. Kita turut masukkan pernyataan if…then untuk mengawal kedudukan sprite agar kembali ke tempat asal apabila sampai dihujung tetingkap berkenaan.

166

Page 167: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Label cawangan [keluar] pula adalah cabang yang dimasuki oleh arahan TRAPCLOSE agar kita boleh keluar daripada animasi bila-bila masa. Ini adalah penting dalam setiap aturcara agar pengguna bebas keluar daripada program apabila perlu. Sebuah aturcara yang baik pasti memiliki kaedah untuk pengguna keluar dari program. Dalam label cawangan ini biasanya tetingkap ditutup dengan arahan CLOSE.

Helah yang telah kita gunakan ini sebenarnya adalah demonstrasi bagaimana fleksibiliti dalam Just BASIC membolehkan kita memanipulasi imej janaan grafik untuk dijadikan sebagai sprite. Walau bagamanapun, jika kita ingin menghasilkan sebuah permainan yang baik, sebaik-baiknya kita gunakan bitmap dari fail-fail grafik agar imej tersebut mudah diolah serta disunting. Malahan kita boleh melukis secara lebih realistik melalui fail-fail bitmap ini dengan aplikasi-aplikasi grafik misalnya MS Paint dan sebagainya.

LANJUTAN GRAFIK DAN WARNA RGB

Sebelum ini, kita telah didedahkan dengan 16 warna yang boleh digunakan menghasilkan grafik. Warna-warna ini adalah fungsi asas yang digunakan oleh Just BASIC. Selain itu, sebenarnya kita boleh menghasilkan lain-lain warna gabungan Merah, Hijau dan Biru atau lebih dikenali sebagai warna-warna RGB (Red, Green dan Blue).

Sebelum ini, kita gunakan arahan berikut untuk setkan 16 warna grafik biasa:

print #pemegang, "color WARNA"

Perhatikan WARNA tersebut boleh terdiri daripada warna hitam (black), biru (blue), coklat (brown), kelabu butang (buttonface), cyan (cyan), biru gelap (darkblue), cyan gelap (darkcyan), kelabu gelap (darkgray), hijau gelap (darkgreen), merah jambu gelap (darkpink), merah gelap (darkred), hijau (green), kelabu cerah (lightgray), merah jambu (pink), merah (red), putih (white) dan kuning (yellow).

Selain itu, kita boleh juga gunakan arahan berikut untuk setkan warna grafik:

print #pemegang, "color MERAH(0-255) HIJAU(0-255) BIRU(0-255)"

Kali ini kita menggunakan gabungan ketiga-tiga warna ini untuk membentuk warna yang dikehendaki. Perhatikan bahawa kita menggunakan nombor untuk mewakilkan setiap warna yang hendak digabungkan. Warna RGB asli ini hanya dapat digunakan pada mode paparan warna skrin melebihi 256. Kita boleh memilih untuk mengadunkan warna-warna dengan nombor-nombor antara 0 hingga 255. Contoh yang paling baik ialah jika ingin hasilkan warna unggu (violet), mungkin guru lukisan anda dahulu pernah mengajar percampuran antara merah dan biru. Jadi kita boleh kodkan seperti berikut:

print #pemegang, "color 127 0 127"

167

Page 168: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Untuk menyingkatkan masa kita menguji warna-warna RGB ini, mari kita hasilkan sebuah aturcara yang boleh menggabungkan ketiga-tiga warna ini dengan sekali klik. Salin aturcara berikut dan simpan dalam komputer anda agar dapat dijadikan panduan untuk menghasilkan warna-warna yang berbagai-bagai pada masa hadapan.

nomainwinWindowWidth = 200WindowHeight = 300

‘Hasilkan textbox, statictext dan button.

textbox #main.textbox1, 20, 180, 30, 25 textbox #main.textbox2, 80, 180, 30, 25 textbox #main.textbox3, 140, 180, 30, 25 statictext #main.static1, "Sila masukkan angka (0 hingga 255)", 10, 140, 280, 20 statictext #main.static2, "MERAH HIJAU BIRU", 15, 160, 280, 20 button #main.button4, "Gabung Warna", [janaWarna], UL, 20, 220, 150, 30

graphicbox #main.grafik, 10, 10, 170, 120 open "Penjana RGB" for window as #main wait

[janaWarna]

print #main.textbox1, "!contents? merah$" merah = val(merah$) print #main.textbox2, "!contents? hijau$" hijau = val(hijau$) print #main.textbox3, "!contents? biru$" biru = val(biru$) print #main.grafik, "color ";merah;" ";hijau;" ";biru print #main.grafik, "down" for i = 0 to 120 print #main.grafik, "line 0 ";i;" 170 "; i next i print #main.grafik, "flush" waitend

Kita namakan sahaja aturcara ini sebagai ‘Penjana RGB’ kerana kebolehannya menggabungkan warna-warna daripada input yang kita berikan. Kita akan masukkan input angka dari 0 hingga 255 untuk 3 bahagian iaitu Merah, Hijau dan Biru. Apabila semua input telah dimasukkan, maka anda boleh klik pada butang ‘Gabung Warna’. Hasil akan dipaparkan pada kotak segiempat diatas tetingkap berkenaan.

Sekarang mari kita menguji gabungan warna-warna yang mungkin pernah diajar oleh guru lukisan anda semasa sekolah dahulu. Dalam perbincangan sebelum ini, kita sedia

168

Page 169: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

maklum bahawa untuk menghasilkan unggu perlukan dua warna iaitu merah dan biru sahaja. Masukkan input anda dan cuba klik pada butang berkenaan seperti berikut:

Agak menarik, bukan? Jadi guru lukisan anda memang betul. Sekarang kita cuba pula hasilkan warna kuning iaitu gabungan merah dan hijau. Setiap nombor yang kita masukkan akan menjadikannya lebih cerah mahupun lebih gelap. Perhatikan paparan berikut iaitu hasilan kuning (rasanya kuning telur).

169

Page 170: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Just BASIC menyokong berjuta-juta kemungkinan untuk menghasilkan warna RGB atau lebih tepat lagi dikatakan menyokong 256 X 256 X 256 bersamaan 16,777,216 warna! Namun begitu komputer anda hendaklah ditetapkan dengan penggunaan resolusi skrin 256. Kali ini, kita cuba pula hasilkan ‘gradian’ iaitu demonstrasi percampuran warna.

Salin aturcara berikut dan jalankannya:

WindowHeight = 300WindowWidth = 280nomainwin

graphicbox #tingkap.grafik, 10, 10, 250, 240open "Contoh Gradian" for window as #tingkap

print #tingkap.grafik, "size 2 ; down ; fill black"for x = 10 to 250 step 2warna = xprint #tingkap.grafik, "color "; 50; " "; warna; " 100 "print #tingkap.grafik, "place 0 "; (x-10); " ; goto 250 "; (x-10)next xprint #tingkap.grafik, "flush"wait

Dalam aturcara diatas, kita telah gunakan arahan penggerak PLACE untuk menghasilkan garisan kecil yang digelung agar garisan ini bergabung sambil warna diubah sedikit demi sedikit. Perhatikan juga kita gunakan pembolehubah warna=x untuk mengubah warna secara berturutan selari dengan gelung for…next tersebut. Kita hanya membuat perubahan RGB pada warna hijau sahaja. RGB merah disetkan pada nilai warna 50 dan RGB biru disetkan pada nilai warna 100.

Jalankan aturcara anda dan hasilan berikut akan dipaparkan pada tetingkap anda:

170

Page 171: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Agak menarik grafik ‘gradian’ yang dihasilkan. Efek atau kesan ini seolah-olah bayang-bayang tiga dimensi iaitu ada bahagian gelap (tidak terkena cahaya) dan bahagian terang. Anda boleh menguji bermacam-macam kemungkinan adunan warna-warna RGB dengan pelbagai bentuk efek terpulang kepada imaginasi anda yang tiada batasan.

Antara contoh lain ialah demonstrasi dalam aturcara berikut akan membolehkan kita menukar warna efek mengikut ketetapan yang dibuat dalam kod anda. Cuba salin kod aturcara yang kita namakan sebagai ‘4 Musim’ berikut dan jalankannya.

WindowWidth = 400WindowHeight = 300nomainwin

button #w.button1, "Musim Bunga", [bunga], UL, 280, 40, 100, 30 button #w.button2, "Musim Sejuk", [sejuk], UL, 280, 80, 100, 30 button #w.button3, "Musim Luruh", [luruh], UL, 280, 120, 100, 30 button #w.button4, "Musim Panas", [panas], UL, 280, 160, 100, 30

graphicbox #w.grafik, 10, 10, 250, 240 open "4 Musim" for window as #w print #w.grafik, "size 2 ; down ; fill black"

[bunga]mix1 = 0: mix2 =0goto [jana]

[sejuk]mix1 = 100: mix2 = 100goto [jana]

[luruh]mix1 = 150: mix2 =0goto [jana]

[panas]mix1 = 255: mix2 =0

[jana] print #w.grafik, "up; goto 10 10; down"

for y = 10 to 200 step 1 color = y print #w.grafik, "color "; mix1;" ";color;" ";mix2 print #w.grafik, "circle ";(y-10);" ";(y-10) next y print #w.grafik, "up; goto 10 240; down"

for y = 10 to 200 step 1 color = y print #w.grafik, "color "; mix1;" ";color;" ";mix2 print #w.grafik, "circle ";(y-10);" ";(y-10) next y print #w.grafik, "up; goto 250 240; down"

171

Page 172: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

for y = 10 to 200 step 1 color = y print #w.grafik, "color "; mix1;" ";color;" ";mix2 print #w.grafik, "circle ";(y-10);" ";(y-10) next y print #w.grafik, "up; goto 250 0; down"

for y = 10 to 200 step 1 color = y print #w.grafik, "color "; mix1;" ";color;" ";mix2 print #w.grafik, "circle ";(y-10);" ";(y-10) next y

waitend

Aturcara ini menggabungkan penggunaan arahan kawalan BUTTON supaya kita boleh menukar kepada pilihan empat musim yang dikehendaki. Perhatikan juga bahawa gradian dibuat dengan menggabungkan fungsi grafik CIRCLE dan juga menempatkannya pada kedudukan pada bucu segiempat. Pelajarilah helah-helah yang berkesan untuk menghasilkan grafik yang mengagumkan dengan fungsi-fungsi yang banyak disokong Just BASIC. Banyak lagi kemungkinan yang anda boleh hasilkan.

Paparan berikut akan dihasilkan apabila anda klik pada butang ‘Musim Bunga’ pada aturcara tersebut.

172

Page 173: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

LATAR BELAKANG BERGERAK

Kita seringkali melihat dalam mana-mana permainan komputer, latar belakang adalah turut mempunyai pergerakan selari dengan interaktiviti dengan imej utama. Bagaimana pergerakan ini dicapai dengan Just BASIC. Terdapat helah untuk menggerakkan latar belakang yang berformatkan bitmap. Dalam bahagian ini, kita cuba untuk membuat satu pergerakan berterusan latar belakang menggunakan fail bitmap sedia ada dalam pakej Just BASIC.

Cuba selidiki dan fahami aturcara yang berikut serta jalankan:

nomainwinloadbmp "bg", "SPRITES\bg2.bmp"

WindowWidth = 820WindowHeight = 220open "Latarbelakang Persediaan" for Graphics as #w1print #w1, "Down; Fill Yellow"print #w1, "Drawbmp bg 0 40"print #w1, "Drawbmp bg 400 40"print #w1, "Getbmp spriteScene 0 0 800 140"close #w1

WindowWidth = 400WindowHeight = 170UpperLeftX = Int((DisplayWidth - WindowWidth)/2)UpperLeftY = Int((DisplayHeight - WindowHeight)/2)graphicbox #w2.gb, 0, 0, 400, 170open "Latarbelakang Bergerak" for Window as #w2print #w2, "Trapclose [tamat]"xSpriteScene = 0timer 50, [gelungSkrin]wait

[gelungSkrin]xSpriteScene = xSpriteScene - 4if xSpriteScene = -400 thenxSpriteScene = 0end If

print #w2.gb, "Drawbmp spriteScene ";xSpriteScene;" 0"print #w2.gb, "Discard; Getbmp scrollScene 0 0 400 200"print #w2.gb, "Drawbmp scrollScene 0 0"print #w2.gb, "Background scrollScene"print #w2.gb, "Drawsprites"wait

[tamat]timer 0unloadbmp "spriteScene"close #w2end

173

Page 174: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Pertama sekali ialah dalam aturcara ini kita sebenarnya memanipulasikan imej yang diperolehi dalam tetingkap pertama (tetingkap grafik) untuk diguna pada tetingkap kedua. Kita memuatkan dahulu fail bg2.bmp dan membuka tetingkap pertama yang berasaskan grafik. Fail tersebut dilukis semula sebanyak 2 imej yang sama digabungkan bersama dengan arahan DRAWBMP. Selanjutnya gabungan kedua-dua imej ini akan disimpan semula dalam memori sebagai dengan arahan GETBMP dan dinamakan spriteScene. Selanjutnya, tetingkap grafik tersebut ditutup dengan arahan close #w1. Dalam kelajuan komputer yang tinggi, proses ini hanya mengambil masa kurang dari 1 saat sahaja. Oleh itu kita tidak dapat mengesan proses ini semasa aturcara dijalankan.

Dalam bahagian kedua, tetingkap kedua dibuka untuk menggerakkan imej tadi. Oleh kerana imej yang disimpan memiliki saiz yang panjang, maka dengan penggunaan letakan pada DRAWBMP di lokasi-lokasi yang berubah, imej boleh dibuat seolah-olah bergerak.

Perubahan lokasi imej yang dibuat secara berturutan dilakukan oleh baris xSpriteScene = xSpriteScene – 4 yang menolak sebanyak 4 piksel setiap gelungan. Untuk mengawal gelungan tersebut, pernyataan if…then digunakan iaitu setiap kali nilai pada xSpriteScene = -400, maka nilai xSpriteScene ditetapkan semula kepada kosong. Dengan kedudukan pada DRAWBMP yang sentiasa berubah, maka imej akan dialihkan dari lokasi ke lokasi lagi secara ke belakang selaras dengan perubahan pembolehubah xSpriteScene tadi. Arahan DISCARD akan memadam imej terdahulu dan selanjutnya arahan DRAWBMP dibuat semula pada lokasi yang berikutnya. Imej berkenaan akan disetkan sebagai latar belakang dengan arahan BACKGROUND.

Proses-proses ini berlaku dengan agak pantas dan perlunya dikawal dengan pemasaan yangs sesuai. Oleh itu penggunaan TIMER 50 untuk memasuki gelung penanda cawangan [gelungSkrin] untuk melambatkan sedikit gelungan agar kita boleh melihat pergerakan imej yang diperlahankan.

174

Page 175: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

PERMAINAN INTERAKTIF

Bahagian ini akan membincangkan faktor-faktor yang perlu diambil kira semasa merancang untuk menulis aturcara permainan. Bimbingan langkah demi langkah juga dimuatkan bermula dari perancangan awal hinggalah kepada sebuah aturcara permainan yang lengkap. Secara umumnya ia memberi garis panduan berguna kepada konsep asas pengaturcaraan untuk permainan interaktif.

175

Page 176: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

ATURCARA PERMAINAN INTERAKTIF

Kebanyakan orang yang menjadikan pengaturcaraan sebagai hobi biasanya memiliki cita-cita untuk menghasilkan permainan mereka sendiri. Ini adalah tidak mustahil dengan Just BASIC kerana bahasa pengaturcaraan ini banyak menyokong arahan untuk animasi grafik dan juga boleh memainkan format bunyian dan muzik. Sebagai hobi, kita tidak memiliki keupayaan dari segi masa dan tenaga untuk menghasilkan permainan komersil yang dihasilkan oleh syarikat-syarikat pembangunan permainan komputer terkemuka. Ini disebabkan mereka memiliki kepakaran dan pasukan yang sepenuh masa bekerja untuk sesebuah projek. Namun ini tidak bermakna kita tidak boleh menghasilkan permainan interaktif yang menyeronokkan hasil daripada idea dan aturcara kita sendiri. Kadang kala permainan yang ringkas dan mudah boleh memberikan kepuasan kepada diri pengaturcara itu sendiri iaitu anda, malah anda boleh menjemput orang lain untuk mencuba dan mengujinya.

Dalam bahagian ini, kita akan meninjau perkara-perkara yang paling utama yang harus diambil perhatian oleh seseorang pengaturcara sebelum dan semasa menghasilkan sebuah permainan interaktif. Permainan komputer memiliki berbagai-bagai kategori misalnya permainan tembak-menembak (shooting), silang platform (cross platform), perspektif orang pertama (first person shooter), strategi masa nyata (real time strategy), perspektif orang ketiga (role playing game), sukan (sport), simulasi (simulation) dan sebagainya. Harus diingat bahawa keupayaan setiap bahasa pengaturcaraan ada hadnya dan begitu jugalah halnya dengan Just BASIC. Ia tidak memiliki arahan khas untuk operasi 3 dimensi walaupun ianya tidak mustahil untuk dilakukan. Oleh yang demikian, permainan yang berbentuk 2 dimensi adalah paling praktikal untuk dihasilkan. Dengan pengetahuan yang ada berkenaan grafik dan sprite sebelum ini, akan memudahkan kita untuk menghasilkan sebuah permainan ringkas dan menarik.

Contoh antaramuka grafik permainan yang dihasilkan dengan Just BASIC.

176

Page 177: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

KEPERLUAN ASAS

Sebelum memulakan projek, kita perlu meninjau terlebih dahulu beberapa perkara yang akan digunakan dalam permainan yang kita cuba hasilkan. Peringkat perancangan ini amat penting kerana seringkali pengaturcara tidak bersedia dengan sumber-sumber yang akan digunakan seterusnya menganggu kelancaran penghasilan permainan interaktif mereka. Ini merupakan langkah paling penting kerana segala persediaan rapi akan mempercepatkan penyiapan aturcara dan tidak mengganggu tumpuan kita dalam penghasilan kod-kod aturcara. Antara faktor asas yang perlu diambilkira ialah seperti berikut:

1. Sumber Grafik Untuk Sprite

Oleh kerana Just BASIC hanya menyokong muat turun fail bitmap, maka adalah perlu setiap fail grafik dalam format berkenaan (fail yang berakhir dengan .bmp). Perlu diingat bahawa sesebuah permainan mungkin memiliki watak-watak utama dan lain-lain watak sampingan. Oleh itu, jika ingin menggunakan sprite, kita perlu menempatkan mask dalam fail bitmap berkenaan. Kebanyakan fail bitmap, misalnya gambar objek tidak disertakan sekali dengan mask. Adalah penting memilih dahulu fail-fail bitmap yang hendak digunakan sebelum menghasilkan mask untuk setiap satu objek yang terdapat padanya. Secara ringkas, untuk menggunakan sprite dari fail luaran, langkah adalah seperti berikut:

(a) Hasilkan sendiri lukisan objek misalnya gambar watak hero, kapal terbang dan sebagainya dengan perisian lukisan seperti Ms Paint (mesti disimpan dalam format bitmap) atau boleh juga gunakan fail bitmap yang tersedia melalui sumber lain. Selain itu, kaedah lain ialah dengan melukis secara dalaman (turtle graphic) dengan kod Just BASIC itu sendiri untuk objek-objek ringkas.

(b) Hasilkan mask untuk setiap fail yang diakan digunakan sebagai sprite dalam program kita nanti. Pastikan mask sepadan dengan sprite seperti yang telah dipelajari sebelum ini.

(c) Simpan semua fail-fail bitmap tadi ke dalam satu direktori/ folder khas supaya mudah untuk diakses. Pengurusan fail adalah penting agar kita tidak mencampur adukkan fail-fail lain yang tidak berkaitan.

Contoh fail bitmap asal Contoh fail sprite dan mask.

177

Page 178: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Kata kunci berkaitan sprite dalam Just BASIC adalah seperti berikut:

ADDSPRITE CYCLESPRITEDRAWSPRITES REMOVESPRITESPRITECOLLIDES SPRITEIMAGESPRITEMOVEXY SPRITEORIENTSPRITESCALE SPRITEVISIBLESPRITEXY SPRITEXY?

2. Sumber Grafik Untuk Latar Belakang

Latar belakang adalah agak penting dan selalunya memerlukan sebuah fail grafik yang bersaiz besar. Sesebuah permainan komputer yang menarik pastinya menunjukkan latar belakang yang cantik dan kemas sesuai dengan tema permainan. Fail grafik bitmap untuk latar belakang mungkin mudah sedikit untuk dihasilkan berbanding sprite. Anda boleh gunakan mana-mana fail bitmap sebagai latar belakang.

Kadang kala, sebuah permainan ringkas boleh menggunakan fungsi grafik dalaman Just BASIC untuk memenuhi ruang latar belakang yang ringkas. Anda boleh juga gunakan turtle graphic untuk menghasilkan latar permainan.

Contoh latar permainan puzzle. Contoh latar untuk perlumbaan.

Kata kunci berkaitan latar belakang dalam Just BASIC ialah:

DOWNBACKGROUNDDRAWSPRITES

3. Sumber Bunyian Untuk Permainan

Just BASIC menyokong format muzik MIDI (fail yang berakhir dengan sambungan .mid) dan format audio WAVE (fail yang berakhir dengan sambungan .wav). Biasanya penggunaan fail MIDI adalah sebagai muzik latar bagi permainan berkenaan, sebaliknya

178

Page 179: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

fail audio WAVE pula digunakan untuk memberikan kesan bunyi misalnya bunyi letupan, tembakan dan sebagainya. Just BASIC tidak memiliki keupayaan dalaman untuk menghasilkan sendiri bunyi-bunyian dan muzik.

Kata kunci berkaitan memainkan muzik dan bunyian dalam Just BASIC ialah:

PLAYMIDI PLAYWAVESTOPMIDIMIDIPOS ( )

4. Antaramuka Grafik Permainan

Kadang kala sesebuah permainan mempunyai pengenalan (introduction) untuk memberi arahan dan memberitahu pengguna bagaimana untuk mengawal permainan tersebut. Oleh yang demikian, terdapat pelbagai cara untuk melakukannya sama ada dengan hanya menggunakan tetingkap dialog biasa atau dengan menggunakan fail bitmap khas sebagai paparan awal, penamat permainan, papan markah dan sebagainya. Beberapa perkara berkaitan antaramuka grafik sebuah permainan perlu diambilkira oleh pengaturcara adalah seperti berikut:

(a) Panel sisi dan bar-bar yang dipaparkan dalam sesebuah permainan memberi impak yang jelas kepada pengguna. Oleh itu, ianya perlu diberikan paparan grafik yang sesuai sebagai kosmetik permainan kita. Kita boleh menggunakan arahan warna dan teks dalaman Just BASIC untuk menghasilkannya atau boleh juga mengimport dari fail bitmap.

(b) Butang-butang kawalan (jika ada) perlu juga disesuaikan dengan permainan yang dihasilkan. Ada permainan yang memerlukan pengguna klik pada sesuatu butang kawalan untuk mengawal atau berinteraksi. Oleh itu, butang kawalan perlu juga serasi dan diberi perhatian serius. Kita boleh gunakan butang biasa atau BMPBUTTON iaitu menjadikan fail bitmap sebagai butang.

Contoh-contoh butang kawalan BMPBUTTON dalam permainan.

Antara kata kunci berkaitan yang boleh dicadangkan penggunaannya seperti berikut:

DRAWBMP STATICTEXTGRAPHICBOX BUTTONFLUSH BMPBUTTONNOTICE FILL

179

Page 180: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

5. Kawalan Dalam Permainan

Kawalan dalam permainan bergantung kepada jenis permainan yang ingin dihasilkan. Biasanya permainan yang bercorak puzzle menggunakan tetikus sebagai kawalan kerana tidak memerlukan tindakan cepat dari pemain. Sebaliknya, permainan aksi pantas seperti tembak-menembak memerlukan reflek yang banyak. Oleh itu biasanya menggunakan kawalan papan kekunci seperti kekunci anak panah untuk memandu kapal terbang, kekunci spacebar untuk menembak dan sebagainya. Selain itu, Just BASIC juga memiliki keupayaan mendapat input dari kayu ria (joystick).

Antara kata kunci berkaitan yang boleh dicadangkan penggunaannya seperti berikut:

INKEY$Kod-kod VIRTUAL KEYSKod-kod MOUSE EVENT

6. Pemasaan Dalam Permainan

Permainan elektronik merupakan aturcara yang memiliki pengawalan masa sebenar yang dinamik. Ini disebabkan, setiap saat peristiwa yang berlaku akan memberikan kesan ke atas peristiwa yang selanjutnya. Oleh itu, kita perlu memiliki kaedah kawalan masa yang baik terutama sekali permainan yang memiliki tahap-tahap kepayahan yang berlainan. Ia menjadi nadi utama yang akan menggerakkan sesebuah permainan komputer. Biasanya penggunaan arahan TIMER dengan penetapan masa sesuai serta menyambungkan ke penanda cawangan sesuai digunakan dalam Just BASIC.

TIMER millisaat, [PenandaCawangan]

Dengan kebolehan ini, kita boleh membuat kawalan permainan setiap milisaat. Kebolehan ini sangat berguna misalnya permainan yang memerlukan kita menayangkan kedudukan sprite semasa setiap detik permainan.

7. Sifat Rawak Dalam Permainan

Seperti mana permainan teka nombor ringkas sebelum ini, penggunaan fungsi rawak (random) amat berguna terutama sekali untuk mendapatkan kepelbagaian nombor dalam pembolehubah berangka. Jika digunakan secara bijak, permainan akan lebih menarik kerana adanya unsur pelbagai dan dinamik. Ini juga antara nadi yang akan menghidupkan watak-watak yang dikawal komputer misalnya pergerakan rawak sebuah kapal terbang musuh berbanding pergerakan yang dirancang yang kurang mencabar. Jika anda sudah cukup mahir dalam pengaturcaraan ini, kemungkinan juga fungsi ini mampu menjana kecerdikan tiruan dalam permainan.

180

Page 181: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

MERANCANG ATURCARA PERMAINAN

Sepertimana projek lain, perancangan awal hendaklah dilakukan dengan rapi untuk menulis aturcara permainan komputer. Sebelum ini, anda telah didedahkan dengan kod pseudo atau kod olok-olok yang lebih mirip kepada garis panduan bagaimana sesebuah aturcara itu dibentuk. Oleh itu, kita akan cuba untuk memulakan langkah pertama dengan membuat garis panduan ini (outline) sebagai rujukan. Pertama sekali, idea anda perlu disampaikan dengan tertib dan logik bersandarkan fungsi-fungsi yang mampu direalisasi oleh Just BASIC itu sendiri.

Disini, panduan akan diberikan untuk menghasilkan sebuah permainan ringkas yang mempunyai animasi dan grafik. Ikuti langkah-langkah berikutnya dalam menghasilkan sebuah permainan bergrafik pertama anda.

IDEA PERMAINAN

Oleh kerana Just BASIC dibekalkan dengan fail-fail bitmap yang sesuai dijadikan sprite, maka kita akan gunakan empat fail bitmap dibawah ini sebagai watak dalam permainan. Fail-fail ini terdapat dalam direktori SPRITES dalam Just BASIC.

pizza.bmp crab1.bmp crab2.bmp crab3.bmp

Sekarang, kita telah mengenalpasti keempat-empat fail bitmap yang boleh dijadikan sprite berkenaan. Terdapat 2 watak dalam permainan ini nanti iaitu pizza dan juga ketam. Ketiga-tiga gambar ketam (crab1, crab2 dan crab3) ini akan digunakan untuk membuat animasi pergerakan disebabkan imej-imej ini berkaitan antara satu sama lain. Seterusnya, untuk mencari idea, bagaimanakah permainan ini akan dimainkan nanti? Bagaimana untuk menjadikan permainan ini menyeronokkan dan boleh memberi cabaran kepada pemain? Langkah ini amat penting kerana idea kita mungkin mudah tetapi membuat kod untuk merealisasikannya nanti mungkin berliku.

Baiklah, kini saya telah mendapatkan idea bagaimana untuk permainan ini dibuat. Katakanlah, sebuah tetingkap kecil yang berukuran kira-kira 400 piksel tinggi dan 600 piksel lebar. Tetingkap berkenaan adalah jenis grafik yang tidak boleh dikecil dan dibesarkan oleh pemain. Didalam tetingkap grafik berkenaan, saya akan bahagikan kepada 2 ruang iaitu sebuah ruang permainan yang besar sedikit dan sebuah lagi ialah ruang untuk menunjukkan maklumat dan meletakkan butang kawalan. Butang kawalan akan terdiri daripada ‘Mula’ ,‘Keluar’, ‘Kiri’ dan ‘Kanan’.

181

Page 182: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Idea berikutnya ialah ketam ini akan bergerak ke kiri dan ke kanan yang akan dikawal oleh pemain dengan butang ‘Kiri’ dan ‘Kanan’. Objektif utama ketam ini ialah untuk mengelak pizza-pizza yang jatuh dari atas tetingkap. Sekiranya pemain berjaya mengawal ketam ini untuk mengelak dari terkena pizza yang terjatuh itu selama 30 saat, maka pemain tersebut menang dan tetingkap dialog menang ditayangkan. Sebaliknya, jika pemain tidak berjaya mengelak pizza selam 30 saat, maka tetingkap dialog kalah ditayangkan dan menyoal pemain sama ada mahu teruskan permainan semula atau keluar.

Bagaimana idea tersebut? Mungkin agak ringkas tetapi boleh jadi menyeronokkan untuk dimainkan. Jadi, untuk permulaan biarlah kita bermula dengan aturcara permainan yang ringkas terlebih dahulu. Baiklah, jika anda telah kenalpasti idea permainan tersebut, kini tiba giliran untuk langkah berikutnya iaitu membuat kod pseudo ringkas untuk permainan tersebut. Sebelum itu, kita perlu berikan dahulu nama permainan ini. Apa kata kita namakan sahaja ianya ‘KETAM ALERGIK’, nama yang sesuai disebabkan ketam ini tidak boleh terkena pizza!

GARIS PANDUAN ATURCARA

Setelah mendapat idea, kita akan senaraikan bahagian-bahagian aturcara yang akan ditulis. Kita akan gunakan catatan (remark) ini didalam aturcara dalam Just BASIC Editor nanti sebagai rujukan. Langkah-langkah pembinaan aturcara permainan KETAM ALERGIK adalah seperti berikut:

A. Penetapan Awal Permainan.(1) Membuka tetingkap grafik dengan saiz 400x600.(2) Menyelaraskan tetingkap ditengah skrin komputer.(3) Memuat turun fail-fail bitmap untuk sprite.(4) Menempatkan butang-butang kawalan pada tempatnya.(5) Membuka kekotak grafik sebagai panel maklumat.(6) Membuka tetingkap grafik utama dan kawalan trapclose.(7) Menghasilkan latar belakang dan panel antaramuka.(8) Menetapkan kedudukan dan sifat sprite di awal permainan.

B. Pengaktifan Pemasaan – setiap 100 milisaat.(1) Membuat kitaran untuk animasi.(2) Mengenalpasti kedudukan watak utama.(3) Menyelaras input pemain dengan kedudukan ketam.(4) Mengenalpasti kedudukan semua pizza.(5) Mengenalpasti perlanggaran sprite (pizza dan ketam).(6) Menunjukkan masa yang tinggal.

C. Penamatan Permainan.

182

Page 183: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

MENULIS KOD ATURCARA

Sekarang, kita berada pada langkah yang paling penting iaitu membuat kod berdasarkan garis panduan yang telah kita senaraikan tadi. Untuk menghasilkan kod, anda mestilah memahami arahan-arahan dan fungsi-fungsi yang terdapat dalam bahasa pengaturcaraan Just BASIC. Sekiranya anda mengalami kesukaran untuk mengingat semua arahan dan sintaks yang digunakan, selalulah merujuk kepada Helpfile yang amat mesra pengguna. Kita akan membuat kod satu persatu berdasarkan langkah-langkah sebelum ini. Jika anda merasakan langkah yang dibuat tidak menepati aturcara yang dihasilkan, anda boleh mengubahsuai kod berkenaan. Pengaturcaraan adalah satu kerja yang mempunyai fleksibiliti dan terdapat pelbagai cara yang berlainan boleh digunakan untuk mencapai objektif yang sama.

A. PENETAPAN AWAL PERMAINAN

Adalah menjadi praktis yang baik dalam sesebuah aturcara dimulakan dengan membuat penetapan awal perkara-perkara yang akan digunakan di kemudian nanti. Penetapan untuk permainan ini meliputi:

(1) Membuka tetingkap grafik dengan saiz 400x600.

Langkah awal ialah menetapkan saiz tetingkap grafik yang akan kita gunakan dalam permainan ini nanti. Oleh kerana kita mahukan lebar 600 piksel dan tinggi 400 piksel, maka kod yang boleh ditulis adalah seperti berikut.

WindowHeight = 400WindowWidth = 600

Permainan ini tidak memerlukan kita menggunakan tetingkap utama. Oleh itu adalah seelok-eloknya meletakkan NOMAINWIN di dalam kod ini seperti berikutnya.

nomainwin

(2) Menyelaraskan tetingkap ditengah skrin komputer.

Seringkali kita mendapati kedudukan tetingkap yang dijalankan berada di bahagian tepi skrin komputer. Satu cara untuk membuat kedudukannya berada ditengah-tengah skrin ialah dengan memasukkan kod formula yang berikutnya. Ini adalah penting untuk mengemaskan permainan ini supaya lebih mudah diakses oleh pemain.

UpperLeftX=Int((DisplayWidth-WindowWidth)/2)UpperLeftY=Int((DisplayHeight-WindowHeight)/2)

183

Page 184: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

(3) Memuat turun fail-fail bitmap untuk sprite.

Seperti dalam perancangan awal sebelum ini, kita akan menggunakan 4 fail bitmap yang terdapat dalam Just BASIC itu sendiri iaitu pizza.bmp, crab1.bmp, crab2.bmp dan crab3.bmp. Selanjutnya, kita perlu memuat turun fail-fail ini sebelum boleh digunakan dalam aturcara permainan kita nanti. Oleh yang demikian, kod-kod yang berikutnya akan dihasilkan.

loadbmp "crab1", "sprites\crab1.bmp"loadbmp "crab2", "sprites\crab2.bmp"loadbmp "crab3", "sprites\crab3.bmp"loadbmp "pizza", "sprites\pizza.bmp"

Perhatikan bahawa kedudukan fail berkenaan dalam folder SPRITES memerlukan kita meletakkan lokasi pada kod LOADBMP. Oleh kerana kita akan menyimpan fail ini dalam folder Just BASIC itu sendiri maka, akses adalah secara terus ke folder berkenaan. Perhatikan juga bahawa setiap satu fail bitmap memiliki identiti sendiri iaitu ID crab1 akan mewakili fail crab1.bmp, crab2 mewakili crab2.bmp, crab3 mewakili crab3.bmp dan pizza mewakili pizza.bmp. Setiap satu daripada ID berkenaan akan digunakan dalam pengurusan sprite dalam kod-kod selanjutnya nanti.

(4) Menempatkan butang-butang kawalan pada tempatnya.

Oleh kerana kita ingin menggunakan butang kawalan untuk kemudahan pengguna, seelok-eloknya kedudukan butang berkenaan di bahagian tepi tetingkap dan berada didalam kekotak grafik yang kita sediakan nanti.

button #w.m, "Mula", [pemasaAnimasi], UL, 460, 70, 100, 30button #w.k, "Keluar", [keluarGame], UL, 460, 320, 100, 30

button #w.kiri, "Kiri", [kiri], UL, 440, 210, 60, 30button #w.kanan, "Kanan", [kanan], UL, 520, 210, 60, 30

Kita akan gunakan 2 butang iaitu butang ‘Mula’ yang apabila diklik akan menyalurkan aturcara ke penanda cawangan [pemasaAnimasi]. Butang ‘Keluar’ pula akan mengarah aturcara untuk pergi ke penanda cawangan [keluarGame]. Manakala butang kawalan ‘Kiri’ dan ‘Kanan’ pula digunakan untuk mengawal pergerakan ketam berkenaan. Butang ‘Kiri’ akan menghalakan kawalan ke penanda cawangan [kiri] manakala butang kawalan ‘Kanan’ akan menghalakan kawalan ke penanda cawangan [kanan]. Keempat-empat penanda cawangan ini perlu dibina untuk menjalankan fungsi yang akan dibincangkan kemudian nanti.

184

Page 185: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

(5) Membuka kekotak grafik sebagai panel maklumat.

Permainan yang kita bina ini memiliki kekotak grafik (graphicbox), oleh yang demikian kita perlu meletakkannya pada tempat yang sesuai. Kekotak grafik ini berada didalam tetingkap grafik dan menjadi kawasan utama paparan maklumat dan butang semasa permainan dijalankan nanti. Kita perlu menetapkan pemegang khas iaitu #w.g sebagai rujukan aturcara.

graphicbox #w.g, 420, 0, 600, 400

(6) Membuka tetingkap grafik utama dan kawalan trapclose.

Ini adalah bahagian utama iaitu membuka tetingkap grafik (graphic window). Oleh kerana kita tidak mahu adanya bingkai dan tidak mahu pengguna menukar saiz tetingkap di kemudian hari, maka kita perlu memberi penetapan _nf dan _nsb. Perhatikan bahawa sebelum ini kita telah gunakan #w sebagai pemegang tetingkap berkenaan.

open "Ketam Alergik" for graphics_nf_nsb as #w

Adalah praktis yang baik setiap kali kita membuka sesebuah tetingkap, penggunaan perangkap tutup (trapclose) patut disertakan. Ini untuk mengelakkan sebarang masalah kepada pengguna apabila menutup sesebuah tetingkap semasa permainan berlangsung.

print #w, "trapclose [keluarGame]"

Perhatikan kod trapclose yang ditunjukkan diatas akan mengarahkan ke penanda cawangan [keluarGame] apabila pengguna ingin keluar dari permainan. Ini sama dengan apabila kita klik pada butang ‘Keluar’ sebelum ini.

Sekarang kita telah memiliki sebahagian daripada persediaan awal kod aturcara untuk permainan Ketam Alergik ini. Cuba perhatikan kod-kod yang telah dihasilkan tadi dan gabungkannya seperti berikutnya. Perhatikan juga segala catatan yang dibuat pada baris sebelum setiap kod berkenaan sebagai rujukan dan untuk memudahkan kita membuat sebarang suntingan kemudian nanti.

‘ A(1) Membuka tetingkap grafik dengan saiz 400x600.WindowHeight = 400WindowWidth = 600nomainwin

185

Page 186: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

‘ A(2) Menyelaraskan tetingkap ditengah skrin komputer.UpperLeftX=Int((DisplayWidth-WindowWidth)/2)UpperLeftY=Int((DisplayHeight-WindowHeight)/2)

‘ A(3) Memuat turun fail-fail bitmap untuk sprite.loadbmp "crab1", "sprites\crab1.bmp"loadbmp "crab2", "sprites\crab2.bmp"loadbmp "crab3", "sprites\crab3.bmp"loadbmp "pizza", "sprites\pizza.bmp"

‘ A(4) Menempatkan butang-butang kawalan pada tempatnya.button #w.m, "Mula", [pemasaAnimasi], UL, 460, 70, 100, 30button #w.k, "Keluar", [keluarGame], UL, 460, 320, 100, 30

button #w.kiri, "Kiri", [kiri], UL, 440, 210, 60, 30button #w.kanan, "Kanan", [kanan], UL, 520, 210, 60, 30

‘ A(5) Membuka kekotak grafik sebagai ruang permainan.graphicbox #w.g, 420, 0, 600, 400

‘ A(6) Membuka tetingkap grafik utama dan kawalan trapclose.open "Ketam Alergik" for graphics_nf_nsb as #w

print #w, "trapclose [keluarGame]"

wait

Arahan WAIT pada bawah aturcara berkenaan adalah untuk membuat tetingkap berhenti seketika dan menunggu tindakan pengguna selanjutnya. Oleh kerana kita telah mengetahui terdapat 2 penanda cawangan, maka sebaik-baiknya kita masukkan juga di dalam aturcara berkenaan seperti berikut:

[pemasaAnimasi]wait

[keluarGame]close #wend

Gabungkan bersama kod-kod diatas tadi untuk membentuk satu aturcara percubaan. Perhatikan juga dalam penanda cawangan [keluarGame], kita memasukkan close #w dan END kerana fungsi penanda cawangan berkenaan adalah untuk menutup tetingkap dan keluar dari permainan. Setelah anda menggabungkan aturcara berkenaan, cuba uji dengan klik pada ikon RUN pada penyunting Just BASIC anda. Paparan berikut akan dihasilkan.

186

Page 187: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Sekarang kita telah memiliki rangka kerja untuk permainan ini. Langkah berikutnya akan lebih mudah kerana kita telah memiliki maklumat yang diperlukan untuk digabungkan bersama tetingkap yang dipaparkan tersebut. Kita teruskan lagi dengan menghasilkan pula latar belakang permainan dan panel berkaitan.

(7) Menghasilkan latar belakang dan panel antaramuka.

Sebenarnya kita boleh menggunakan latar belakang dari fail bitmap. Namun begitu, kita juga ingin menguji kebolehan grafik yang ada pada Just BASIC untuk memberi pandangan latar belakang yang memuaskan. Oleh itu, kali ini kita perlu terlebih dahulu mempastikan teknik yang akan digunakan untuk latar belakang. Dalam bab sebelum ini, pastinya anda masih ingat lagi bagaimana penghasilan efek radian dengan turtle graphic dalam Just BASIC. Perhatikan kod berikut:

print #w, "size 2 ; down ; fill black" for x = 10 to 380 step 2 warna = x print #w, "color "; warna ;" 255 "; warna print #w, "place 0 "; (x-10); " ; goto 420 "; (x-10) next x

Perhatikan kod tersebut dengan teliti. Ia akan menghasilkan warna hijau muda dan putih dalam bentuk radian. Anda boleh mengubahsuai kod ini untuk membentuk lain-lain warna. Kita kembali kepada tujuan asal iaitu menghasilkan latar belakang untuk permainan kita. Oleh kerana kita perlu mengambil keseluruhan kawasan warna berkenaan dan disimpan dalam memori komputer, maka perlu menggunakan arahan GETBMP.

187

Page 188: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Selanjutnya untuk memaparkan kembali imej berkenaan sebagai latar belakang dalam tetingkap grafik, arahan BACKGOUND akan digunakan.

print #w, "getbmp latar 0 0 420 400"print #w, "background latar"

Perlu diingat bahawa semasa animasi dijalankan, latar belakang akan kekal di bahagian belakang sprite. Arahan DRAWSPRITES akan menyebabkan latar belakang turut dilukis semasa gelungan pemasaan berjalan. Sebenarnya, Just BASIC juga boleh menghasilkan latar belakang bergerak dengan beberapa helah. Kita kembali semula kepada rangka kerja asal. Sekarang, kita perlu memberi warna latar untuk kekotak grafik supaya antaramuka permainan ini lebih meyakinkan.

Oleh kerana warna ketam berkenaan merah, apa kata kita gunakan warna merah gelap (darkred) sebagai warna panel. Anda boleh menggunakan warna lain juga. Sekarang kod yang boleh ditulis adalah seperti berikutnya.

print #w.g, "fill darkred; flush"

Perhatikan bahawa penggunaan arahan FILL untuk mewarnakan keseluruhan ruangan kekotak grafik dengan warna merah gelap. Arahan FLUSH untuk mempastikan warna berkenaan melekat pada kekotak grafik.

(8) Menetapkan kedudukan dan sifat sprite di awal permainan.

Penetapan awal kedudukan dan sifat sprite adalah amat penting di awal permainan. Sebelum itu, kita seharusnya menamakan dan memasukkan sprite yang hendak diguna dalam Just BASIC dengan arahan ADDSPRITE.

print #w, "addsprite pizza1 pizza"print #w, "addsprite pizza2 pizza"print #w, "addsprite pizza3 pizza"print #w, "addsprite pizza4 pizza"

print #w, "addsprite ketam crab1 crab2 crab3"print #w, "spritexy ketam 50 300"print #w, "spriteorient ketam mirror"print #w, "cyclesprite ketam 1"

188

Page 189: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Perhatikan kod-kod diatas dengan teliti. Oleh kerana kita mahukan sebanyak 4 pizza yang berasingan sebagai sprite, maka kita gunakan imej pizza yang sama yang telah dimuat turun dari fail asal pizza.bmp terlebih dahulu. Setiap sprite pizza diberi identiti sendiri untuk memudahkan kita memanggil sprite berkenaan semasa aturcara dimainkan nanti iaitu dinamai sebagai pizza1, pizza2, pizza3 dan pizza4.

Perhatikan juga bahawa kita akan gunakan nama ketam sebagai nama watak utama. Sprite ketam pula merupakan gabungan 3 imej bitmap asal iaitu crab1, crab2 dan crab3. Ini disebabkan kita mahukan ketiga-tiga imej berkenaan untuk membentuk satu animasi pergerakan berterusan semasa aturcara dijalankan nanti.

Berikutnya kedudukan sprite ketam ditentukan pada jarak dari bucu tepi tetingkap pada 50 piksel lebar dan 300 piksel tinggi. Ini ditentukan oleh arahan SPRITEXY yang telah dihasilkan pada kod diatas. Perlu diingat bahawa arahan ini hanya akan meletakkan sprite pada kedudukan yang telah dinyatakan iaitu pada lebar 50 dan tinggi 300.

Oleh kerana imej asal sprite ketam mengadap ke kiri, kita boleh menukar arah sprite secara horizontal dengan SPRITEORIENT melalui arahan MIRROR.

Imej asal sprite ketam Imej setelah orientasi MIRROR

Oleh kerana kita mahukan penggantian imej berlaku dalam sprite ketam iaitu kitaran tiga imej crab1, crab2 dan crab3, maka arahan CYCLESPRITE ketam 1 digunakan. Angka 1 bermakna kitaran bermula dari imej pertama hingga ke imej terakhir.

Sekarang, cuba kita gabungkan semua langkah Penetapan Awal Permainan seperti mana yang berikutnya. Pastikan anda menulis aturcara sama seperti dalam kod tersebut dan cuba jalankannya untuk melihat hasil permulaan.

‘ A(1) Membuka tetingkap grafik dengan saiz 400x600.WindowHeight = 400WindowWidth = 600nomainwin

‘ A(2) Menyelaraskan tetingkap ditengah skrin komputer.UpperLeftX=Int((DisplayWidth-WindowWidth)/2)UpperLeftY=Int((DisplayHeight-WindowHeight)/2)

‘ A(3) Memuat turun fail-fail bitmap untuk sprite.loadbmp "crab1", "sprites\crab1.bmp"loadbmp "crab2", "sprites\crab2.bmp"loadbmp "crab3", "sprites\crab3.bmp"loadbmp "pizza", "sprites\pizza.bmp"

189

Page 190: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

‘ A(4) Menempatkan butang-butang kawalan pada tempatnya.button #w.m, "Mula", [pemasaAnimasi], UL, 460, 70, 100, 30button #w.k, "Keluar", [keluarGame], UL, 460, 320, 100, 30

button #w.kiri, "Kiri", [kiri], UL, 440, 210, 60, 30button #w.kanan, "Kanan", [kanan], UL, 520, 210, 60, 30

‘ A(5) Membuka kekotak grafik sebagai ruang permainan.graphicbox #w.g, 420, 0, 600, 400

‘ A(6) Membuka tetingkap grafik utama dan kawalan trapclose.open "Ketam Alergik" for graphics_nf_nsb as #wprint #w, "trapclose [keluarGame]"

‘ A(7) Menghasilkan latar belakang dan panel antaramuka. print #w, "size 2 ; down ; fill black" for x = 10 to 380 step 2 warna = x print #w, "color "; warna ;" 255 "; warna print #w, "place 0 "; (x-10); " ; goto 420 "; (x-10) next x

print #w, "getbmp latar 0 0 420 400"print #w, "background latar"print #w.g, "fill darkred; flush"

‘ A(8) Menetapkan kedudukan dan sifat sprite di awal permainan.print #w, "addsprite pizza1 pizza"print #w, "addsprite pizza2 pizza"print #w, "addsprite pizza3 pizza"print #w, "addsprite pizza4 pizza"

print #w, "addsprite ketam crab1 crab2 crab3"print #w, "spritexy ketam 50 300"print #w, "spriteorient ketam mirror"print #w, "cyclesprite ketam 1"

wait

[pemasaAnimasi]wait

[kiri]wait

[kanan]wait

[keluarGame]close #wend

190

Page 191: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Cuba jalankan aturcara berkenaan. Tetingkap grafik yang berikut akan dipaparkan pada skrin komputer anda. Dapatkah anda melihat kesan yang dihasilkan dengan formula gradian sebelum ini. Imej hijau ini akan kita jadikan sebagai latar belakang permainan manakala panel disebelah kanan bewarna merah gelap adalah kawasan kawalan untuk butang kawalan dan penunjuk masa. Sprite tidak kelihatan kerana kita belum lagi meletakkan arahan DRAWSPRITES dalam aturcara berkenaan.

B. MENGAKTIFKAN PEMASAAN

Di dalam mana-mana permainan elektronik, pemasaan adalah sangat penting dan ianya seumpama nadi yang menggerakkan permainan berkenaan. Just BASIC memiliki pemasa yang sangat baik kerana keupayaannya membuat hitungan dan gelungan setiap milisaat. Dalam langkah ini, kita akan menulis sifat sebenar permainan ini iaitu bahagian yang akan menghidupkan pergerakan secara logik dan sebagainya. Ianya adalah ‘enjin’ yang akan memacu program kita nanti.

Sebelum membuat kod dalam penanda cawangan [pemasaAnimasi] yang telah ditulis pada awal tadi, kita perlu menyelitkan terlebih dahulu satu lagi penanda cawangan. Kita namakan penanda cawangan ini sebagai [mulaGame] kerana ianya akan digunakan untuk mengawal permulaan permainan nanti.

[mulaGame]print #w.g, "color white; backcolor darkred"print #w.g, "place 35 300"print #w.g, "\Masa: __"

pizzas$ = "pizza1 pizza2 pizza3 pizza4"

191

Page 192: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

arahLR = 5xCycle = 5

xPizza1 = int(rnd(1)*400) : yPizza1 = 0xPizza2 = int(rnd(1)*400) : yPizza2 = 100xPizza3 = int(rnd(1)*400) : yPizza3 = 200xPizza4 = int(rnd(1)*400) : yPizza4 = 0

Dalam penanda cawangan [mulaGame] berkenaan, penetapan awal ialah pada kekotak grafik yang berada disebelah kanan, akan menayangkan tulisan ‘Masa: __’. Sebelum teks ditulis, kita perlu pastikan kedudukannya dengan arahan PLACE. Kita juga perlu memastikan warna sesuai misalnya putih dengan warna latar sesuai seperti merah gelap. Ini ditunjukkan oleh kod yang berikut:

print #w.g, "color white; backcolor darkred"print #w.g, "place 35 300"print #w.g, "\Masa: __"

Sebelum memulakan permainan, aturcara kita mestilah terlebih dahulu mengenalpasti kedudukan awal pizza-pizza yang berkenaan. Kita akan menggunakan keempat-empat pizza berkenaan dan hendaklah memastikan kedudukan awal secara rawak. Perhatikan kod yang berikutnya ini:

xPizza1 = int(rnd(1)*400) : yPizza1 = 0xPizza2 = int(rnd(1)*400) : yPizza2 = 100xPizza3 = int(rnd(1)*400) : yPizza3 = 200xPizza4 = int(rnd(1)*400) : yPizza4 = 0

Kita menggunakan 4 pembolehubah yang mewakili kedudukan mendatar atau horizontal yang ditunjukkan oleh xPizza1, xPizza2, xPizza3 dan xPizza4. Pembolehubah ini akan menentukan kedudukan awal pizza-pizza berkenaan iaitu kedudukan rawak yang dijanakan masing-masing oleh fungsi RND( ). Perhatikan juga 4 pembolehubah lain iaitu yPizza1, yPizza2, yPizza3 dan yPizza4 yang akan mewakili kedudukan awal secara menegak (vertical). Kedudukan menegak pula telah ditetapkan iaitu kita mahukan pizza1 dan pizza4 bergerak serentak awalnya, diikuti pizza2 dan seterusnya pizza3. Jarak-jarak antaranya ialah 100 piksel.

Sekiranya anda lihat pada kod asal penanda cawangan [mulaGame], terdapat lagi kod lain yang mempunyai kaitan dengan penanda cawangan utama nanti iaitu:

192

Page 193: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

pizzas$ = "pizza1 pizza2 pizza3 pizza4"Kegunaan baris kod tersebut ialah untuk menetapkan sebuah pembolehubah rentetan yang menyenaraikan sprite-sprite pizza. Pembolehubah ini akan digabungkan dengan pengesan perlanggaran SPRITECOLLIDES semasa permainan dijalankan supaya apabila ia berlanggar dengan ketam, akan dapat dikesan oleh aturcara. Kita akan membincangkan lebih lanjut hubungan ini kemudian nanti.

arahLR = 5xCycle = 5

Kedua-dua pembolehubah berangka diatas pula akan digunakan untuk menetapkan nilai awal semasa permainan mula dijalankan. Kita akan mengulas lanjut kegunaan fungsi ini berikutnya.

(1) Membuat kitaran untuk animasi.

Dalam bahagian ini, kita akan meneliti bagaimana sesebuah gelungan permainan dibuat. Kita akan membuah sebuah lagi penanda cawangan yang dinamakan [pemasaAnimasi]. Di dalam penanda cawangan ini, fungsi TIMER akan diaktifkan untuk membuat kitaran ke penanda cawangan utama iaitu penanda cawangan yang akan mengandungi semua maklumat penganimasian permainan. Katakan kita namakan pula penanda cawangan utama berkenaan sebagai [kitarAnimasi]. Kitaran yang kita buat ialah setiap 100 milisaat bersamaan 1 per sepuluh saat setiap rangka animasi. Perhatikan aturcara yang berikutnya untuk menetapkan pemasaan sebenar dalam permainan ini.

‘ B(1) Membuat kitaran untuk animasi.[pemasaAnimasi]timer 100, [kitarAnimasi]wait

Kod diatas akan menghalakan arahan supaya mengaktifkan aturcara yang terdapat di dalam penanda cawangan [kitarAnimasi] setiap 100 milisaat secara berterusan. Keadaan ini akan mewujudkan sebuah proses kitaran atau gelungan berterusan yang tidak dapat dikesan oleh mata kasar manusia. Sekarang kita telah memiliki nadi permainan Ketam Alergik dan selanjutnya, kita akan melihat apa yang berlaku semasa proses peredaran yang berlangsung di dalam penanda cawangan utama tersebut.

(2) Mengenalpasti kedudukan watak utama.

Kedudukan watak utama (ketam) amat penting kerana ianya adalah animasi utama yang akan digerakkan dan dikawal oleh pemain. Kita perlu memastikan sebarang kemungkinan yang berkaitan dengan watak utama ini. Beberapa persoalan perlu diselesaikan untuk

193

Page 194: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

memastikan tiada gangguan semasa permainan berlangsung. Ini adalah tugas yang agak memakan masa kerana kita perlu memikirkan sebarang ralat yang mungkin berlaku.

Untuk permulaan, mari kita perhatikan kod aturcara yang berikut:

xCycle = xCycle + arahLRprint #w, "spritexy ketam ";xCycle;" 300"

Masihkah anda ingat pada permulaan penetapan awal tadi kita telah tetapkan nilai-nilai pada pembolehubah xCycle=5 dan arahLR=5. Sekarang kita akan menggunaannya sebagai ‘enjin’ yang akan menggerakkan ketam. Nilai pada pembolehubah xCycle akan meningkat sebanyak 5 (nilai pada pembolehubah arahLR) setiap kali kitaran berlaku kerana ia akan menokok dengan formula tambah pada kod yang pertama tersebut. Selanjutnya, nilai berkenaan akan digunakan pada arahan SPRITEXY untuk mengubah kedudukan atau lokasi menegak ketam berkenaan. Perhatikan kedudukan mendatar adalah konstan pada 300 piksel. Ini bermakna setiap kali kitaran bergerak, maka ketika itu jugalah nilai xCycle akan menokok seterusnya akan menggerakkan sprite ketam ke sebelah kanan skrin.

10 15 20 25 …dan seterusnya.0 350

xCycle = xCycle + arahLR10 = 5 + 5 arahLR=515 = 10 + 520 = 15 + 525 = 20 + 5

… dan seterusnya.

Oleh kerana ketam berkenaan akan bergerak dari kiri tetingkap ke kanan tetingkap pada kedudukan mendatar yang sama, maka kita perlu menyelesaikan beberapa persoalan utama berkaitan pergerakan ketam berkenaan iaitu:

(a) Kawalan untuk menukar arah pergerakan ketam ke kiri semula jika ia bergerak sampai ke penjuru paling hujung disebelah kanan.

(b) Kawalan menukar haluan semula ke kanan jika ketam berkenaan kembali ke kiri penjuru tetingkap berkenaan.

(c) Kawalan menukar haluan apabila pemain klik pada butang ‘Kiri’ iaitu ketam mesti menghala dan bergerak ke kiri.

(d) Kawalan menukar haluan apabila pemain klik pada butang ‘Kanan’ iaitu ketam mesti menghala dan bergerak ke kanan.

194

Page 195: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Untuk menyelesaikan persoalan pertama, kita akan membuat satu kawalan iaitu jika ketam berkenaan sampai pada kedudukan nilai xCycle = 350 iaitu berada dihujung paparan, maka ia akan mengubah nilai pembolehubah arahLR kepada –5. Dalam masa yang sama, kita akan mengubah orientasi sprite ketam berkenaan kembali kepada NORMAL. Keadaan ini diterjemahkan ke dalam kod seperti berikut:

if xCycle = 350 then arahLR = -5 print #w, "spriteorient ketam normal" end if

Dengan kawalan ini, nilai negatif pada pembolehubah arahLR akan menyebabkan nilai pembolehubah xCycle menyusut sebanyak 5 pula iaitu perkara sebaliknya akan berlaku.

…dan seterusnya. 330 335 340 3450 350

xCycle = xCycle + arahLRarahLR= -5 345 = 350 - 5

340 = 345 - 5335 = 340 - 5330 = 335 - 5

… dan seterusnya.

Perhatikan juga dalam masa yang sama, pernyataan bersyarat if…then berkenaan akan turut menukar arah orientasi ketam kembali kepada normal. Kita telah menyelesaikan permasalahan yang pertama dan berikutnya kita akan menggunakan pendekatan yang sama untuk menyelesaikan permasalah kedua. Jika pergerakan ketam berkenaan telah sampai kembali pada kedudukan asal, kita perlukan kawalan untuk menukar hala ke kanan semula. Ini boleh diatasi dengan aturcara yang berikutnya:

if xCycle = 0 then arahLR = 5 print #w, "spriteorient ketam mirror" end if

Seperti penyelesaian pertama, jika nilai xCycle sama dengan 0, maka pernyataan bersyarat if… then berkenaan diaktifkan. Selanjutnya pembolehubah arahLR akan diberi nilai 5 iaitu menyebabkan pembolehubah xCycle kembali menokok seperti biasa dan

195

Page 196: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

haluan pergerakan berubah ke kanan kembali. Dalam masa yang sama, orientasi ketam diubah kembali dengan arahan MIRROR.(3) Menyelaras input pemain dengan kedudukan ketam.

Dalam bahagian mengenalpasti kedudukan watak utama (ketam) sebelum ini kita telah menyelesaikan dua permasalahan utama berkaitan apabila ketam berada di penjuru kanan dan kiri kawasan permainan. Permasalan ketiga dan keempat dalam bahagian berkenaan akan diselesaikan disini. Sepertimana dalam menyelesaikan permasalahan awal tadi, pendekatan yang akan digunapakai dengan sedikit pengubahsuaian.

Sebelum ini kita telah menghasilkan dua butang kawalan iaitu butang ‘Kiri’ dan ‘Kanan’ yang akan menghalakan kawalan ke penanda cawangan [kiri] dan [kanan] masing-masing. Tujuan butang-butang ini ialah mengawal pergerakan ketam agar mengubah arah apabila pemain klik padanya dengan tetikus (mouse). Misalnya jika pemain klik pada butang ‘Kiri’ maka ketam akan menukar arah dan bergerak ke sebelah kiri dan sebaliknya. Perhatikan kedua-dua aturcara yang berikutnya ini:

‘ Mengarah ketam ke arah kiri.[kiri]timer 0 if arahLR = 5 then arahLR = -5 print #w, "spriteorient ketam normal" end if goto [pemasaAnimasi]

‘ Mengarah ketam ke arah kanan.[kanan]timer 0 if arahLR = -5 then arahLR = 5 print #w, "spriteorient ketam mirror" end if goto [pemasaAnimasi]

Dalam aturcara yang pertama, menunjukkan penanda cawangan [kiri] manakala aturcara kedua menunjukkan penanda cawangan [kanan]. Cuba kita kaji penanda cawangan [kiri] terlebih dahulu.

Secara ringkasnya, kita akan menghentikan sementara kitaran dengan TIMER 0. Ini diikuti dengan mengenalpasti sama ada haluan ketam berkenaan menghala ke kanan atau tidak. Jika ia menghala ke kanan (sebab pembolehubah arahLR=5) maka, pernyataan bersyarat if…then akan diaktifkan selanjutnya menukar nilai pembolehubah arahLR kepada –5. Dalam masa yang sama juga, orientasi ketam berkenaan dijadikan NORMAL semula. Sebaliknya, jika ketam berkenaan sememangnya bergerak ke kiri, maka

196

Page 197: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

pernyataan if…then tidak akan diaktifkan. Setelah itu, arahan akan dihalakan kembali ke penanda cawangan [pemasaAnimasi] untuk meneruskan kitaran permainan.

Konsep yang sama digunakan dalam aturcara kedua berkenaan iaitu apabila penanda cawangan [kanan] diaktifkan. Pertama sekali TIMER 0 diaktifkan untuk menghentikan kitaran pemasaan seketika. Kemudian ia akan mengesan samaada pembolehubah arahLR sama dengan nilai –5 atau tidak, jika benar maka pernyataan if…then akan mengaktifkan aturcara didalamnya iaitu menukar nilai pembolehubah arahLR kepada 5 dan arahan orientasi ketam akan ditukar kepada MIRROR. Selanjutnya arahan dihalakan kembali ke penanda cawangan [pemasaAnimasi].

(4) Mengenalpasti kedudukan semua pizza.

Oleh kerana permainan ini berkaitan dengan watak ketam dengan pizza yang jatuh dari atas tetingkap secara berterusan maka, fungsi rawak juga turut mengambil peranan. Ini disebabkan kita mahukan lokasi awal pizza jatuh yang pelbagai. Cuba perhatikan aturcara yang berikutnya.

yPizza1 = yPizza1 + 10yPizza2 = yPizza2 + 10yPizza3 = yPizza3 + 5yPizza4 = yPizza4 + 5

if yPizza1 = 350 then xPizza1 = int(rnd(1)*400) yPizza1 = 10 end if

if yPizza2 = 350 then xPizza2 = int(rnd(1)*400) yPizza2 = 10 end if

if yPizza3 = 350 then xPizza3 = int(rnd(1)*400) yPizza3 = 10 end if

if yPizza4 = 350 then xPizza4 = int(rnd(1)*400) yPizza4 = 10 end if

print #w, "spritexy pizza1 "; xPizza1;" "; yPizza1print #w, "spritexy pizza2 "; xPizza2;" "; yPizza2print #w, "spritexy pizza3 "; xPizza3;" "; yPizza3print #w, "spritexy pizza4 "; xPizza4;" "; yPizza4

197

Page 198: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Sepertimana aturcara pergerakan ketam sebelum ini, aturcara diatas juga adalah sebahagian daripada yang terdapat dalam penanda cawangan utama [kitarAnimasi]. Kita boleh bahagikan ia kepada tiga bahagian utama yang menjalankan tiga fungsi berkaitan.Oleh kerana terdapat 4 pizza yang berasingan, maka kita perlu menetapkan kedudukan setiap pizza dan bagaimana ianya dianimasikan. Pizza-pizza berkenaan akan digerakkan dari atas ke bawah (menegak) iaitu berbeza dengan pergerakan ketam (mendatar kiri dan kanan). Dalam aturcara tersebut kita telah tetapkan kelajuan pergerakan pizza masing-masing (anda boleh mengubahsuai kelajuan jatuhan pizza-pizza berkenaan dengan mengubah nilai tambahannya):

pizza1, bergerak sebanyak +10 piksel ke bawah pizza2, bergerak sebanyak +10 piksel ke bawahpizza3, bergerak sebanyak +5 piksel ke bawahpizza4, bergerak sebanyak +5 piksel ke bawah

Ini bermakna, pizza1 dan pizza2 mempunyai kelajuan yang lebih berbanding pizza3 dan pizza4. Selanjutnya, setiap satu pizza berkenaan mempunyai pernyataan bersyarat if…then masing-masing akan diaktifkan jika nilai yPizza atau menegaknya mencapai tahap 350 iaitu kedudukan pizza telah berada diluar tetingkap permainan. Apabila diaktifkan, nilai rawak xPizza akan dijanakan untuk menetapkan kedudukan mendatar (horizontal) baru secara rawak serta mengembalikan nilai yPizza pada 10.

Bahagian ketiga akan meletakkan kedudukan pizza semasa kitaran serta memaparkan pergerakannya pada tetingkap. Ini dicapai menggunakan arahan SPRITEXY berikutnya dengan lokasi xPizza dan yPizza yang baru. Sebagai contoh, kita kaji pergerakan pizza1.

yPizza1 = yPizza1 +10 10

20 = 10 + 10

30 = 20 + 10

40 = 30 + 10

50 = 40 + 10

60 = 50 + 10

dan seterusnya…350 if yPizza1=350 then

xPizza1= int(rnd(1)*400)

198

Page 199: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

yPizza1 = 10end if

Dalam ilustrasi tersebut, sprite pizza1 akan bergerak ke bawah tetingkap kerana nilai pembolehubah yPizza1 akan menokok sebanyak 10 setiap kali gelung pemasaan berlangsung. Apabila nilai yPizza1 bersamaan dengan 350, maka ia akan menjana nilai rawak antara 1 hingga 400 untuk pembolehubah xPizza1 dan juga menetapkan semula nilai yPizza pada 10. Oleh kerana kedudukan x dan y bagi sprite pizza1 telah berubah, maka lokasi permulaan yang baru bagi sprite pizza1 akan ditempatkan semula pada kedudukan baru berkenaan.

(5) Mengenalpasti perlanggaran sprite (pizza dan ketam).

Untuk menjadikan animasi ini sebuah permainan, perlanggaran antara sprite ketam dan pizza-pizza berkenaan perlu dikesan. Apabila adanya perlanggaran tersebut, maka pemain dianggap telah tewas kerana tidak berjaya mengawal pergerakan ketam untuk mengelak sebarang pizza pada masa yang telah ditetapkan.

Sebelum ini, kod berikut telah dibuat semasa penetapan awal aturcara:

pizzas$ = "pizza1 pizza2 pizza3 pizza4"

Sekarang, perhatikan kod berikutnya yang merupakan sebahagian daripada kod dalam penanda cawangan utama iaitu [kitarAnimasi] yang mempunyai hubungkait dengan pembolehubah rentetan yang dihasilkan pada baris kod diatas.

print #w, "spritecollides ketam pizzas$"if pizzas$>"" then [tewas]

Arahan SPRITECOLLIDES antara sprite ketam dengan senarai pada pembolehubah pizzas$ akan mengesan sebarang perlanggaran. Dalam senarai berkenaan, kesemua sprite pizza iaitu pizza1, pizza2, pizza3 dan pizza4 telah disenaraikan. Arahan IF pizzas$>“” then [tewas] pula akan memastikan sama ada syarat bahawa semua pizza telah dikesan berlanggar dengan sprite ketam atau tidak. Jika dikesan adanya perlanggaran, maka ia akan menghalakan kawalan ke penanda cawangan [tewas].

Didalam penanda cawangan [tewas] pula kita perlu memberitahu pemain sama ada dia mahu teruskan permainan atau sebaliknya. Jadi, penggunaan tetingkap dialog CONFIRM adalah yang paling sesuai. Adalah baik juga jika kita sertakan sedikit bunyi untuk mencuba arahan PLAYWAVE nanti dalam penanda cawangan ini. Selain itu, kita perlu mempastikan rekod masa yang terkini adalah kurang dari 30 saat kerana pemain akan dianggap berjaya jika melepasi tempoh berkenaan tanpa sebarang perlanggaran

199

Page 200: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

dengan pizza-pizza. Cuba kita selidiki aturcara yang boleh ditulis didalam penanda cawangan [tewas] berkenaan.

[tewas]timer 0 playwave "media\beep.wav", synch confirm "Anda tewas! Mahu bermain semula?"; quitLose$ if quitLose$ = "yes" then markah = 0 point = 0 goto [mulaGame] end if

goto [keluarGame]

Penggunaan TIMER 0 akan menghentikan pemasaan sebenar dalam animasi. Serentak dengan itu, bunyi ‘beep’ akan dimainkan kerana kita telah berikan arahan PLAYWAVE pada fail audio yang terdapat dalam direktori MEDIA (ia memang berada dalam pakej asal penyunting Just BASIC).

Berikutnya tetingkap dialog CONFIRM diaktifkan untuk memberitahu pemain yang dia telah tewas serta sama ada mahu meneruskan permainan atau sebaliknya. Penggunaan pembolehubah quitLose$ untuk mengambil nilai input pemain berkenaan apabila dia klik salah satu daripada butang ‘Yes’ atau ‘No’ nanti.

Sekiranya menekan butang ‘Yes’, maka pernyataan if…then akan aktif seterusnya menetapkan nilai markah=0 dan point=0. Kemudian akan menghalakan kawalan ke penanda cawangan [mulaGame]. Sebaliknya jika menekan butang ‘No’ akan menghalakan kawalan ke penanda cawangan [keluarGame]. Penanda cawangan ini akan menamatkan permainan dan menutup tetingkap permainan sepenuhnya.

Perhatikan, terdapat pembolehubah berangka markah dan point dalam aturcara ini. Ia akan dibincangkan dalam bahagian penunjuk masa yang tinggal.

(6) Menunjukkan masa yang tinggal.

200

Page 201: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Bagaimanakah caranya untuk membuat kiraan masa yang bergerak setiap kali gelung pemasaan berlangsung? Kaedah sama digunakan tetapi sedikit pengubahsuaian pada dua pembolehubah berangka iaitu markah dan point. Perhatikan kod aturcara berikutnya yang juga sebahagian daripada kod dalam penanda cawangan [kitarAnimasi].

print #w.g, "place 35 300"print #w.g, "\Masa: ";markahmarkah = int(point/10)point = point + 1

if markah = 30 then [menang]

Oleh kerana objektif kita untuk memaparkan masa yang bergerak, maka pembolehubah markah akan memegang nilai saat sebenar. Pembolehubah point akan menokok nilainya setiap kali gelungan pemasaan berkitar, oleh yang demikian kita akan gunakan nilai yang dipegang oleh pembolehubah ini dan akan dibahagikan dengan nilai 10. Ini bermakna, pembolehubah markah adalah sama dengan hasil pengiraan nilai semasa point dibahagi 10. Selanjutnya nilai ini dipaparkan pada sebelah kanan tetingkap permainan iaitu dalam kekotak grafik yang telah kita buat pada awalnya.

Satu pernyataan bersyarat akan menghalakan aturcara ke penanda cawangan [menang] jika markah sama dengan 30. Ini bermakna, pemain telah berjaya melepasi masa 30 saat berkenaan dan penanda cawangan [menang] akan memaparkan tetingkap dialog yang memberitahu pemain kejayaannya (sama seperti penanda cawangan [tewas] sebelum ini).

Penanda cawangan [menang] akan ditulis sebagaimana berikut:

[menang]timer 0 confirm "Anda menang! Mahu bermain semula?"; quitWin$ if quitWin$ = "yes" then markah = 0 point = 0 goto [mulaGame] end if

goto [keluarGame]

Sebagaimana penanda cawangan [tewas] sebelum ini, penanda cawangan [menang] juga memiliki stuktur yang hampir sama. Cuma bezanya ialah teks yang memberitahu bahawa pemain telah beroleh kejayaan dipaparkan dalam tetingkap dialog.

201

Page 202: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

C. PENAMATAN PERMAINAN.

Tidak banyak yang ingin dimasukkan dalam bahagian ini kerana penamatan permainan telah dibincangkan dalam bahagian kedua sebelum ini. Cuma beberapa perkara yang belum kita sentuh ialah kaedah mengemaskinikan maklumat yang terdapat pada penanda cawangan [keluarGame]. Adalah sesuatu praktis yang baik setiap kali kita hendak keluar dari mana-mana program, kita perlu membuat arahan untuk membebaskan memori komputer dari muatan seperti fail bitmap yang telah dimuat turun pada awalnya. Oleh itu arahan UNLOADBMP perlu digunakan sebelum menutup tetingkap dan keluar dari permainan.

Cuba ubahsuai penanda cawangan [keluarGame] sedikit seperti berikut:

[keluarGame] unloadbmp "crab1" unloadbmp "crab2" unloadbmp "crab3" unloadbmp "pizza"

close #w end

Secara umumnya, untuk keluar daripada permainan, pemain boleh menekan butang ‘Keluar’ pada panel kawalan atau butang X pada penjuru atas kanan tetingkap. Selain itu, semasa dalam permainan, pemain juga boleh keluar melalui kedua-dua tetingkap dialog yang memaparkan teks anda telah tewas dan anda telah berjaya.

KESIMPULAN

Kesimpulan disini ialah setiap kali gelungan pemasaan berdetik, maka semua proses-proses yang telah dibincangkan sebelum ini dijalankan satu persatu dengan kepantasan yang tinggi. Harus diingat bahawa sebelum permainan boleh dipaparkan, perkara utama yang harus diletakkan pada baris paling bawah dalam penanda cawangan [kitarAnimasi] ialah arahan DRAWSPRITES. Cara ia ditulis ialah seperti berikut:

202

Page 203: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

print #w, "drawsprites"

Kita telah menghasilkan sebuah permainan yang ringkas dengan Just BASIC. Walaupun ianya boleh diperbaiki dengan kod yang lebih efisien, contoh penghasilan permainan ini sangat mudah diikuti langkah demi langkah. Anda boleh mengubahsuai sendiri misalnya menambah lagi watak-watak yang terdapat dalam permainan berkenaan dan menukar kaedah kawalan daripada menggunakan butang kepada penggunaan papan kekunci untuk mengawal ketam berkenaan. Malahan anda boleh menambah lagi maklumat pada panel kawalan misalnya meletakkan tajuk dan arahan-arahan kawalan.

Banyak lagi idea boleh diperluaskan dan bermacam-macam jenis permainan interaktif boleh anda hasilkan dengan Just BASIC. Apa yang perlu ialah kreativiti anda mengolah serta mengatur setiap kod untuk menjadi sebuah program yang bermakna.

Permainan Ketam Alergik sedang beraksi.

Untuk memudahkan rujukan, kod sumber sepenuhnya permainan Ketam Alergik telah dikemaskinikan. Anda boleh merujuk sebarang maklumat kerana adanya catatan REMARK pada setiap fungsi-fungsi aturcara yang telah dibincangkan sebelum ini. Cuba hasilkan sendiri atucara perkenaan langkah demi langkah terlebih dahulu dan ubahsuai mengikut keperluan anda jika perlu. Anda boleh juga menghasilkan tahap (level), markah (point atau score) dan sebagainya terpulang kepada kreativiti dan jenis permainan yang dihasilkan.

203

Page 204: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

'------------------------------------------------------------' PERMAINAN KETAM ALERGIK' Pengaturcara : Nama Anda'------------------------------------------------------------'' A(1) Membuka tetingkap grafik dengan saiz 400x600.WindowHeight = 400WindowWidth = 600nomainwin

' A(2) Menyelaraskan tetingkap ditengah skrin komputer.UpperLeftX=Int((DisplayWidth-WindowWidth)/2)UpperLeftY=Int((DisplayHeight-WindowHeight)/2)

' A(3) Memuat turun fail-fail bitmap untuk sprite.loadbmp "crab1", "sprites\crab1.bmp"loadbmp "crab2", "sprites\crab2.bmp"loadbmp "crab3", "sprites\crab3.bmp"loadbmp "pizza", "sprites\pizza.bmp"

' A(4) Menempatkan butang-butang kawalan pada tempatnya.button #w.m, "Mula", [pemasaAnimasi], UL, 460, 70, 100, 30button #w.k, "Keluar", [keluarGame], UL, 460, 320, 100, 30button #w.kiri, "Kiri", [kiri], UL, 440, 210, 60, 30button #w.kanan, "Kanan", [kanan], UL, 520, 210, 60, 30

' A(5) Membuka kekotak grafik sebagai panel permainan.graphicbox #w.g, 420, 0, 600, 400

' A(6) Membuka tetingkap grafik utama dan kawalan trapclose.open "Ketam Alergik" for graphics_nf_nsb as #wprint #w, "trapclose [keluarGame]"

' A(7) Menghasilkan latar belakang dan panel antaramuka. print #w, "size 2 ; down ; fill black" for x = 10 to 380 step 2 warna = x print #w, "color ";warna;" 255 ";warna print #w, "place 0 "; (x-10); " ; goto 420 "; (x-10) next x

print #w, "getbmp latar 0 0 420 400" print #w, "background latar" print #w.g, "fill darkred; flush"

' A(8) Menetapkan kedudukan dan sifat sprite di awal permainan.print #w, "addsprite pizza1 pizza"print #w, "addsprite pizza2 pizza"print #w, "addsprite pizza3 pizza"print #w, "addsprite pizza4 pizza"print #w, "addsprite ketam crab1 crab2 crab3"print #w, "spritexy ketam 50 300"print #w, "spriteorient ketam mirror"print #w, "cyclesprite ketam 1"

204

Page 205: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

' B. PENGAKTIFAN PEMASAAN.[mulaGame]print #w.g, "color white; backcolor darkred"print #w.g, "place 35 300"print #w.g, "\Masa: __"

pizzas$ = "pizza1 pizza2 pizza3 pizza4"

arahLR = 5xCycle = 5

xPizza1 = int(rnd(1)*400) : yPizza1 = 0xPizza2 = int(rnd(1)*400) : yPizza2 = 100xPizza3 = int(rnd(1)*400) : yPizza3 = 200xPizza4 = int(rnd(1)*400) : yPizza4 = 0wait

' B(1) Membuat kitaran untuk animasi.[pemasaAnimasi]timer 100, [kitarAnimasi]wait

[kitarAnimasi]' B(6) Menunjukkan masa yang tinggal.print #w.g, "place 35 300"print #w.g, "\Masa: ";markah

markah = int(point/10)point = point + 1if markah = 30 then [menang]

' B(2) Mengenalpasti kedudukan watak utama.xCycle = xCycle + arahLR

if xCycle = 350 then arahLR = -5 print #w, "spriteorient ketam normal" end if

if xCycle = 0 then arahLR = 5 print #w, "spriteorient ketam mirror" end if

' B(4) Mengenalpasti kedudukan semua pizza.yPizza1 = yPizza1 + 10yPizza2 = yPizza2 + 10yPizza3 = yPizza3 + 5yPizza4 = yPizza4 + 5

if yPizza1 = 350 then xPizza1 = int(rnd(1)*400) yPizza1 = 10 end if

205

Page 206: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

if yPizza2 = 350 then xPizza2 = int(rnd(1)*400) yPizza2 = 10 end if

if yPizza3 = 350 then xPizza3 = int(rnd(1)*400) yPizza3 = 10 end if

if yPizza4 = 350 then xPizza4 = int(rnd(1)*400) yPizza4 = 10 end if

print #w, "spritexy pizza1 "; xPizza1;" "; yPizza1print #w, "spritexy pizza2 "; xPizza2;" "; yPizza2print #w, "spritexy pizza3 "; xPizza3;" "; yPizza3print #w, "spritexy pizza4 "; xPizza4;" "; yPizza4print #w, "spritexy ketam ";xCycle;" 300"

' B(5) Mengenalpasti perlanggaran sprite (pizza dan ketam).print #w, "spritecollides ketam pizzas$"if pizzas$>"" then [tewas]print #w, "drawsprites"wait

' B(3) Menyelaras input pemain dengan kedudukan ketam - ke kiri.[kiri]timer 0if arahLR = 5 thenarahLR = -5print #w, "spriteorient ketam normal"end ifgoto [pemasaAnimasi]

' B(3) Menyelaras input pemain dengan kedudukan ketam - ke kanan.[kanan]timer 0if arahLR = -5 thenarahLR = 5print #w, "spriteorient ketam mirror"end ifgoto [pemasaAnimasi]

[tewas]timer 0playwave "media\beep.wav", synchconfirm "Anda tewas! Mahu bermain semula?"; quitLose$if quitLose$ = "yes" then markah = 0: point = 0 goto [mulaGame]end ifgoto [keluarGame]end

206

Page 207: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

[menang]timer 0confirm "Anda menang! Mahu bermain semula?"; quitWin$if quitWin$ = "yes" then markah = 0: point = 0 goto [mulaGame]end ifgoto [keluarGame]end

' C. PENAMATAN PERMAINAN.[keluarGame]unloadbmp "crab1"unloadbmp "crab2"unloadbmp "crab3"unloadbmp "pizza"close #wend

Sekarang, kita telah melengkapkan sebuah aturcara permainan beranimasi yang ringkas. Oleh kerana pembinaan permainan memerlukan berbagai-bagai kaedah dan teknik, maka kita perlu berlatih dengan bermula dengan idea permainan yang mudah terlebih dahulu. Jika anda telah merasa cukup yakin menghasilkan permainan yang lebih sukar dibina, maka bolehlah membuat persediaan yang sewajarnya. Antara tips yang paling utama sebelum kita menghasilkan sesebuah permainan ialah:

(a) Apakah kod-kod yang diperlukan untuk membuat sesebuah pergerakan animasi atau konsep pergerakan yang digunakan dalam permainan berkenaan?

(b) Saiz dan jenis fail-fail luaran terutama fail grafik berformat bitmap yang perlu. Kadang kala tugas mencari atau menghasilkan grafik yang diperlukan memakan masa lebih lama daripada membuat kod itu sendiri.

Artikel Ringkas

SEBELUM MULA MENULIS ATURCARA

Perancangan Untuk Kejayaan! Ini adalah ayat yang sering kita dengar pada mana-mana sahaja bidang; tidak kiralah dalam perniagaan, pendidikan, ketenteraan, sukan dan sebagainya. Syarikat kenderaan pastinya akan memulakan model baru dengan membina terlebih dahulu prototaip dan konsep rekabentuk sebuah kereta sebelum melancarkan secara besar-besaran dalam pasaran. Begitu jugalah halnya dengan menulis aturcara, sama ada secara professional atau sebagai hobi, perlunya perancangan dan pengujian kod-kod yang hendak dimasukkan nanti.

207

Page 208: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Seorang pengaturcara yang tidak sabar sering kali ingin segera menyiapkan program yang dibentuk tanpa adanya perancangan atau garis panduan untuk diikuti dan akhirnya projek tersebut tinggal separuh jalan. Pengaturcara yang baik cuba untuk mengelakkan ini daripada berlaku walaupun ingin menulis kod aturcara yang ringkas!

Pada suatu masa dahulu, carta aliran (flowchart) digunakan oleh pengaturcara untuk memulakan perancangan sebagai garis panduan. Pada hari ini, kebanyakan pengaturcara menggunakan kod pseudo (pseudocode) yang meringkaskan apa sahaja yang hendak dilakukan pada sesebuah projek. Ini bergantung kepada kaedah yang paling mudah bagi pengaturcara berkenaan. Sebelum memulakan aturcara, apakah misi dan objektif anda sebenarnya. Ini boleh jadi sebagai PERNYATAAN MISI (mungkin dalam sector korporat dan jabatan kerajaan juga terdapat pernyataan misi masing-masing). Pernyataan ini boleh bermula dengan OBJEKTIVITI yang hendak dicapai dan TUGAS yang akan dilakukan sama ada secara umum atau pun memecahkannya kepada sub-sub untuk memudahkan pengurusan nanti.

Tugas-tugas dan objektif tidaklah semestinya ditulis atau dicetak dengan kemas terutama bagi projek-projek yang ringkas. Kadang kala kita boleh membentuk sikap yang teratur dan seterusnya membentuk mentaliti yang lebih teratur dalam diri kita. Jika projek yang hendak dirancang memerlukan masa yang panjang misalnya beberapa hari, minggu atau bulan adalah baik kita membuat senarai atau ‘checklist’ untuk memantau perkembangan pembangunan yang sedang dilakukan. Kata pepatah melayu ‘jika kail panjang sejengkal, lautan dalam jangan diduga’. Jika ilmu pengaturcaraan ini kita ibaratkan kail yang sejengkal ini sebenarnya boleh dipanjangkan lagi dengan mengasah skill dan menambah pengetahuan. Sepanjang mana pun kail anda tetapi tanpa perancangan, sudah pasti ikan tidak dapat ditangkap dalam lautan yang luas itu, bukan.

Sebagai hobi, pengaturcaraan adalah satu keseronokan terutama apabila menyiapkannya. Dengan adanya perancangan ke atas program ini akan dapat mengelak sebarang kegagalan dan melambatkannya. Belajarlah bagaimana menyusun kerja anda supaya proses ini menjadi lebih menyeronokkan dan bukannya menyusahkan hidup anda!

208

Page 209: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

PENGGUNAAN CAKERA PADAT KEPILAN

Bahagian ini akan memberi panduan instalasi penyunting Just BASIC ke dalam komputer. Segala kandungan dalam cakera padat kepilan yang disertakan bersama buku ini akan diulas terutama sekali aturcara-aturcara yang telah lengkap. Contoh-contoh yang dihasilkan adalah hasil karya sendiri penulis dan segala kaedah serta teknik yang digunakan akan diulas dengan lebih lanjut dalam bahagian ini.

209

Page 210: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

PENGGUNAAN CAKERA PADAT KEPILAN

Cakera padat (compact disc) yang turut didatangkan bersama buku ini mengandungi 3 kategori utama dalam bentuk fail-fail digital yang terdiri daripada:

(1) Pemuat turun (installer) asal Just BASICv1.01 iaitu jbwin101.exe(2) Contoh aturcara permainan, demonstrasi dan aplikasi yang lengkap.(3) Dua set fail-fail bitmap untuk sprite dan latar belakang.

Anda boleh memeriksa kandungan yang terdapat di dalam cakera padat berkenaan dan gunakan sebarang maklumat yang terdapat didalamnya untuk mempelajari dengan lebih lanjut pengaturcaraan Just BASIC. Kita akan membincangkan setiap kategori ini satu persatu dalam bahagian ini untuk memudahkan anda membuat rujukan.

PEMASANGAN JUST BASIC

Dalam kategori ini, hanya mengandungi satu fail iaitu jbwin101.exe yang asal. Fail ini adalah fail pemuat turun (installer) yang sama jika anda memuat turun dari laman web rasmi Just BASIC iaitu www.justbasic.com. Saiz fail berkenaan kira-kira 2.57 megabait adalah agak kecil menggunakan ruang ingatan komputer. Oleh yang demikian, anda mempunyai dua option untuk mendapatkan penyunting Just BASIC iaitu:

(a) Muat turun dari laman web rasmi Just BASIC.(b) Muat turun dari cakera padat kepilan yang disertakan bersama buku ini.

Oleh kerana fail ini adalah dibawah hakcipta pemilik asalnya iaitu Carl Gundel dan Shoptalk System, kita tidak dibenarkan mengubahsuai struktur dan kandungan fail asalnya.

Anda perlu terlebih dahulu memasang atau membuat instalasi fail-fail penting ke dalam komputer anda sebelum boleh membuka dan menjalankan bahasa pengaturcaraan ini dengan Just BASIC Editor. Untuk memulakan proses pemasangan dari cakera padat ke dalam komputer anda, ikuti langkah-langkah berikutnya. Untuk contoh ini, kita akan menggunakan komputer dengan sistem operasian Windows XP.

210

Page 211: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Langkah 1

Masukkan cakera padat kepilan ke dalam pemacu cakera padat komputer anda. Cuba anda buka dan perhatikan dahulu isi kandungan direktori dan fail-fail yang terdapat dalam cakera padat berkenaan. Terdapat 3 folder utama iaitu Fail-fail Bitmap, Contoh Aturcara dan Just BASIC Installer di dalam cakera padat berkenaan.

Langkah 2

Oleh kerana tujuan kita untuk membuat instalasi fail-fail yang diperlukan dalam bahasa pengaturcaraan Just BASIC v1.01, maka anda boleh memasuki folder Just BASIC Installer. Terdapat hanya satu fail installer asal Just BASIC didalamnya yang bernama jbwin101.exe.

Seperti yang dipaparkan dalam imej diatas, anda boleh dwiketik pada ikon fail jbwin101 berkenaan untuk memulakan proses muat turun ke dalam komputer anda. Ini merupakan fail pakej asal seperti mana yang boleh dimuat turun dari laman web rasmi Just BASIC di www.justbasic.com. Pakej ini adalah mampatan (compressed) khas untuk memudahkan pemindahan fail dari laman web berkenaan ke komputer pengguna. Perhatikan bahawa saiz fail berkenaan ialah 2.57 megabait.

Langkah 3

Apabila anda telah memasuki ruangan instalasi Just BASIC dan bersedia untuk proses muat turun, imej yang berikutnya dipaparkan pada skrin komputer anda. Ini merupakan ruangan instalasi agar anda boleh membuat pilihan lokasi simpanan dalam cakera keras (hard disc).

211

Page 212: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Perhatikan sebuah tetingkap yang berada ditengah-tengah skrin ini menunjukkan lokasi atau destinasi direktori yang hendak di instal dengan Just BASIC. Penetapan asal (default) ialah berada pada C:\Program Files\Just BASIC v1.01, dan anda tidak perlu bimbang kerana ia akan secara automatik membina direktori berkenaan sebelum instalasi dijalankan.

212

Page 213: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Jika perhatikan pada tetingkap berkenaan, ia ada menyatakan teks Required: 6314K yang bermakna ia memerlukan ruangan ingatan cakera keras sebanyak 6.31 megabait untuk memuatkan semua fail-fail berkaitan. Teks berikutnya menunjukkan jumlah ruang ingatan yang ada dalam cakera keras anda. Setiap komputer akan menunjukkan jumlah yang berbeza bergantung kepada jumlah cakera keras masing-masing. Klik pada butang ‘Start’ untuk mulakan instalasi.

Langkah 4

Semasa instalasi dijalankan, paparan akan menunjukkan ‘bar progress’ yang bergerak menunjukkan peratusan yang telah dimuat turun. Proses ini hanya mengambil masa beberapa saat bagi komputer yang mempunyai kelajuan tinggi. Apabila selesai 100%, paparan yang berikut kelihatan.

Anda boleh klik butang ‘Stop’ berkenaan untuk menamatkan ruangan instalasi tersebut. Ini bermakna proses instalasi (unpacking) telah berjaya dilakukan dengan sempurna dan komputer anda telah memiliki bahasa pengaturcaraan Just BASIC version1.01. Apabila proses ini selesai, anda akan memasuki Just BASIC Editor buat kali yang pertama. Selain itu, program juga akan secara automatik memasukkan bahasa ini ke dalam senarai program anda butang Start Menu tetingkap utama sistem operasian MS Windows. Semuanya telah sedia, dan anda boleh melancarkan program ini bila-bila masa sahaja sekarang.

213

Page 214: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Penyunting Just BASIC versi 1.01 dipaparkan buat kali pertama.

Kumpulan fail yang dimasukkan dalam pilihan program di ‘Start Menu’ sistem anda.

214

Page 215: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

PENGENALAN CONTOH ATURCARA

Dalam bahagian ini, kita akan mengkaji beberapa aplikasi dan permainan yang terdapat dalam cakera padat kepilan yang disertakan bersama buku ini. Tujuan utama bahagian ini ialah untuk mendedahkan bagaimana sesebuah aturcara dihasilkan dengan mudahnya dengan bahasa pengaturcaraan Just BASIC ini. Kita boleh mempelajari beberapa teknik dan helah dalam menulis kod yang terdiri daripada formula-formula tertentu yang terdapat di dalam aturcara berkenaan. Di dalam cakera padat kepilan berkenaan terdapat terdapat 2 permainan interaktif, 1 demonstrasi bergrafik dan 2 aplikasi khas yang masing-masing berada didalam lipatan tersendiri lengkap dengan fail-fail sokongan seperti fail-fail bitmap, midi dan wave. Kesemuanya adalah aturcara yang telah lengkap dan direkabentuk untuk memaparkan penggunaan grafik dan animasi yang tertentu.

(a) Permainan Berasas Platform – FruitTale(b) Permainan Tembak Menembak – Alien Battlefield(c) Demonstrasi Perlumbaan F1 – F1 Just Racing(d) Aplikasi Pembina Butang Kawalan – Buttonshop version 2(e) Aplikasi Ringkas Grafik – Stickmaker version 1.01

Kesemuanya memiliki kod sumber masing-masing (dalam format .bas) dan anda boleh cuba memahami serta mengkaji bahagaimana ianya berfungsi. Gunakan penyunting Just BASIC anda untuk membuka fail-fail berkenaan dan jalankan seperti biasa. Terdapat catatan ringkas bagi setiap kod yang terdapat didalam aturcara berkenaan untuk memudahkan anda membuat rujukan (perhatian: catatan dibuat dalam bahasa Inggeris kerana program asal telah dihasilkan dalam bahasa berkenaan). Anda tidak semestinya mengikut teknik yang diterapkan kerana setiap pengaturcara memiliki kaedah yang tersendiri dalam membuat kod aturcara mengikut keselesaan masing-masing. Oleh yang demikian, tidak ada salah dan betulnya dalam mempersembahkan gaya penulisan aturcara yang tersendiri.

Untuk mendapatkan aturcara-aturcara berkenaan, masuk ke dalam direktori atau lipatan Contoh Aturcara. Disini, setiap set aturcara memiliki direktori masing-masing mengikut nama iaitu Alien Battlefield, Buttonshop v2, F1 JustRacing, Fruit Tale dan Stickmaker v1.01. Ini amat penting untuk pengkelasan set fail-fail yang diperlukan untuk menjalankan sesebuah aturcara. Lagi pun ia biasanya lebih kemas dan memudahkan penyelenggaraan fail-fail berkaitan.

215

Page 216: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

ULASAN ATURCARA 1

Jenis Progam : Permainan Berasas PlatformNama Program : FruitTaleJumlah Fail Bitmap : 31 fail bitmapJumlah Fail Audio : 5 fail wave dan 1 fail midiSaiz Keseluruhan : 2.07 megabytePengarang : Rozlano Muhamad Tobat

RINGKASAN

Permainan ini adalah amat mudah kerana pemain hanya perlu mengawal arah lompatan watak utama sama ada ke kiri atau ke kanan dengan kekunci anak panah kiri dan kanan pada papan kekunci. Objektif permainan ini adalah menghantar semua lapan jenis buah-buahan dari sebelah kanan seberang sungai ke sebelah kiri sungai dalam masa yang singkat. Untuk menyeberang sungai, anda akan dibantu oleh empat ekor penyu yang baik dan anda boleh melompat diatas penyu-penyu berkenaan untuk menyeberang. Namun, anda perlu berwaspada kerana penyu-penyu ini akan tertarik untuk memakan ikan-ikan yang akan muncul bila-bila masa dari dasar sungai berkenaan. Apabila penyu menyelam untuk mendapatkan ikan tersebut, anda perlu menunggu sehingga ia naik kembali ke permukaan sebelum boleh meneruskan tugas anda. Jika tidak, anda akan terjatuh dan permainan terpaksa ditamatkan.

216

Page 217: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Sekiranya anda berjaya menamatkan permainan ini tanpa terjatuh ke dalam sungai dan dalam masa yang kurang daripada had ditetapkan, satu paparan keputusan akan menunjukkan gred anda sama ada A, B, C atau D. Gred anda akan bergantung kepada masa yang masih tinggal. Idea penghasilan permainan ini berdasarkan permainan arked yang ringkas dan tidak memerlukan kita untuk banyak berfikir. Tahap kepermainan juga adalah sederhana dan sesuai untuk semua peringkat.

KAEDAH PENGATURCARAAN

1. Membuat Pergerakan Melengkung

Sekiranya anda meneliti kod-kod yang digunakan dalam aturcara permainan FruitTale ini, terdapat beberapa kod yang unik bagi menjalankan beberapa fungsi istimewa. Dalam permainan ini, kajian ke atas formula untuk membuat aksi lompatan telah dibuat terlebih dahulu. Pergerakan sprite perlu mengikut arah separa bulatan (curve) yang realistik agar sepadan dengan gaya lompatan yang dibuat oleh watak utama. Perhatikan sebahagian kod yang berikutnya untuk pergerakan lompatan ke sebelah kanan.

time=time+0.8verX=42*cos(80/61)verY=42*sin(80/61)

locX=newPos+int(verX*time) locY=100-(int(verY*time-0.5*9.8*time^2))

#w.f, "spritexy fruit ";locX;" ";locY

Formula ini menggunakan fungsi cos( ) dan sin( ) bagi membentuk lengkung berdasarkan kedudukan lokasi semasa sprite iaitu locX dan locY masing-masing adalah dua pembolehubah berangka yang dipasang pada arahan SPRITEXY. Walaupun formula ini agak sukar untuk difahami tetapi jangan bimbang, kerana kita tidak semestinya menjadi pakar trigonometri untuk menghasilkan aturcara ini. Apa yang paling penting ialah untuk mengaplikasikan kaedah ini pada tempat yang sesuai. Perhatikan pula sebahagian daripada kod untuk pergerakan lompatan sprite ke kiri berikutnya.

time=time+0.8verX=42*cos(80/61)verY=42*sin(80/61)

locX=newPos-int(verX*time) locY=100-(int(verY*time-0.5*9.8*time^2))

#w.f, "spritexy fruit ";locX;" ";locY

217

Page 218: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Cuba anda teliti setiap baris kedua-dua kod berkenaan. Apakah perbezaan antara kedua-duanya? Sudah pasti anda perasan satu perbezaan kecil yang mampu memberikan kelakuan yang berbeza, bukan. Kita ambil kod yang berbeza antara kedua-duanya iaitu:

Pergerakan ke kanan,

locX=newPos+int(verX*time)

Pergerakan ke kiri,

locX=newPos-int(verX*time)

Oleh kerana locX akan mewakili pergerakan sprite secara horizontal, maka arah posisi boleh diubah-ubah antara kiri dan kanan. Jika anda ingin bergerak ke kanan, sudah tentu perlu menambah (+) nilai dari kedudukan asal. Sebaliknya, jika ingin bergerak ke kiri, nilai yang sedia ada perlu disusutkan (-). Inilah yang akan berlaku dalam kod aturcara berkenaan.sekiranya pemain menukar arah lompatan watak utama.

Kedudukan lengkungan dikawal oleh pemasaan dalaman iaitu time=time+0.8 yang menokok setiap kali gelungan bingkai lukisan diaktifkan. Formula lengkungan berkenaan akan mengintegrasikan posisi X dan Y mengikut gerak pemasaan dalaman tadi. Anda boleh mengubahsuai formula berkenaan dan membentuk formula baru misalnya lengkuk yang lebih besar, lebih panjang dan lebih pantas. Terdapat juga kaedah lain untuk membuat lengkuk yang hampir sama. Adalah menjadi kebiasaan kaedah cuba dan jaya (trial and error) digunakan. Kadang-kala kita akan menjumpai formula yang lain secara tidak sengaja.

2. Kawalan Dengan Virtual Keys

Apakah sebenarnya yang dikenali sebagai penggunaan Virtual Keys dalam Just BASIC? Dalam permainan FruitTale, kita mengawal pergerakan lompatan watak utama dengan kekunci anak panah ke kiri dan ke kanan. Virtual Keys didefinisikan sebagai kekunci sebenar yang kita tekan pada papan kekunci. Ini bermakna sebagai contoh anda menekan huruf ‘A’ pada papan kekunci juga akan merujuk kepada huruf ‘a’. Ini bermakna, ia tidak akan mengambil kira apa jenis aksara yang diwakili kekunci berkenaan, sebaliknya merujuk kepada kekunci berkenaan sahaja.

Kembali kepada permainan FruitTale ini iaitu kawalan arah lompatan ke kiri diwakili oleh kekunci anak panah kiri dan kawalan arah lompatan ke kanan diwakili oleh kekunci anak panah kanan. Cuba anda perhatikan penanda cawangan [keyPressed] berikutnya ini yang diambil daripada aturcara permainan berkenaan.

218

Page 219: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

[keyPressed]

key$ = Inkey$keyValue = asc(right$(key$, 1))

SELECT CASE

CASE keyValue = _VK_LEFT jumpFlag=1

CASE keyValue = _VK_RIGHT jumpFlag=2 END SELECT

wait

Perhatikan bahawa kita juga menggunakan fungsi INKEY$. Penggunaan fungsi ini adalah untuk memerangkap kekunci yang ditekan oleh pemain kerana kekunci istimewa seperti Control, Shift, Insert dan sebagainya (ia akan mengaktifkan nilai khas seperti nilai 32 atau kurang apabila diperangkap oleh INKEY$). Di dalam penanda cawangan tersebut, penggunaan SELECT CASE untuk option kekunci yang akan ditekan misalnya jika seseorang pemain menekan kekunci anak panah kiri, ia akan mengaktifkan CASE keyValue=_VK_LEFT.

Antara lain-lain Virtual Keys yang boleh digunakan adalah seperti berikut.

F1 hingga F16 _VK_F1 hingga _VK_F160 hingga 9 pada papan kekunci _VK_0 hingga _VK_90 hingga 9 pada pad nombor _VK_NUMPAD0 hingga _VK_NUMPAD9A hingga Z _VK_A hingga _VK_ZAlt _VK_MENUShift _VK_SHIFTHome _VK_HOMEEnd _VK_ENDInsert _VK_INSERTDelete _VK_DELETENumLock _VK_NUMLOCKAnak panah Atas _VK_UPAnak panag Bawah _VK_DOWNAnak panah Kiri _VK_LEFTAnak panah Kanan _VK_RIGHTControl _VK_CONTROL

219

Page 220: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

ULASAN ATURCARA 2

Jenis Progam : Permainan Tembak MenembakNama Program : Alien BattlefieldJumlah Fail Bitmap : 23 fail bitmapJumlah Fail Audio : 7 fail wave dan 1 fail midiSaiz Keseluruhan : 1.95 megabytePengarang : Rozlano Muhamad Tobat

RINGKASAN

Permainan aksi ini adalah salah satu daripada kajian penggunaan tetikus (mouse) sebagai kawalan permainan. Anda memerlukan pergerakan kursor ke arah tertentu di kawasan permainan dan menekan butang kiri tetikus untuk menggerakkan kenderaan anda. Jika ingin menembak, halakan tetikus pada kenderaan musuh dengan tetikus dan tekan butang kanan tetikus anda. Kisah permainan ini bermula apabila anda sebagai Komander tentera Alien ditugaskan untuk mempertahankan planet anda dari serangan kereta kebal manusia. Kebolehan mobiliti yang tinggi pada kenderaan Alien membolehkan kawalan dalam mana mana arah. Walaupun begitu, kereta kebal musuh anda memerlukan anda menembak banyak kali sebelum ia dapat dimusnahkan.

220

Page 221: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Apabila anda berjaya mengalahkan semua kereta kebal yang datang dari arah kiri skrin, anda akan berdepan pula dengan sebuah kenderaan musuh berbentuk ketam yang paling sukar untuk dikalahkan. Ia adalah kenderaan rahsia tentera manusia dalam usaha untuk menakluki planet anda. Jadi, tugas anda amat sukar dan pastikan tenaga perisai anda tidak berada pada tahap yang kritikal.

Berlatarbelakng padang pasir dengan tema panel bewarna merah, permainan ini adalah salah satu contoh dalam membuat permainan berasaskan tembak menembak. Terdapat 4 butang kawalan iaitu Start Game, The Story, About Game dan Quit Game. Kesemua butang berkenaan menggunakan fail-fail bitmap untuk memberi keserasian dengan antaramuka permainan dan bar pada panel.

KAEDAH PENGATURCARAAN

Penggunaan Teorem Pythagoras

Tulang belakang kawalan permainan ini terletak pada kebolehannya untuk mengenalpasti kedudukan kursor tetikus. Kajian terhadap pergerakan tetikus dan lokasi yang hendak ditujui telah membawa kepada penggunaan teorem pythagoras. Sekiranya anda meneliti kod-kod aturcara dalam permainan ini, terdapat formula untuk mendapatkan kedudukan baru kursor tetikus.

Perhatikan formula yang berikut yang dipetik dari penanda cawangan [clickAlien].

countmove = int(sqr((secondX-firstX)^2 + (secondY-firstY)^2)/10)

Ini adalah formula menggerakkan kenderaan anda dari lokasi asal iaitu firstX dan firstY ke lokasi yang baru. Ianya adalah sebuah teorem phytagoras untuk mengira jarak yang diambil untuk bergerak dari lokasi asal ke lokasi baru dalam bentuk segitiga. Sebagai contoh, kita lihat illustrasi yang berikut bagaimana jarak antara lokasi asal ke lokasi baru dikira.

Lokasi asal (firstX, firstY)

Jarak ke lokasi barucountmove

Lokasi baru(secondX, secondY)

221

________________Tinggi = √ (secondY-firstY)2

_________________Lebar = √ (secondX-firstX)2

Page 222: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

ULASAN ATURCARA 3

Jenis Progam : Demonstrasi Perlumbaan F1Nama Program : F1 Just RacingJumlah Fail Bitmap : 9 fail bitmapJumlah Fail Audio : 3 fail wave dan 1 fail midiSaiz Keseluruhan : 1.23 megabytePengarang : Rozlano Muhamad Tobat

RINGKASAN

Sebuah demonstrasi ringkas perlumbaan kereta Formula One dengan Just BASIC. Litar perlumbaan yang mudah dengan 3 buah kereta lumba masing-masing dengan warna biru mewakili pasukan Renault, warna kuning mewakili pasukan William dan warna merah mewakili pasukan Ferrari. Ilham menghasilkan demo ringkas ini diperolehi setelah menonton aksi perlumbaan ini di litar perlumbaan Sepang. Secara umumnya, anda hanya perlu klik pada butang ‘Start’ untuk memulakan perlumbaan dan ketiga-tiga kereta lumba ini akan mula bergerak dengan pantas. Apa yang menjadi perbezaan antara kereta-kereta lumba ini ialah apabila berada pada simpang, masing-masing akan menukar arah pada kedudukan yang berbeza. Inilah yang akan membezakan jarak kereta antara satu sama lain. Ketiga-tiga kereta mempunyai kebarangkalian untuk memenangi perlumbaan yang sama.

222

Page 223: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Apabila selesai menamatkan 5 pusingan, maka satu tetingkap keputusan akan dipaparkan. Keputusan akan menunjukkan kedudukan masing-masing sama ada berada pada tempat Pertama, Kedua atau Ketiga. Selain itu, masa yang diambil untuk menamatkan perlumbaan juga akan dipaparkan masing-masing. Selanjutnya, jika anda ingin bermula semula, anda boleh teruskan dengan mengklik pada butang ‘Start’ semula.

KAEDAH PENGATURCARAAN

Penjanaan Nombor Rawak

Dalam demo ini, sifat rawak amat penting untuk mendapat nilai yang pelbagai. Biasanya penggunaan nombor rawak (random) banyak digunakan dalam permainan sama ada ianya dijana pada awal permainan mahupun semasa permainan berlangsung. Program ini banyak menggunakan fungsi nombor rawak yang dipanggil setiap kali kereta lumba melalui simpang. Perhatikan kaedah penggunaan nombor rawak yang diterapkan dalam bahagian ini.

AcornerUp = int(rnd(1)*100)+10 AcornerLeft = int(rnd(1)*100)+630 AcornerDown = int(rnd(1)*100)+370 AcornerRight = int(rnd(1)*100)+10

Perhatikan kod aturcara diatas yang mewakili kereta A iaitu kereta biru (Renault). Ini adalah kaedah penjanaan yang diimplementasikan dalam demo berkenaan semasa berada disetiap penjuru litar. Anda tentu sedia maklum bahawa litar berkenaan berbentuk segi empat tepat. Oleh itu, agak mudah untuk memberikan keempat-empat nilai rawak pada keempat-empat penjuru berkenaan. Ini bermakna, kita akan setkan terlebih dahulu setiap nombor yang diwakili oleh sudut-sudut berkenaan dalam pembolehubah. Apabila kereta berkenaan sampai pada bucu yang berkenaan misalnya yang diwakili pemolehubah AcornerLeft, maka nilai yang dipegang pembolehubah berkenaan akan digunakan. Setiap pusingan, nombor rawak yang lain akan dijanakan untuk lebih memberi banyak kebarangkalian dalam permainan ini.

Dengan fungsi rawak berkenaan, setiap kereta akan menjanakan nombor-nombor yang tersendiri dan dalam setiap pusingan, nombor rawak yang baru akan turut dijanakan. Ini adalah fungsi yang agak berguna dalam sesebuah permainan bilamana kita mahukan hasil yang pelbagai dan dinamik. Terdapat demonstrasi-demonstrasi lain yang lebih baik boleh dihasilkan oleh fungsi rawak dalam bahasa pengaturcaraan Just BASIC ini.

223

Page 224: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

ULASAN ATURCARA 4

Jenis Progam : Aplikasi Sokongan PengaturcaraNama Program : Buttonshop v2Jumlah Fail Bitmap : 118 fail bitmapJumlah Fail Text : 1 fail textSaiz Keseluruhan : 2.45 megabytePengarang : Rozlano Muhamad Tobat

RINGKASAN

Bersesuaian dengan nama yang diberikan padanya iaitu Buttonshop, aplikasi ini ditulis khas untuk membantu para penulis aturcara yang lain menggunakan kemudahan untuk membina butang kawalan denga pantas. Terdapat kira-kira 100 jenis butang dalam format bitmap yang sesuai digunakan dalam program mereka (nama Buttonshop diberikan kerana biasanya kedai butang menjual pelbagai jenis untuk dipilih, bukan!). Biasanya arahan yang digunakan untuk menghasilkan butang kawalan bitmap dalam aturcara Just BASIC ialah dengan arahan BMPBUTTON. Program ini akan lebih memudahkan anda membina sendiri butang kerana beberapa fungsi istimewa yang terdapat padanya akan membolehkan anda membuat penyuntingan. Antaranya termasuklah:

(a) Keupayaan mengubah saiz dengan penetapan tinggi (height) dan lebar (width) mengikut kemahuan anda.

(b) Menyimpan (save) butang yang telah disunting dalam format bitmap mengikut nama yang anda tetapkan sendiri.

224

Page 225: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

(c) Menghasilkan teks dengan penetapan Text Setting untuk digunakan didalam butang berkenaan. Anda boleh tetapkan teks, font, warna, saiz dan italic.

(d) Kebolehan tarik dan letak (drag & drop) memudahkan anda megubahsuai kedudukan teks dalam butang berkenaan mengikut kemahuan anda.

(e) Grid dalaman, penanda dengan pembaris dipenjuru kiri dan atas penyunting yang boleh membantu anda meletakkan teks pada tempat yang sepadan.

(f) Sistem tetingkap bantuan yang ringkas dan mudah difahami supaya anda boleh membuat rujukan penggunaan butang kawalan dan cara penggunaannya.

(g) Keupayaan untuk mengimport fail bitmap dari luar untuk digunakan dalam program berkenaan atau dijadikan sebagai butang kawalan.

Buttonshop versi 2 ini telah mendapat banyak cadangan bagi memperlengkapkannya lagi daripada pengguna-pengguna bahasa pengaturcaraan Just BASIC yang lain. Oleh yang demikian, ia telah menjadi salah satu daripada alatan yang berguna bagi pembangunan aturcara untuk kemudahan hasilan butang kawalan grafik dengan pantas dan ringkas. Dengan pilihan butang bitmap yang berbagai-bagai warna, corak dan efek menjadikan satu kemudahan yang baik. Disebabkan ianya telah didatangkan bersama kod sumber, maka anda boleh mempelajari beberapa teknik yang digunakan untuk mencapai beberapa fungsi. Setiap satu fungsi telah diberi catatan yang lengkap untuk memudahkan anda membuat rujukan.

KAEDAH PENGATURCARAAN

Disini anda boleh mempelajari beberapa kaedah asas dalam aturcara ini termasuklah:

(a) LISTBOX yang mengambil maklumat daripada senarai fail-fail yang terdapat dalam sesebuah direktori. Kaedah kreatif diperlukan untuk menyenaraikan fail yang terdapat didalam sesebuah direktori terlebih dahulu sebelum maklumat tersebut digunakan untuk senarai dalam listbox.

(b) Bagaimana membina sebuah fail bitmap untuk digunakan sebagai SPRITE yang lengkap dengan MASK. Kaedah ini menghasilkan teks yang boleh digerakkan oleh pengguna untuk membina perkataan di dalam butang kawalan yang dibina.

(c) Bagaimana membina GRID dalaman yang memiliki saiz tertentu supaya posisi SPRITE dapat dikekalkan dalam barisan dan lajur yang tetap. Ini amat penting terutama sekali jika ingin membina aturcara tertentu dan permainan berbentuk puzzle.

(d) Mendapatkan imej dengan GETBMP dan menyimpan imej berkenaan kepada bentuk fail dengan SAVEBMP. Ini sangat penting bagi aturcara-aturcara yang berteraskan grafik.

225

Page 226: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

ULASAN ATURCARA 5

Jenis Progam : Aplikasi Bergrafik RingkasNama Program : Stickmaker v1.01Jumlah Fail Bitmap : 59 fail bitmapSaiz Keseluruhan : 1.54 megabytePengarang : Rozlano Muhamad Tobat

RINGKASAN

Pembinaan program bergrafik ringkas ini sebenarnya diilhamkan untuk membina sebuah aturcara khas untuk menghasilkan grafik permainan. Walau bagaimana pun ianya telah diubahsuai dalam bentuk yang lebih fleksibel agar pengguna boleh menghasilkan sendiri karya bergrafik dengan alatan-alatan yang disediakan. Stickmaker, dengan nama yang diberikan padanya pada dasarnya adalah untuk membina ‘stick’ atau lukisan lidi misalnya untuk melukis orang lidi (stickman) yang ringkas.

Ianya bukanlah sebuah perisian yang terbaik untuk menghasilkan grafik namun sudah memadai untuk kita menguji kemahiran menghasilkan aturcara bagi menghasilkan program grafik. Dalam program ini, terdapat beberapa fungsi yang digunakan misalnya mengimport jenis-jenis lidi (stick) yang ada dengan butang kawalan. Selain itu, orientasi dan saiz objek-objek berkenaan boleh juga diubahsuai mengikut keperluan imej grafik yang ingin kita hasilkan. Fungsi lain yang disokong oleh program ini ialah mengimport imej luar sebagai latar belakang lukisan, pemaparan grid, menyingkirkan objek yang tidak dikehendaki, mencetak pada mesin pencetak dan juga menyimpan imej yang

226

Page 227: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

dihasilkan sebagai fail bitmap. Selain itu, terdapat juga objek-objek tambahan pada sebelah kanan panel kawalan yang boleh dimasukkan ke dalam kawasan lukisan. Ini akan menambahkan lagi varieti objek yang digunakan untuk menghasilkan imej-imej yang dikehendaki dalam kawasan lukisan berkenaan.

KAEDAH PENGATURCARAAN

Kaedah yang digunakan dalam aturcara ini lebih kepada penggunaan objek-objek yang digunakan iaitu sprite yang boleh digerakkan dengan tetikus dan diletakkan pada mana-mana lokasi dalam kawasan lukisan. Seperti mana penggunaan teknik tarik dan letak (drag and drop) dalam aturcara Buttonshop, penggunaan keadah ini diperluaskan dalam Stickmaker. Kali ini cuba kita kaji bagaimana ia dilaksanakan dan teknik-teknik yang digunakan untuk melakukannya.

Terdapat 3 penanda cawangan utama yang akan menjalankan aktiviti tarik dan letak dengan tetikus ini iaitu:

(a) [grab] menjalankan aktiviti memegang sesuatu objek dengan tetikus.(b) [move] menjalankan aktiviti menggerakkan sesuatu objek dengan tetikus.(c) [release] melepaskan objek yang sedang dipegang.

Sekarang cuba kita kaji penanda cawangan pertama iaitu [grab] yang akan menjalankan aktiviti memegang sesuatu objek. Perhatikan aturcara yang berikut:

[grab]#w.g, "spritexy buttpusher "; MouseX; " "; MouseY#w.g, "spritecollides buttpusher grabstick$" if grabstick$ <> "" then grabstick$=word$(grabstick$,1) #w.g, "when leftButtonMove [move]" end ifwait

Walaupun ia kelihatan agak mengelirukan bagi mereka yang baru memahami konsep pengaturcaraan, namun sebenarnya ianya adalah mengikut logik yang mudah. Sebelum ini terdapat sprite kecil dinamakan buttpusher dihasilkan dan diberikan ketampakan halimunan (SPRITEVISIBLE OFF). Maknanya sprite buttpusher tidak kelihatan pada skrin walaupun ianya ada disesuatu tempat. Dengan arahan SPRITEXY mengikut kedudukan MouseX dan MouseY, maka kedudukan sprite berkenaan akan sentiasa mengikut kedudukan terkini kursor tetikus anda.

Berikutnya, penggunaan arahan SPRITECOLLIDES pula akan mengesan sebarang perlanggaran sprite buttpusher dengan lain-lain sprite yang diwakili oleh pembolehubah rentetan grabstick$. Sekiranya pengguna menggerakkan tetikus dan meletakkan kursor

227

Page 228: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

pada mana-mana objek iaitu lain-lain sprite, maka perlanggaran akan dikesan dan mengaktifkan pernyataan IF…THEN di dalam penanda cawangan berkenaan. Sekiranya pengguna menekan butang kiri tetikus dan menggerakkan tetikus, maka penanda cawangan [move] akan diaktifkan pula. Cuba perhatikan pula apa yang berlaku dalam penanda cawangan [move] berkenaan.

[move]#w.g, "spritexy "; grabstick$; " "; MouseX; " "; MouseY#w.g, "drawsprites"#w.g, "when leftButtonUp [release]"wait

Dalam kod diatas, perhatikan bahawa pembolehubah rentetan grabstick$ yang mewakili mana-mana objek sperite yang berlanggar dengan sprite buttpusher tadi akan mengikut kedudukan tetikus. Ini kerana ianya dikemaskinikan dengan arahan SPRITEXY bersama MouseX dan MouseY dan setiap pergerakan akan terus dipaparkan dengan arahan DRAWSPRITES.

Sebaliknya, apabila pengguna melepaskan butang kiri tetikus tadi pula, maka penanda cawangan [release] akan diaktifkan. Sekarang cuba kita perhatikan pula apa yang berlaku dalam penanda cawangan ini.

[release]#w.g, "when leftButtonMove"#w.g, "when leftButtonUp"wait

Penanda cawangan ini digunakan untuk melepaskan semula arahan-arahan yang telah dibuat sebelum ini. Perhatikan bahawa leftButtonMove dan leftButtonUp digunakan untuk mengembalikan semula atau untuk memberikan arahan kontra penggunaan tetikus pada asalnya. Ini adalah penting untuk mengelakkan sebarang pertentangan ralat apabila pengguna menggunakan semula tetikus untuk membuat lain-lain aktiviti pada program.

Agak mudah bukan! Ini merupakan salah satu helah yang digunakan dalam kebanyakan aturcara Just BASIC untuk mendapatkan fungsi antaramuka pengguna yang baik. Ini amat penting supaya pengguna boleh menggunakan kemudahan tarik dan letak dengan menggunakan tetikus. Sekiranya anda berminat untuk mendalami penggunaan teknik ini, mungkin idea yang paling sesuai ialah cuba menghasilkan permainan berbentuk puzzle nanti. Sudah pastinya program anda akan kelihatan profesional dan mampu menarik perhatian pemain untuk terus bermain dengan mudahnya. Harus diingat bahawa tujuan aturcara dibina ialah untuk memudahkan pengguna mengawal dan menggunakannya.

228

Page 229: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

SET FAIL BITMAP PERCUMA

Kategori ketiga, terdapat dua set fail-fail bitmap yang didatangkan secara percuma untuk digunakan dalam mana-mana aturcara permainan. Fail-fail bitmap ini telah dihasilkan sendiri oleh penulis dalam usaha untuk membantu pengaturcara yang baru untuk terus menggunakan sumber grafik yang ada untuk projek mereka. Dua set fail bitmap berkenaan terdiri daripada:

(a) Koleksi Latar Belakang yang mengandungi 10 fail yang boleh digunakan untuk latarbelakang (background) aturcara permainan interaktif.

(b) Koleksi Sprite yang mengandungi 33 fail grafik yang boleh digunakan sebagai sprite dalam permainan. Kesemua fail berkenaan telah diletakkan mask agar pengguna boleh terus menggunakannya dalam aturcara mereka.

KESIMPULAN

Permainan-permainan dan lain-lain program dalam cakera padat kepilan ini adalah beberapa contoh ringkas bagaimana mudahnya membina sebuah aturcara yang lengkap dengan bahasa pengaturcaraan Just BASIC. Tidak ada yang mustahil dan penggunaan teknik atau kaedah tidak hanya terhad pada satu-satu kegunaan sahaja. Ianya boleh diperluaskan lagi dengan penghasilan kod-kod atau formula-formula yang baru untuk melakukan sesuatu proses. Sebagai pengaturcara, tidak kira secara sambilan atau sepenuh masa, kita tidak boleh menghadkan pengetahuan kepada sesuatu kaedah sahaja kerana akan adanya idea baru yang mungkin lebih efektif.

Selalulah membuat latihan dengan mencuba pelbagai cara menggunakan fungsi-fungsi yang terdapat dalam bahasa pengaturcaraan ini. Proses pembelajaran adalah dinamik dan sentiasa adanya perkara baru ditemui walaupun seseorang itu telah berpengalaman bertahun-tahun sebagai pengaturcara. Tidak kira anda melakukan aturcara sebagai hobi atau untuk komersil, pastinya tidak mustahil untuk menghasilkan sebuah perisian yang boleh anda banggakan. Selalulah merujuk kepada sumber-sumber yang banyak di dalam fail bantuan, tutorial, artikel, forum internet, ensiklopedia elektronik dan sebagainya. Anda akan sentiasa menemui perkara-perkara baru dan mana tahu ‘masterpiece’ anda yang terbaik akan dibina dengan bahasa pengaturcaraan ini.

229

Page 230: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

230

Page 231: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

KANDUNGAN CAKERA PADAT KEPILAN

Ilustrasi kandungan dan organisasi fail-fail dalam cakera padat kepilan yang dipaparkan secara visual sebagai panduan pengguna.

Cakera Padat Kepilan

Koleksi LatarBelakang

Fail-fail Bitmap

Koleksi Sprite

Alien BattlefieldContoh Aturcara

Buttonshop v2

F1Just Racing

FruitTale

Stickmaker v1.01

Just BASIC Installer

231

Page 232: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

RINGKASAN

Senarai ringkas arahan dan fungsi yang kerap digunakan dalam pengaturcaraan. Guna rujukan ini sebagai sumber semakan pantas semasa membuat aturcara. Untuk mendapat maklumat lengkap, anda boleh merujuk kepada fail bantuan (Helpfile) yang terdapat pada penyunting Just BASIC.

Operasi Matematik

ABS( n )

SQR( n )

EXP( n )

LOG( n )

INT( n )

RND( nombor )

RANDOMIZE n

Trigonometri

ACS( n )

ASN( n )

ATN( n )

COS( n )

SIN( n )

TAN( n )

232

Page 233: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Pembolehubah

VAL( pembolehubah rentetan )

STR$( pembolehubah berangka )

USING( tamplet rentetan, expresi berangka )

Tarikh dan Masa

Date$( )

Date$( ) Math

Time$( )

Time$( ) Math

Operasi Fail

OPEN

NAME

KILL

EOF

Drives$

DefaultDir$

MKDIR

RMDIR

233

Page 234: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Manipulasi Aksara

CHR$( n )

INSTR( pembolehubah rentetan1, pembolehubah rentetan2, permulaan )

LEN( pembolehubah rentetan )

LEFT$( pembolehubah rentetan, nombor )

RIGHT$( pembolehubah rentetan, nombor )

MID$( pembolehubah rentetan, indeks, [ nombor ] )

LOWER$( pembolehubah rentetan )

UPPER$( pembolehubah rentetan )

TRIM$( pembolehubah rentetan )

SPACE$( n )

Arahan Untuk Tetingkap Teks

print #pemegang, "!cls"

print #pemegang, "!contents varname$"atauprint #pemegang, "!contents #pemegang"

print #pemegang, "!contents? rentetan$"

print #pemegang, "!copy"

print #pemegang, "!font fontName pointsize"

print #pemegang, "!line n rentetan$"

print #pemegang, "!lines countVar"

print #pemegang, "!modified? answer$"

print #pemegang, "!origin? columnVar rowVar"

234

Page 235: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

print #pemegang, "!origin column row"

print #pemegang, "!paste"

print #pemegang, "!selectall"

print #pemegang, "!selection? selected$"

print #pemegang, "!setfocus"

print #pemegang, "!trapclose penandaCawangan"

Arahan Untuk Grafik

print #pemegang, "backcolor WARNA"

print #pemegang, "backcolor red(0-255) green(0-255) blue(0-255)"

print #pemegang, "box x y"

print #pemegang, "boxfilled x y"

print #pemegang, "circle r"

print #pemegang, "circlefilled r"

print #pemegang, "cls"

print #pemegang, "color WARNA"

print #pemegang, "color red(0-255) green(0-255) blue(0-255)"

print #pemegang, "delsegment n"

print #pemegang, "delsegment segmentName"

print #pemegang, "discard"

print #pemegang, "down"

print #pemegang, "drawbmp bmpname x y"

print #pemegang, "ellipse w h"

235

Page 236: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

print #pemegang, "ellipsefilled w h"

print #pemegang, "fill WARNA"atauprint #pemegang, "fill red(0-255) green(0-255) blue(0-255)"

print #pemegang, "flush"

print #pemegang, "flush segmentName"

print #pemegang, "font facename pointSize"

print #pemegang, "getbmp bmpName x y width height"

print #pemegang, "go D"

print #pemegang, "goto X Y"

print #pemegang, "home"

print #pemegang "horizscrollbar on/off [min max]"

print #pemegang, "line X1 Y1 X2 Y2"

print #pemegang, "locate x y width height"

print #pemegang, "north"

print #pemegang, "pie w h angle1 angle2"

print #pemegang, "piefilled w h angle1 angle2"

print #pemegang, "place X Y"

print #pemegang, "posxy xVar yVar"

print #pemegang, "print [saiz]"

print #pemegang, "print"

print #pemegang, "print vga"

print #pemegang, "print svga"

print #pemegang, "print xga"

236

Page 237: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

print #pemegang, "redraw"atauprint #pemegang, "redraw "; idNumatauprint #pemegang, "redraw "; segmentName

print #pemegang, "rule rulename"

print #pemegang, "segment variableName"

print #pemegang, "set x y"

print #pemegang, "setfocus"

print #pemegang, "size S"

print #pemegang, "\text"

print #pemegang, "|text"

print #pemegang, "trapclose penandaCawangan"

print #pemegang, "turn A"

print #pemegang, "up"

print #pemegang "vertscrollbar on/off [min max]"

print #pemegang, "when event eventHandler"

Arahan Untuk SPRITE

ADDSPRITE

BACKGROUND

CYCLESPRITE

DRAWSPRITES

REMOVESPRITE

SPRITECOLLIDES

237

Page 238: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

SPRITEIMAGE

SPRITEMOVEXY

SPRITEORIENT

SPRITESCALE

SPRITEVISIBLE

SPRITEXY

SPRITEXY?

Arahan Kawalan GUI

BMPBUTTON

BUTTON

CHECKBOX

COMBOBOX

GRAPHICBOX

GROUPBOX

LISTBOX

MENU

RADIOBUTTON

STATICTEXT

TEXTBOX

TEXTEDITOR

238

Page 239: Hobi Pengaturcaraan Dengan Just BASIC · Jika ditanya mengapa seseorang itu sanggup mendaki gunung ganang yang tinggi sedangkan dia boleh berehat di rumah dan mengelak risiko yang

Hobi Pengaturcaraan Dengan Just BASIC

Warna Pada GUI

BackgroundColor$

ForegrounfColor$

TextboxColor$

ComboboxColor$

ListboxColor$

TexteditorColor$

Arahan Audio

BEEP

PLAYWAVE “namafail [,mode]”

PLAYMIDI namafail, panjang

STOPMIDI

MIDIPOS( )

239