Untuk menjalankan game ini, saya mendistribusikan dalam bentuk source code, jadi dibutuhkan program compiler QuickBasic versi 4.5, atau file QBasic.exe dari MSDOS. Sedangkan program Turbo Basic atau Power Basic buatan Borland, tidak compatible dengan perintah-perintah di dalam program game ini.
Cara mainnya sebenarnya gampang (baca:simpel) kok. Hanya perlu kontrol dari tombol arrow key untuk menggerakkan Rosetta, trus tombol ENTER untuk memilih pilihan. Memang banyak ngomongnya, karena itu saya bilang game ini agak monoton, dan maaf kalau anda mengharapkan pukul2an, sikut2an sampai jambak2an, anda akan kecewa karena tidak akan anda temui disini. Trus mengenai ada gambar jin kura2, ya pengen gambar aja kayak gitu, boleh kan? :)
Gambar spritenya memang jelek, karena buatnya gampang2an saja. Itu pun saya buat dengan program sprite editor. Sebenarnya ada rencana untuk buat yang lebih bagus pakai VB atau Flash, tapi masih belum sempat.
Mengenai Format gambar menggunakan BSAVEnya QBasic. Kalau diperhatikan, isi filenya adalah sekumpulan bilangan integer alias bilangan bulat.
Cara mendeteksi tubrukan antar sprite saya pakai cara pendeteksi yang paling gampang saja. Jadi begini, untuk tiap scene, saya beri nomor, lalu saya beri pengecekan untuk tiap langkah Rosetta, misalnya untuk langkah atas, ini adalah subrutin untuk menjalankan Rosetta apabila tombol panah atas ditekan.
SELECT CASE c
CASE 1
IF mu = 0 THEN PUT (x.old, y.old), spru1 ELSE PUT (x.old, y.old), spru2
CASE 2
IF ml = 0 THEN PUT (x.old, y.old), sprl1 ELSE PUT (x.old, y.old), sprl2
CASE 3
IF mr = 0 THEN PUT (x.old, y.old), sprr1 ELSE PUT (x.old, y.old), sprr2
CASE 4
IF md = 0 THEN PUT (x.old, y.old), sprd1 ELSE PUT (x.old, y.old), sprd2
END SELECT
Pertama2 kita cek, posisi sprite Rosetta. sprite Rosetta digambarkan dengan dua sprite yang bergantian setiap dijalankan sehingga kelihatan dinamis walaupun tetap aja kaku. Nah perintah diatas akan mengecek posisi sprite Rosetta, apakah menghadap atas, kiri, kanan atau bawah. Variabel mu, ml, mr dan md digunakan untuk mengecek jenis sprite yang mana yang aktif pada saat itu, baru kemudian dilakukan penghapusan terhadap sprite. Asal tahu saja, kalau salah menentukan sprite yang dihapus, animasinya bisa berantakan… Trus kalau dihapus, kita akan gambar lagi spritenya di lokasi yang baru, tapi sebelumnya kita perlu cek lagi posisi Rosetta ada di scene keberapa? Kita cek dengan perintah SELECT CASE
SELECT CASE cek
CASE 0
y.bawah = y.atas
CASE 1
IF x.pos <= 170 OR x.pos >= 230 THEN y.bawah = y.atas
IF (x.pos >= 160 AND y.pos >= 50) AND (x.pos <= 180 AND y.pos <= 70) THEN Camiria: GOSUB Initsprite:
GOTO main
CASE 2, 3, 4, 14
y.bawah = y.atas
CASE 5
IF x.pos <= 170 OR x.pos >= 230 THEN y.bawah = y.atas
CASE 6, 8, 15, 17, 18, 19, 22, 23, 24
y.atas = y.atas + 20
y.bawah = y.atas
CASE 7, 9, 28, 29
IF x.pos <= 170 OR x.pos >= 230 THEN y.atas = y.atas + 20: y.bawah = y.atas
CASE 10
y.bawah = y.atas
IF (x.pos >= 160 AND y.pos >= 50) AND (x.pos <= 180 AND y.pos <= 70) THEN HouseNol: GOSUB Initsprite:
GOTO main
CASE 11, 20, 25, 33, 34
IF x.pos <= 170 OR x.pos >= 230 THEN y.atas = y.atas + 20: y.bawah = y.atas
CASE 13
IF (x.pos >= 160 AND y.pos >= 50) AND (x.pos <= 180 AND y.pos <= 70) THEN Tyverra: GOSUB Initsprite:
GOTO main
y.bawah = y.atas
CASE 21
IF (x.pos >= 160 AND y.pos >= 50) AND (x.pos <= 180 AND y.pos <= 70) THEN HouseOne: GOSUB Initsprite:
GOTO main
IF x.pos <= 170 OR x.pos >= 230 THEN y.bawah = y.atas
CASE 31
y.bawah = y.atas
IF (x.pos >= 160 AND y.pos >= 50) AND (x.pos <= 180 AND y.pos <= 70) THEN Winkle: GOSUB Initsprite:
GOTO main
CASE 37
y.bawah = y.atas
IF (x.pos >= 160 AND y.pos >= 50) AND (x.pos <= 180 AND y.pos <= 70) THEN HouseTwo: GOSUB Initsprite:
GOTO main
END SELECT
Perintah diatas akan mengecek posisi batas (ingat yang kita perhatikan disini adalah penekanan tombol atas). Variabel y.atas akan berisi suatu nilai yang menunjukkan batas atas dari gerakan Rosetta. Kalau kita perhatikan, dalam beberapa scene, variabel ini ditambah 20. Artinya di dalam scene tersebut, Rosetta lebih dibatasi geraknya. Pada posisi tertentu, saya menggunakan operator AND untuk membuat kotak bayangan, dimana apabila posisi Rosetta di dalam kotak tersebut, maka program akan memanggil sub yang lain, dalam hal ini kita misalkan Rosetta masuk ke dalam kota tertentu. Gampang dan sederhana khan? Jika muncul pertanyaan… kenapa pada semua CASE, variabel y.bawah diset sama dengan y.atas??? Nah, ini salah satu trik supaya sprite Rosetta tidak hancur pada saat dia menabrak batas pohon atau karang. Pada akhir subrutin, sebelum return ke program utama, nilai variabel y.bawah akan dikembalikan ke nilai aslinya.
IF mu = 0 THEN
IF y.pos <= y.atas THEN
IF cek = 1 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 0: GOSUB sc0
IF cek = 5 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 2: GOSUB sc2
IF cek = 7 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 4: GOSUB sc4
IF cek = 9 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 10: GOSUB sc10
IF cek = 12 THEN cek = 13: GOSUB sc13
IF cek = 11 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 12: GOSUB sc12
IF cek = 16 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 6: GOSUB sc6
IF cek = 20 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 11: GOSUB sc11
IF cek = 21 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 16: GOSUB sc16
IF cek = 25 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 20: GOSUB sc11
IF cek = 26 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 15: GOSUB sc15
IF cek = 27 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 26: GOSUB sc16
IF cek = 28 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 27: GOSUB sc16
IF cek = 30 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 31: GOSUB sc31
IF cek = 29 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 30: GOSUB sc16
IF cek = 32 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 28: GOSUB sc28
IF cek = 36 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 37: GOSUB sc10
IF cek = 35 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 36: GOSUB sc35
IF cek = 34 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 35: GOSUB sc35
IF cek = 33 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 34: GOSUB sc34
y.pos = y.bawah
ELSE
y.pos = y.pos - y.ofset
END IF
PUT (x.pos, y.pos), spru2
x.old = x.pos: y.old = y.pos
mu = 1
ELSE
IF y.pos <= y.atas THEN
IF cek = 1 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 0: GOSUB sc0
IF cek = 5 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 2: GOSUB sc2
IF cek = 7 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 4: GOSUB sc4
IF cek = 9 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 10: GOSUB sc10
IF cek = 12 THEN cek = 13: GOSUB sc13
IF cek = 11 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 12: GOSUB sc12
IF cek = 16 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 6: GOSUB sc6
IF cek = 20 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 11: GOSUB sc11
IF cek = 21 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 16: GOSUB sc16
IF cek = 25 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 20: GOSUB sc11
IF cek = 26 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 15: GOSUB sc15
IF cek = 27 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 26: GOSUB sc16
IF cek = 28 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 27: GOSUB sc16
IF cek = 30 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 31: GOSUB sc31
IF cek = 29 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 30: GOSUB sc16
IF cek = 32 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 28: GOSUB sc28
IF cek = 36 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 37: GOSUB sc10
IF cek = 35 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 36: GOSUB sc35
IF cek = 34 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 35: GOSUB sc35
IF cek = 33 THEN IF x.pos > 170 AND x.pos < 230 THEN cek = 34: GOSUB sc34
y.pos = y.bawah
ELSE
y.pos = y.pos - y.ofset
END IF
PUT (x.pos, y.pos), spru1
x.old = x.pos: y.old = y.pos
mu = 0
END IF
y.atas = batas1
x.kiri = batas2
x.kanan = batas3
y.bawah = batas4
RETURN
Waw, panjaaang banget… tapi belum seberapa dibanding sisanya. Kalau sudah paham sama sub rutin tombol atas, yang lainnya pasti paham dengan sendirinya. Bagian yang ini akan mengecek posisi sprite Rosetta. Apabila sudah kurang dari y.atas, maka saatnya Rosetta pindah scene dari satu scene ke scene lainnya. Variabel cek digunakan untuk mengecek scene. Variabel y.pos diset sama dengan y.bawah, dan karena tadi variabel y.bawah = y.atas, maka sprite Rosetta akan tetap diam di tempatnya. Lalu kita sampai pada perintah ELSE, yang artinya jika y.pos>y.atas. Nah disinilah, sprite Rosetta digambar lagi. Tentunya mesti hati2, jangan sampai kita memberikan sprite yang salah, soalnya gerakan Rosetta bisa lucu. Dan sebelum kembali ke looping utama, variabel2 batas dikembalikan seperti semula.
Untuk mendapatkan uang gampang kok. Kita harus sabar mondar-mandir di dua kota untuk kerja ngantar jerami buat kuda. Terus bisa juga gambling di danau keberuntungan.
Semua barang harus didapatkan karena ada kegunaannya sendiri2.Yg jelas, cerita berakhir kalau semua barang sudah didapatkan.
Jika ada keinginan untuk memodifikasi game ini (jangan lupa untuk mengontak saya ya?), yang terpenting adalah menambahkan unsur arcade. Misalnya Rosetta akan mempunyai LifeMeter dan harus melawan musuh2nya sebelum melawan musuh terakhirnya. Kalau di dalam perjalanannya LifeMeternya habis, maka GameOver… Bisa juga barang2nya ditambah dengan Minuman Tonic untuk menambah Life, misalnya. Kalau mau, boleh dibesarkan dunianya, biar tidak monoton. Gambar spritenya dapat juga dimodifikasi agar lebih baik lagi.
Pada versi sekuelnya yang belum sempat saya selesaikan, saya berhasil membuat scene-nya full layar, melihat inventorynya dengan teknik page dan savescreen, pendeteksian tubrukannya saya bikin lebih akurat dengan metode pembandingan warna, sehingga gerakan sprite tidak terbatas dan kaku, dan juga menghemat pemakaian memori, dan juga font yang digunakan bukan berupa sprite lagi. Disamping itu, saya dapat menganimasikan sprite lainnya pada saat Rosetta berjalan, ini yang membuat game menjadi tidak kaku.
Yah… semuanya kembali lagi pada keterbatasan program QuickBasic setelah pada jaman sekarang muncul program2 lain yang lebih canggih seperti VisualBasic dan Flash. Tapi bagi saya, kita tidak boleh meremehkan program2 lama. Apa yang saya dapatkan pada saat saya mempelajari teknik2 animasi, sekalipun dari program lama, saya yakin akan dapat pula saya terapkan pada program2 sekarang. So, mari kita terus belajar dan belajarrr… Setuju???
[ add comment ] ( 46 views ) | permalink |




