BSAVE dan BLOAD

BY IN QBasic Comments Off on BSAVE dan BLOAD

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…




Comments are closed.