( 0 / 0 )Quartz Composer salah satu kegunaannya adalah digunakan untuk membuat screen saver dalam environment Mac. Kali ini kita akan mencoba membuat screen saver yang terdiri dari lingkaran besar dan kecil yang muncul dan hilang secara acak. Outputnya adalah sebagai berikut:

Sebagai langkah pertama, kita akan drag Gradient patch ke editor dan kita bisa ubah2 komposisi warna Gradient sesuai selera. Langkah berikutnya, kita masukkan Particle System Patch ke editor. Patch ini adalah patch yang langsung dapat generate object yang muncul dan hilang secara acak. Kita perlu mengubah blending menjadi over.
Selanjutnya, kita bisa masukkan Lenticular Halo Patch ke editor, dan hubungkan imagenya ke image yang ada di Particular System.
Sampai pada langkah ini, composer kita sudah jadi. Kita dapat menambahkan variasi dengan menggunakan patch Sun beams, ataupun patch Image with Source untuk menggunakan image kita sendiri.
[ add comment ] ( 109 views ) | permalink |




( 0 / 0 )Sampai disini kita baru menggunakan satu buah scene yang diambil dengan BLOAD, tapi dengan single scene tersebut, Marle bebas bergerak kemana saja dan akan berhenti kalau membentur pohon. Berikut programnya…
’Marle with Collission Detection using POINT
‘Addition: Check Border Screen Collission
‘ Loading Map using BLOAD from BSAVE File
CLEAR
DEFINT A-Z
CONST Path$ = “”
OPEN “tree.shp” FOR INPUT AS #1
DIM SHARED tree(222): FOR i = 0 TO 222: INPUT #1, tree(i): NEXT: CLOSE #1
‘Kumpulan Gambar Marle bergerak ke kanan
‘15 x 32
OPEN Path$ + “Marler.shp” FOR INPUT AS #1
DIM SHARED marler(266): FOR i = 0 TO 266: INPUT #1, marler(i): NEXT: CLOSE #1
‘17 x 32
OPEN Path$ + “Marler1.shp” FOR INPUT AS #1
DIM SHARED marler1(299): FOR i = 0 TO 299: INPUT #1, marler1(i): NEXT: CLOSE #1
‘18 x 30
OPEN Path$ + “Marler2.shp” FOR INPUT AS #1
DIM SHARED marler2(296): FOR i = 0 TO 296: INPUT #1, marler2(i): NEXT: CLOSE #1
‘18 x 32
OPEN Path$ + “Marler3.shp” FOR INPUT AS #1
DIM SHARED marler3(315): FOR i = 0 TO 315: INPUT #1, marler3(i): NEXT: CLOSE #1
‘17 x 32
OPEN Path$ + “Marler4.shp” FOR INPUT AS #1
DIM SHARED marler4(299): FOR i = 0 TO 299: INPUT #1, marler4(i): NEXT: CLOSE #1
‘18 x 31
OPEN Path$ + “Marler5.shp” FOR INPUT AS #1
DIM SHARED marler5(306): FOR i = 0 TO 306: INPUT #1, marler5(i): NEXT: CLOSE #1
‘19 x 32
OPEN Path$ + “Marler6.shp” FOR INPUT AS #1
DIM SHARED marler6(332): FOR i = 0 TO 332: INPUT #1, marler6(i): NEXT: CLOSE #1
‘Kumpulan Gambar Marle bergerak ke kiri
‘15 x 32
OPEN Path$ + “Marlel.shp” FOR INPUT AS #1
DIM SHARED marlel(266): FOR i = 0 TO 266: INPUT #1, marlel(i): NEXT: CLOSE #1
‘17 x 32
OPEN Path$ + “Marlel1.shp” FOR INPUT AS #1
DIM SHARED marlel1(299): FOR i = 0 TO 299: INPUT #1, marlel1(i): NEXT: CLOSE #1
‘18 x 30
OPEN Path$ + “Marlel2.shp” FOR INPUT AS #1
DIM SHARED marlel2(296): FOR i = 0 TO 296: INPUT #1, marlel2(i): NEXT: CLOSE #1
‘18 x 32
OPEN Path$ + “Marlel3.shp” FOR INPUT AS #1
DIM SHARED marlel3(315): FOR i = 0 TO 315: INPUT #1, marlel3(i): NEXT: CLOSE #1
‘17 x 32
OPEN Path$ + “Marlel4.shp” FOR INPUT AS #1
DIM SHARED marlel4(299): FOR i = 0 TO 299: INPUT #1, marlel4(i): NEXT: CLOSE #1
‘18 x 31
OPEN Path$ + “Marlel5.shp” FOR INPUT AS #1
DIM SHARED marlel5(306): FOR i = 0 TO 306: INPUT #1, marlel5(i): NEXT: CLOSE #1
‘19 x 32
OPEN Path$ + “Marlel6.shp” FOR INPUT AS #1
DIM SHARED marlel6(332): FOR i = 0 TO 332: INPUT #1, marlel6(i): NEXT: CLOSE #1
‘Kumpulan Gambar Marle bergerak ke bawah
‘13 x 33
OPEN Path$ + “Marled.shp” FOR INPUT AS #1
DIM SHARED marled(240): FOR i = 0 TO 240: INPUT #1, marled(i): NEXT: CLOSE #1
‘14 x 33
OPEN Path$ + “Marled1.shp” FOR INPUT AS #1
DIM SHARED marled1(257): FOR i = 0 TO 257: INPUT #1, marled1(i): NEXT: CLOSE #1
‘15 x 35
OPEN Path$ + “Marled2.shp” FOR INPUT AS #1
DIM SHARED marled2(290): FOR i = 0 TO 290: INPUT #1, marled2(i): NEXT: CLOSE #1
‘15 x 35
OPEN Path$ + “Marled3.shp” FOR INPUT AS #1
DIM SHARED marled3(290): FOR i = 0 TO 290: INPUT #1, marled3(i): NEXT: CLOSE #1
‘14 x 35
OPEN Path$ + “Marled4.shp” FOR INPUT AS #1
DIM SHARED marled4(257): FOR i = 0 TO 257: INPUT #1, marled4(i): NEXT: CLOSE #1
‘16 x 35
OPEN Path$ + “Marled5.shp” FOR INPUT AS #1
DIM SHARED marled5(308): FOR i = 0 TO 308: INPUT #1, marled5(i): NEXT: CLOSE #1
‘15 x 35
OPEN Path$ + “Marled6.shp” FOR INPUT AS #1
DIM SHARED marled6(290): FOR i = 0 TO 290: INPUT #1, marled6(i): NEXT: CLOSE #1
‘Kumpulan Gambar Marle bergerak ke atas
‘12 x 32
OPEN Path$ + “Marleu.shp” FOR INPUT AS #1
DIM SHARED marleu(216): FOR i = 0 TO 216: INPUT #1, marleu(i): NEXT: CLOSE #1
‘13 x 32
OPEN Path$ + “Marleu1.shp” FOR INPUT AS #1
DIM SHARED marleu1(233): FOR i = 0 TO 233: INPUT #1, marleu1(i): NEXT: CLOSE #1
‘16 x 33
OPEN Path$ + “Marleu2.shp” FOR INPUT AS #1
DIM SHARED marleu2(291): FOR i = 0 TO 291: INPUT #1, marleu2(i): NEXT: CLOSE #1
‘14 x 33
OPEN Path$ + “Marleu3.shp” FOR INPUT AS #1
DIM SHARED marleu3(257): FOR i = 0 TO 257: INPUT #1, marleu3(i): NEXT: CLOSE #1
‘13 x 32
OPEN Path$ + “Marleu4.shp” FOR INPUT AS #1
DIM SHARED marleu4(233): FOR i = 0 TO 233: INPUT #1, marleu4(i): NEXT: CLOSE #1
‘16 x 33
OPEN Path$ + “Marleu5.shp” FOR INPUT AS #1
DIM SHARED marleu5(291): FOR i = 0 TO 291: INPUT #1, marleu5(i): NEXT: CLOSE #1
‘14 x 33
OPEN Path$ + “Marleu6.shp” FOR INPUT AS #1
DIM SHARED marleu6(257): FOR i = 0 TO 257: INPUT #1, marleu6(i): NEXT: CLOSE #1
PRINT “Free array space : “; FRE(-1)
t$ = INPUT$(1)
SCREEN 13
CLS
‘Animasi berjalan
x.pos = 10: y.pos = 30
x.old = x.pos: y.old = y.pos
x.ofset = 4: y.ofset = 4
‘variabel posisi digunakan untuk mengecek posisi terakhir sprite
posisi = 1
‘variabel waktu tunda untuk animasi Marle berjalan
delay = 1700
bataskanan = 295
bataskiri = 10
batasbawah = 160
batasatas = 10
cek.selisih = 5
center.selisih = 5
GOSUB Scene1
PUT (x.pos, y.pos), marler
main:
x.center = x.pos + 10
y.center = y.pos + 15
a$ = INKEY$
IF a$ = “” THEN GOTO main
IF LEN(a$) <> 2 THEN GOSUB not.arrow
keyb = ASC(RIGHT$(a$, 1))
IF keyb = 72 THEN GOSUB atas
IF keyb = 75 THEN GOSUB kiri
IF keyb = 77 THEN GOSUB kanan
IF keyb = 80 THEN GOSUB bawah
‘clean the keyboard buffer before go back to main loop
DEF SEG = &H40
POKE &H1A, PEEK(&H1C)
GOTO main
kanan:
‘hapus spritenya
‘cek posisi terakhir sprite menghadap kemana???
oldx.pos = x.pos: oldy.pos = y.pos
SELECT CASE posisi
CASE 1 ‘kanan
PUT (oldx.pos, oldy.pos), marler
CASE 2 ‘kiri
PUT (oldx.pos, oldy.pos), marlel
CASE 3 ‘bawah
PUT (oldx.pos, oldy.pos), marled
CASE 4 ‘atas
PUT (oldx.pos, oldy.pos), marleu
END SELECT
IF POINT((marler1(0) / 8) + x.pos + cek.selisih, y.pos) <= 0 AND POINT((marler1(0) / 8) + x.pos + cek.selisih, y.center) <= 0 AND POINT((marler1(0) / 8) + x.pos + cek.selisih, marler1(1) + y.pos) <= 0 THEN
IF x.pos <= bataskanan THEN
x.pos = x.pos + x.ofset
ELSE
x.pos = bataskiri
END IF
ELSE
PUT (x.pos, y.pos), marler
posisi = 1
RETURN
END IF
'letakkan di posisi baru
PUT (x.pos, y.pos), marler1
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
'hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marler1
IF POINT((marler2(0) / 8) + x.pos + cek.selisih, y.pos + center.selisih) <= 0 AND POINT((marler2(0) / 8) + x.pos + cek.selisih, y.center) <= 0 AND POINT((marler2(0) / 8) + x.pos + cek.selisih, marler2(1) + y.pos - center.selisih) <= 0 THEN
IF x.pos <= bataskanan THEN
x.pos = x.pos + x.ofset
ELSE
x.pos = bataskiri
END IF
ELSE
PUT (x.pos, y.pos), marler
posisi = 1
RETURN
END IF
'letakkan di posisi baru
PUT (x.pos, y.pos), marler2
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
'hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marler2
IF POINT((marler3(0) / 8) + x.pos + cek.selisih, y.pos + center.selisih) <= 0 AND POINT((marler3(0) / 8) + x.pos + cek.selisih, y.center) <= 0 AND POINT((marler3(0) / 8) + x.pos + cek.selisih, marler3(1) + y.pos - center.selisih) <= 0 THEN
IF x.pos <= bataskanan THEN
x.pos = x.pos + x.ofset
ELSE
x.pos = bataskiri
END IF
ELSE
PUT (x.pos, y.pos), marler
posisi = 1
RETURN
END IF
'letakkan di posisi baru
PUT (x.pos, y.pos), marler3
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
'hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marler3
IF POINT((marler4(0) / 8) + x.pos + cek.selisih, y.pos + center.selisih) <= 0 AND POINT((marler4(0) / 8) + x.pos + cek.selisih, y.center) <= 0 AND POINT((marler4(0) / 8) + x.pos + cek.selisih, marler4(1) + y.pos - center.selisih) <= 0 THEN
IF x.pos <= bataskanan THEN
x.pos = x.pos + x.ofset
ELSE
x.pos = bataskiri
END IF
ELSE
PUT (x.pos, y.pos), marler
posisi = 1
RETURN
END IF
'letakkan di posisi baru
PUT (x.pos, y.pos), marler4
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
'hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marler4
IF POINT((marler5(0) / 8) + x.pos + cek.selisih, y.pos + center.selisih) <= 0 AND POINT((marler5(0) / 8) + x.pos + cek.selisih, y.center) <= 0 AND POINT((marler5(0) / 8) + x.pos + cek.selisih, marler5(1) + y.pos - center.selisih) <= 0 THEN
IF x.pos <= bataskanan THEN
x.pos = x.pos + x.ofset
ELSE
x.pos = bataskiri
END IF
ELSE
PUT (x.pos, y.pos), marler
posisi = 1
RETURN
END IF
'letakkan di posisi baru
PUT (x.pos, y.pos), marler5
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
'hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marler5
IF POINT((marler6(0) / 8) + x.pos + cek.selisih, y.pos + center.selisih) <= 0 AND POINT((marler6(0) / 8) + x.pos + cek.selisih, y.center) <= 0 AND POINT((marler6(0) / 8) + x.pos + cek.selisih, marler6(1) + y.pos - center.selisih) <= 0 THEN
IF x.pos <= bataskanan THEN
x.pos = x.pos + x.ofset
ELSE
x.pos = bataskiri
END IF
ELSE
PUT (x.pos, y.pos), marler
posisi = 1
RETURN
END IF
'letakkan di posisi baru
PUT (x.pos, y.pos), marler6
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
'hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marler6
IF POINT((marler(0) / 8) + x.pos + cek.selisih, y.pos + center.selisih) <= 0 AND POINT((marler(0) / 8) + x.pos + cek.selisih, y.center) <= 0 AND POINT((marler(0) / 8) + x.pos + cek.selisih, marler(1) + y.pos - center.selisih) <= 0 THEN
IF x.pos <= bataskanan THEN
x.pos = x.pos + x.ofset
ELSE
x.pos = bataskiri
END IF
ELSE
PUT (x.pos, y.pos), marler
posisi = 1
RETURN
END IF
'letakkan di posisi baru
PUT (x.pos, y.pos), marler
'jangan lupa untuk mengeset variabel posisi
posisi = 1
RETURN
kiri:
'hapus spritenya
'cek posisi terakhir sprite menghadap kemana???
oldx.pos = x.pos: oldy.pos = y.pos
SELECT CASE posisi
CASE 1 'kanan
PUT (oldx.pos, oldy.pos), marler
CASE 2 'kiri
PUT (oldx.pos, oldy.pos), marlel
CASE 3 'bawah
PUT (oldx.pos, oldy.pos), marled
CASE 4 'atas
PUT (oldx.pos, oldy.pos), marleu
END SELECT
IF POINT(x.pos - cek.selisih, y.pos) <= 0 AND POINT(x.pos - cek.selisih, y.center) <= 0 AND POINT(x.pos - cek.selisih, marlel1(1) + y.pos) <= 0 THEN
IF x.pos >= bataskiri THEN
x.pos = x.pos - x.ofset
ELSE
x.pos = bataskanan
END IF
ELSE
PUT (x.pos, y.pos), marlel
posisi = 2
RETURN
END IF
‘letakkan di posisi baru
PUT (x.pos, y.pos), marlel1
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marlel1
IF POINT(x.pos - cek.selisih, y.pos) <= 0 AND POINT(x.pos - cek.selisih, y.center) <= 0 AND POINT(x.pos - cek.selisih, marlel2(1) + y.pos) <= 0 THEN
IF x.pos >= bataskiri THEN
x.pos = x.pos - x.ofset
ELSE
x.pos = bataskanan
END IF
ELSE
PUT (x.pos, y.pos), marlel
posisi = 2
RETURN
END IF
‘letakkan di posisi baru
PUT (x.pos, y.pos), marlel2
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marlel2
IF POINT(x.pos - cek.selisih, y.pos) <= 0 AND POINT(x.pos - cek.selisih, y.center) <= 0 AND POINT(x.pos - cek.selisih, marlel3(1) + y.pos) <= 0 THEN
IF x.pos >= bataskiri THEN
x.pos = x.pos - x.ofset
ELSE
x.pos = bataskanan
END IF
ELSE
PUT (x.pos, y.pos), marlel
posisi = 2
RETURN
END IF
‘letakkan di posisi baru
PUT (x.pos, y.pos), marlel3
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marlel3
IF POINT(x.pos - cek.selisih, y.pos) <= 0 AND POINT(x.pos - cek.selisih, y.center) <= 0 AND POINT(x.pos - cek.selisih, marlel4(1) + y.pos) <= 0 THEN
IF x.pos >= bataskiri THEN
x.pos = x.pos - x.ofset
ELSE
x.pos = bataskanan
END IF
ELSE
PUT (x.pos, y.pos), marlel
posisi = 2
RETURN
END IF
‘letakkan di posisi baru
PUT (x.pos, y.pos), marlel4
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marlel4
IF POINT(x.pos - cek.selisih, y.pos) <= 0 AND POINT(x.pos - cek.selisih, y.center) <= 0 AND POINT(x.pos - cek.selisih, marlel5(1) + y.pos) <= 0 THEN
IF x.pos >= bataskiri THEN
x.pos = x.pos - x.ofset
ELSE
x.pos = bataskanan
END IF
ELSE
PUT (x.pos, y.pos), marlel
posisi = 2
RETURN
END IF
‘letakkan di posisi baru
PUT (x.pos, y.pos), marlel5
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marlel5
IF POINT(x.pos - cek.selisih, y.pos) <= 0 AND POINT(x.pos - cek.selisih, y.center) <= 0 AND POINT(x.pos - cek.selisih, marlel6(1) + y.pos) <= 0 THEN
IF x.pos >= bataskiri THEN
x.pos = x.pos - x.ofset
ELSE
x.pos = bataskanan
END IF
ELSE
PUT (x.pos, y.pos), marlel
posisi = 2
RETURN
END IF
‘letakkan di posisi baru
PUT (x.pos, y.pos), marlel6
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marlel6
IF POINT(x.pos - cek.selisih, y.pos) <= 0 AND POINT(x.pos - cek.selisih, y.center) <= 0 AND POINT(x.pos - cek.selisih, marlel(1) + y.pos) <= 0 THEN
IF x.pos >= bataskiri THEN
x.pos = x.pos - x.ofset
ELSE
x.pos = bataskanan
END IF
ELSE
PUT (x.pos, y.pos), marlel
posisi = 2
RETURN
END IF
‘letakkan di posisi baru
PUT (x.pos, y.pos), marlel
‘jangan lupa untuk mengeset variabel posisi
posisi = 2
RETURN
bawah:
‘hapus spritenya
‘cek posisi terakhir sprite menghadap kemana???
oldx.pos = x.pos: oldy.pos = y.pos
SELECT CASE posisi
CASE 1 ‘kanan
PUT (oldx.pos, oldy.pos), marler
CASE 2 ‘kiri
PUT (oldx.pos, oldy.pos), marlel
CASE 3 ‘bawah
PUT (oldx.pos, oldy.pos), marled
CASE 4 ‘atas
PUT (oldx.pos, oldy.pos), marleu
END SELECT
IF POINT(x.pos, marled1(1) + y.pos + cek.selisih) <= 0 AND POINT(x.center, marled1(1) + y.pos + cek.selisih) <= 0 AND POINT((marled1(0) / 8) + x.pos, marled1(1) + y.pos + cek.selisih) <= 0 THEN
IF y.pos <= batasbawah THEN
y.pos = y.pos + y.ofset
ELSE
y.pos = batasatas
END IF
ELSE
PUT (x.pos, y.pos), marled
posisi = 3
RETURN
END IF
'letakkan di posisi baru
PUT (x.pos, y.pos), marled1
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
'hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marled1
IF POINT(x.pos, marled2(1) + y.pos + cek.selisih) <= 0 AND POINT(x.center, marled2(1) + y.pos + cek.selisih) <= 0 AND POINT((marled2(0) / 8) + x.pos, marled2(1) + y.pos + cek.selisih) <= 0 THEN
IF y.pos <= batasbawah THEN
y.pos = y.pos + y.ofset
ELSE
y.pos = batasatas
END IF
ELSE
PUT (x.pos, y.pos), marled
posisi = 3
RETURN
END IF
'letakkan di posisi baru
PUT (x.pos, y.pos), marled2
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
'hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marled2
IF POINT(x.pos, marled3(1) + y.pos + cek.selisih) <= 0 AND POINT(x.center, marled3(1) + y.pos + cek.selisih) <= 0 AND POINT((marled3(0) / 8) + x.pos, marled3(1) + y.pos + cek.selisih) <= 0 THEN
IF y.pos <= batasbawah THEN
y.pos = y.pos + y.ofset
ELSE
y.pos = batasatas
END IF
ELSE
PUT (x.pos, y.pos), marled
posisi = 3
RETURN
END IF
'letakkan di posisi baru
PUT (x.pos, y.pos), marled3
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
'hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marled3
IF POINT(x.pos, marled4(1) + y.pos + cek.selisih) <= 0 AND POINT(x.center, marled4(1) + y.pos + cek.selisih) <= 0 AND POINT((marled4(0) / 8) + x.pos, marled4(1) + y.pos + cek.selisih) <= 0 THEN
IF y.pos <= batasbawah THEN
y.pos = y.pos + y.ofset
ELSE
y.pos = batasatas
END IF
ELSE
PUT (x.pos, y.pos), marled
posisi = 3
RETURN
END IF
'letakkan di posisi baru
PUT (x.pos, y.pos), marled4
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
'hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marled4
IF POINT(x.pos, marled5(1) + y.pos + cek.selisih) <= 0 AND POINT(x.center, marled5(1) + y.pos + cek.selisih) <= 0 AND POINT((marled5(0) / 8) + x.pos, marled5(1) + y.pos + cek.selisih) <= 0 THEN
IF y.pos <= batasbawah THEN
y.pos = y.pos + y.ofset
ELSE
y.pos = batasatas
END IF
ELSE
PUT (x.pos, y.pos), marled
posisi = 3
RETURN
END IF
'letakkan di posisi baru
PUT (x.pos, y.pos), marled5
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
'hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marled5
IF POINT(x.pos, marled6(1) + y.pos + cek.selisih) <= 0 AND POINT(x.center, marled6(1) + y.pos + cek.selisih) <= 0 AND POINT((marled6(0) / 8) + x.pos, marled6(1) + y.pos + cek.selisih) <= 0 THEN
IF y.pos <= batasbawah THEN
y.pos = y.pos + y.ofset
ELSE
y.pos = batasatas
END IF
ELSE
PUT (x.pos, y.pos), marled
posisi = 3
RETURN
END IF
'letakkan di posisi baru
PUT (x.pos, y.pos), marled6
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
'hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marled6
IF POINT(x.pos, marled(1) + y.pos + cek.selisih) <= 0 AND POINT(x.center, marled(1) + y.pos + cek.selisih) <= 0 AND POINT((marled(0) / 8) + x.pos, marled(1) + y.pos + cek.selisih) <= 0 THEN
IF y.pos <= batasbawah THEN
y.pos = y.pos + y.ofset
ELSE
y.pos = batasatas
END IF
ELSE
PUT (x.pos, y.pos), marled
posisi = 3
RETURN
END IF
'letakkan di posisi baru
PUT (x.pos, y.pos), marled
'jangan lupa untuk mengeset variabel posisi
posisi = 3
RETURN
atas:
'hapus spritenya
'cek posisi terakhir sprite menghadap kemana???
oldx.pos = x.pos: oldy.pos = y.pos
SELECT CASE posisi
CASE 1 'kanan
PUT (oldx.pos, oldy.pos), marler
CASE 2 'kiri
PUT (oldx.pos, oldy.pos), marlel
CASE 3 'bawah
PUT (oldx.pos, oldy.pos), marled
CASE 4 'atas
PUT (oldx.pos, oldy.pos), marleu
END SELECT
IF POINT(x.pos, y.pos - cek.selisih) <= 0 AND POINT(x.center, y.pos - cek.selisih) <= 0 AND POINT((marleu1(0) / 8) + x.pos, y.pos - cek.selisih) <= 0 THEN
IF y.pos >= batasatas THEN
y.pos = y.pos - y.ofset
ELSE
y.pos = batasbawah
END IF
ELSE
PUT (x.pos, y.pos), marleu
posisi = 4
RETURN
END IF
‘letakkan di posisi baru
PUT (x.pos, y.pos), marleu1
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marleu1
IF POINT(x.pos, y.pos - cek.selisih) <= 0 AND POINT(x.center, y.pos - cek.selisih) <= 0 AND POINT((marleu2(0) / 8) + x.pos, y.pos - cek.selisih) <= 0 THEN
IF y.pos >= batasatas THEN
y.pos = y.pos - y.ofset
ELSE
y.pos = batasbawah
END IF
ELSE
PUT (x.pos, y.pos), marleu
posisi = 4
RETURN
END IF
‘letakkan di posisi baru
PUT (x.pos, y.pos), marleu2
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marleu2
IF POINT(x.pos, y.pos - cek.selisih) <= 0 AND POINT(x.center, y.pos - cek.selisih) <= 0 AND POINT((marleu3(0) / 8) + x.pos, y.pos - cek.selisih) <= 0 THEN
IF y.pos >= batasatas THEN
y.pos = y.pos - y.ofset
ELSE
y.pos = batasbawah
END IF
ELSE
PUT (x.pos, y.pos), marleu
posisi = 4
RETURN
END IF
‘letakkan di posisi baru
PUT (x.pos, y.pos), marleu3
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marleu3
IF POINT(x.pos, y.pos - cek.selisih) <= 0 AND POINT(x.center, y.pos - cek.selisih) <= 0 AND POINT((marleu4(0) / 8) + x.pos, y.pos - cek.selisih) <= 0 THEN
IF y.pos >= batasatas THEN
y.pos = y.pos - y.ofset
ELSE
y.pos = batasbawah
END IF
ELSE
PUT (x.pos, y.pos), marleu
posisi = 4
RETURN
END IF
‘letakkan di posisi baru
PUT (x.pos, y.pos), marleu4
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marleu4
IF POINT(x.pos, y.pos - cek.selisih) <= 0 AND POINT(x.center, y.pos - cek.selisih) <= 0 AND POINT((marleu5(0) / 8) + x.pos, y.pos - cek.selisih) <= 0 THEN
IF y.pos >= batasatas THEN
y.pos = y.pos - y.ofset
ELSE
y.pos = batasbawah
END IF
ELSE
PUT (x.pos, y.pos), marleu
posisi = 4
RETURN
END IF
‘letakkan di posisi baru
PUT (x.pos, y.pos), marleu5
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marleu5
IF POINT(x.pos, y.pos - cek.selisih) <= 0 AND POINT(x.center, y.pos - cek.selisih) <= 0 AND POINT((marleu6(0) / 8) + x.pos, y.pos - cek.selisih) <= 0 THEN
IF y.pos >= batasatas THEN
y.pos = y.pos - y.ofset
ELSE
y.pos = batasbawah
END IF
ELSE
PUT (x.pos, y.pos), marleu
posisi = 4
RETURN
END IF
‘letakkan di posisi baru
PUT (x.pos, y.pos), marleu6
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marleu6
IF POINT(x.pos, y.pos - cek.selisih) <= 0 AND POINT(x.center, y.pos - cek.selisih) <= 0 AND POINT((marleu(0) / 8) + x.pos, y.pos - cek.selisih) <= 0 THEN
IF y.pos >= batasatas THEN
y.pos = y.pos - y.ofset
ELSE
y.pos = batasbawah
END IF
ELSE
PUT (x.pos, y.pos), marleu
posisi = 4
RETURN
END IF
‘letakkan di posisi baru
PUT (x.pos, y.pos), marleu
‘jangan lupa untuk mengeset variabel posisi
posisi = 4
RETURN
Scene1:
DEF SEG = &HA000
BLOAD “Screen1.Map”
DEF SEG
RETURN
not.arrow:
‘Jika ditekan tombol q maka program akan berhenti
IF a$ = “q” THEN
WIDTH 80
SCREEN 0
COLOR 7, 0
CLS
END
END IF
RETURN
Yang memegang peranan penting selain gambar map, adalah cerita dari game itu sendiri. Unsur cerita ini terkadang suka diabaikan sehingga terkesan kaku dan karakter yang ada di game itu juga kurang mempunyai “jiwa”. Ternyata membuat game juga melibatkan perasaan yah… Seperti dalam game saya Quest of Rosetta, mungkin gampang ditebak endingnya yah…
[ add comment ] ( 55 views ) | permalink |




( 0 / 0 )Terminology
1.An antenna is a transducer designed to transmit or receive electromagnetic waves. In other words, antennas convert electromagnetic waves into electrical currents and vice versa.
2.Bluetooth is a specification for the use of low-power radio communications to wirelessly link phones, computers and other network devices over short distances. Bluetooth is a wireless protocol for exchanging data over short distances from fixed and mobile devices, creating personal area networks (PANs).
3.A mobile phone (also known as a wireless phone, cell phone, or cellular telephone[1]) is a long-range, electronic device used for mobile voice or data communication over a network of specialized base stations known as cell sites
4.Dynamic Host Configuration Protocol (DHCP) is a protocol used by networked devices (clients) to obtain the information necessary for operation in an Internet Protocol network
5.An Internet Protocol (IP) address is a numerical identification (logical address) that is assigned to devices participating in a computer network utilizing the Internet Protocol for communication between its nodes.[
6.An Internet service provider (ISP, also called Internet access provider or IAP) is a company that offers their customers access to the Internet
7.Media Access Control address, a hardware address that uniquely identifies each node of a network
8.A modem modulates outgoing digital signals from a computer or other digital device to analog signals for a conventional copper twisted pair telephone line and demodulates the incoming analog signal and converts it to a digital signal for the digital device. Modem (from modulator-demodulator) is a device that modulates an analog carrier signal to encode digital information, and also demodulates such a carrier signal to decode the transmitted information.
9.Spyware is computer software that is installed surreptitiously on a personal computer to intercept or take partial control over the user's interaction with the computer, without the user's informed consent.
10.A device that forwards data packets along networks
11.A service set identifier, or SSID, is a name used to identify the particular 802.11 wireless LANs to which a user wants to attach service set identifier, a 32-character unique identifier attached to the header of packets sent over a WLAN that acts as a password when a mobile device tries to connect to the BSS.
12.Web conferencing is used to conduct live meetings or presentations via the Internet.
13.WiMAX, meaning Worldwide Interoperability for Microwave Access, is a telecommunications technology that provides wireless transmission of data using a variety of transmission modes, from point-to-point links to portable internet access
14.WiFi = The name of a popular wireless networking technology that uses radio waves to provide wireless high-speed Internet and network connections.
15.Wi-Fi Protected Access (WPA and WPA2) is a certification program administered by the Wi-Fi Alliance to indicate compliance with the security protocol created by the Wi-Fi Alliance to secure wireless computer networks. This protocol was created in response to several serious weaknesses researchers had found in the previous system, Wired Equivalent Privacy (WEP).
16.network = A group of two or more computer systems linked together. There are many types of computer networks, including:
local-area networks (LANs) : The computers are geographically close together (that is, in the same building).
wide-area networks (WANs) : The computers are farther apart and are connected by telephone lines or radio waves.
campus-area networks (CANs): The computers are within a limited geographic area, such as a campus or military base.
metropolitan-area networks MANs): A data network designed for a town or city.
home-area networks (HANs): A network contained within a user's home that connects a person's digital device
17.Transport Layer Security (TLS) Protocol and its predecessor, Secure Sockets Layer (SSL), are cryptographic protocols that provide security and data integrity for communications over TCP/IP networks such as the Internet.
[ add comment ] ( 50 views ) | permalink |




( 0 / 0 )Penggambaran map dalam games memegang peranan penting dan disinilah unsur desain art masuk. soalnya kalo gambarnya saja kaku, kita jadi malas untuk main gamenya. Apalagi kalo kita mau bikin game yang multi scene. Untuk pindah scene-nya sendiri, ada beberapa efek2 yang bisa dipelajari, salah satunya adalah efek pixel-by-pixel scrolling seperti dalam game Zelda. Untuk saat ini kita mencoba untuk menggambar secara manual di screen, trus kita BSAVE, sehingga akan disimpan ke dalam format BSAVE.
CLEAR
DEFINT A-Z
OPEN “tree.shp” FOR INPUT AS #1
DIM SHARED tree(222): FOR i = 0 TO 222: INPUT #1, tree(i): NEXT: CLOSE #1
SCREEN 13
LINE (0, 0)-(319, 199), 0, BF
FOR i = 3 TO 13
PUT (0 + i * 18, 143), tree
PUT (0 + i * 18, 162), tree
PUT (0 + i * 18, 10), tree
NEXT
FOR i = 0 TO 4
PUT (200 + i * 18, 67), tree
PUT (200 + i * 18, 86), tree
NEXT
FOR i = 0 TO 3
PUT (164 + i * 18, 29), tree
PUT (164 + i * 18, 48), tree
NEXT
PUT (290, 86), tree
PUT (290, 105), tree
PUT (290, 124), tree
PUT (0, 105), tree
PUT (0, 124), tree
PUT (0, 86), tree
PUT (18, 86), tree
PUT (36, 86), tree
PUT (54, 86), tree
PUT (72, 86), tree
PUT (90, 86), tree
PUT (108, 86), tree
PUT (126, 86), tree
DEF SEG=&HA000
BSAVE “SCREEN1.MAP”,0,64000
Perintahnya sebenarnya simple saja… Kita harus tetap dalam mode SCREEN 13, kemudian Segmen Memory kita set menunjuk ke segmen &HA000, yaitu alamat segmen untuk grafik 13 heksa, lalu kita panggil perintah BSAVE, untuk nama filenya terserah kita, demikian juga eksteksinya dan besar bytenya adalah 64000 untuk seluruh screen, soalnya menyimpan 320×200 pixel = 64000…
trus kalau sudah disave, cara loadnya sebagai berikut
’Load BSAVE file
CLEAR
DEFINT A-Z
SCREEN 13
DEF SEG = &HA000
BLOAD “Screen1.Map”
a$ = INPUT$(1)
jadi dengan BSAVE dan BLOAD, masalah map untuk game sudah teratasi. Kita bisa bikin map yang banyak untuk dunia game yang luas. Hanya saja yang jadi pertanyaan, apakah tidak memboroskan memory kalo kita panggil perintah BLOAD terus-menerus? Seharusnya tidak, karena perintah ini langsung memuat gambar ke memory dan kalau ada gambar baru, gambar yang lama seharusnya ditimpa…
[ add comment ] ( 76 views ) | permalink |




( 0 / 0 )
Calendar



