1
1
Fork 0
mirror of https://github.com/QB64Official/qb64.git synced 2024-07-08 06:45:16 +00:00
qb64/programs/samples/qb45com/action/arcdemo/arcdemo.bas

449 lines
17 KiB
QBasic
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

CHDIR ".\programs\samples\qb45com\action\arcdemo"
rem No Tittle
screen 12
print "It`s great demo of my VIRTUAL SCREEN engene"
print "Press Q/A/O/P/M to move your soldier "
print "This program written by Tsiplacov Sergey"
print "For best work, you need at least 486DX processor"
print "and FirstBasic Compiler."
print
print "maple@arstel.ru Sergey, Russia"
rus:
a$=inkey$
if a$<>"" then goto beg
goto rus
beg:
SCREEN 7
SCREEN , , 3, 2
RESTORE mdat
FOR f = 1 TO 77
READ a$
OPEN a$ + ".sps" FOR INPUT AS #2
INPUT #2, r, ah, bh
CLOSE #2
OPEN a$ + ".spr" FOR INPUT AS #2
DIM dd(ah, bh)
FOR x = 1 TO ah: FOR y = 1 TO bh: INPUT #2, dd(x, y): PSET (x, y), dd(x, y): NEXT y: NEXT x
CLOSE #2
IF f = 1 THEN DIM g1(r): GET (1, 1)-(ah, bh), g1
IF f = 2 THEN DIM g2(r): GET (1, 1)-(ah, bh), g2
IF f = 3 THEN DIM g3(r): GET (1, 1)-(ah, bh), g3
IF f = 4 THEN DIM wc(r): GET (1, 1)-(ah, bh), wc
IF f = 5 THEN DIM h1l(r): GET (1, 1)-(ah, bh), h1l
IF f = 6 THEN DIM h2l(r): GET (1, 1)-(ah, bh), h2l
IF f = 7 THEN DIM h1r(r): GET (1, 1)-(ah, bh), h1r
IF f = 8 THEN DIM h2r(r): GET (1, 1)-(ah, bh), h2r
IF f = 9 THEN DIM w1(r): GET (1, 1)-(ah, bh), w1
IF f = 10 THEN DIM w2(r): GET (1, 1)-(ah, bh), w2
IF f = 11 THEN DIM h1lm(r): GET (1, 1)-(ah, bh), h1lm
IF f = 12 THEN DIM h2lm(r): GET (1, 1)-(ah, bh), h2lm
IF f = 13 THEN DIM h1rm(r): GET (1, 1)-(ah, bh), h1rm
IF f = 14 THEN DIM h2rm(r): GET (1, 1)-(ah, bh), h2rm
IF f = 15 THEN DIM m1(r): GET (1, 1)-(ah, bh), m1
IF f = 16 THEN DIM m2(r): GET (1, 1)-(ah, bh), m2
IF f = 17 THEN DIM t1r(r): GET (1, 1)-(ah, bh), t1r
IF f = 18 THEN DIM t1l(r): GET (1, 1)-(ah, bh), t1l
IF f = 19 THEN DIM t1rm(r): GET (1, 1)-(ah, bh), t1rm
IF f = 20 THEN DIM t1lm(r): GET (1, 1)-(ah, bh), t1lm
IF f = 21 THEN DIM mr1r(r): GET (1, 1)-(ah, bh), mr1r
IF f = 22 THEN DIM mr2r(r): GET (1, 1)-(ah, bh), mr2r
IF f = 23 THEN DIM mr1l(r): GET (1, 1)-(ah, bh), mr1l
IF f = 24 THEN DIM mr2l(r): GET (1, 1)-(ah, bh), mr2l
IF f = 25 THEN DIM mr1rm(r): GET (1, 1)-(ah, bh), mr1rm
IF f = 26 THEN DIM mr2rm(r): GET (1, 1)-(ah, bh), mr2rm
IF f = 27 THEN DIM mr1lm(r): GET (1, 1)-(ah, bh), mr1lm
IF f = 28 THEN DIM mr2lm(r): GET (1, 1)-(ah, bh), mr2lm
IF f = 29 THEN DIM ff(r): GET (1, 1)-(ah, bh), ff
IF f = 30 THEN DIM ffm(r): GET (1, 1)-(ah, bh), ffm
IF f = 31 THEN DIM lkl(r): GET (1, 1)-(ah, bh), lkl
IF f = 32 THEN DIM lkr(r): GET (1, 1)-(ah, bh), lkr
IF f = 33 THEN DIM lklm(r): GET (1, 1)-(ah, bh), lklm
IF f = 34 THEN DIM lkrm(r): GET (1, 1)-(ah, bh), lkrm
IF f = 35 THEN DIM g4(r): GET (1, 1)-(ah, bh), g4
IF f = 36 THEN DIM g5(r): GET (1, 1)-(ah, bh), g5
IF f = 37 THEN DIM g6(r): GET (1, 1)-(ah, bh), g6
IF f = 38 THEN DIM g7(r): GET (1, 1)-(ah, bh), g7
IF f = 39 THEN DIM g8(r): GET (1, 1)-(ah, bh), g8
IF f = 40 THEN DIM g9(r): GET (1, 1)-(ah, bh), g9
IF f = 41 THEN DIM g10(r): GET (1, 1)-(ah, bh), g10
IF f = 42 THEN DIM g11(r): GET (1, 1)-(ah, bh), g11
IF f = 43 THEN DIM g12(r): GET (1, 1)-(ah, bh), g12
IF f = 44 THEN DIM tr1r(r): GET (1, 1)-(ah, bh), tr1r
IF f = 45 THEN DIM tr1l(r): GET (1, 1)-(ah, bh), tr1l
IF f = 46 THEN DIM tr1rm(r): GET (1, 1)-(ah, bh), tr1rm
IF f = 47 THEN DIM tr1lm(r): GET (1, 1)-(ah, bh), tr1lm
IF f = 48 THEN DIM bl1(r): GET (1, 1)-(ah, bh), bl1
IF f = 49 THEN DIM bl2(r): GET (1, 1)-(ah, bh), bl2
IF f = 50 THEN DIM bl3(r): GET (1, 1)-(ah, bh), bl3
IF f = 51 THEN DIM bl1m(r): GET (1, 1)-(ah, bh), bl1m
IF f = 52 THEN DIM bl2m(r): GET (1, 1)-(ah, bh), bl2m
IF f = 53 THEN DIM bl3m(r): GET (1, 1)-(ah, bh), bl3m
IF f = 54 THEN DIM dm1(r): GET (1, 1)-(ah, bh), dm1
IF f = 55 THEN DIM dm2(r): GET (1, 1)-(ah, bh), dm2
IF f = 56 THEN DIM dm1m(r): GET (1, 1)-(ah, bh), dm1m
IF f = 57 THEN DIM dm2m(r): GET (1, 1)-(ah, bh), dm2m
IF f = 58 THEN DIM dm3(r): GET (1, 1)-(ah, bh), dm3
IF f = 59 THEN DIM dm3m(r): GET (1, 1)-(ah, bh), dm3m
IF f = 60 THEN DIM mdl(r): GET (1, 1)-(ah, bh), mdl
IF f = 61 THEN DIM mdr(r): GET (1, 1)-(ah, bh), mdr
IF f = 62 THEN DIM mdlm(r): GET (1, 1)-(ah, bh), mdlm
IF f = 63 THEN DIM mdrm(r): GET (1, 1)-(ah, bh), mdrm
IF f = 64 THEN DIM am1(r): GET (1, 1)-(ah, bh), am1
IF f = 65 THEN DIM am2(r): GET (1, 1)-(ah, bh), am2
IF f = 66 THEN DIM am3(r): GET (1, 1)-(ah, bh), am3
IF f = 67 THEN DIM fc(r): GET (1, 1)-(ah, bh), fc
IF f = 68 THEN DIM am3m(r): GET (1, 1)-(ah, bh), am3m
IF f = 69 THEN DIM g13(r): GET (1, 1)-(ah, bh), g13
IF f = 70 THEN DIM g14(r): GET (1, 1)-(ah, bh), g14
IF f = 71 THEN DIM g15(r): GET (1, 1)-(ah, bh), g15
IF f = 72 THEN DIM g16(r): GET (1, 1)-(ah, bh), g16
IF f = 73 THEN DIM g17(r): GET (1, 1)-(ah, bh), g17
IF f = 74 THEN DIM g18(r): GET (1, 1)-(ah, bh), g18
IF f = 75 THEN DIM g19(r): GET (1, 1)-(ah, bh), g19
IF f = 76 THEN DIM g20(r): GET (1, 1)-(ah, bh), g20
IF f = 77 THEN DIM g21(r): GET (1, 1)-(ah, bh), g21
ERASE dd
NEXT f
CLS
SCREEN , , 3, 3
mdat:
DATA "gr1","gr2","gr3","wcl","m11l","m12l","m11r","m12r","wod1","wod2"
DATA "m11lm","m12lm","m11rm","m12rm","man1","man2","t1r","t1l","t1rm","t1lm"
DATA "mr1r","mr2r","mr1l","mr2l","mr1rm","mr2rm","mr1lm","mr2lm","fir","firm"
DATA "luk1l","luk1r","luk1lm","luk1rm","cfon1","cfon2","cfon3","cfon4","cfon5","cfon6","cfon7","cfon8","cfon9"
DATA "tr1r","tr1l","tr1rm","tr1lm","bl1","bl2","bl3","bl1m","bl2m","bl3m"
DATA "dm1","dm2","dm1m","dm2m","dm3","dm3m","mdl","mdr","mdlm","mdrm"
DATA "amm1","amm2","amm3","face","amm3m","cfon10","cfon11"
DATA "cfon12","cfon13","cfon14","cfon15","cfon16","cfon17","cfon18","cfon19","cfon20"
RANDOMIZE 1000
intro = 1: inhod = 1: col = 7: cc = 1
REM LOCATE 10, 12: PRINT "Program modified": END
DIM a(200, 10)
DIM b(200, 10)
DIM x(100, 10): DIM y(100, 10)
vid = 3
vir = 2
GOSUB lod
a = 7: b = 6: h = 1: s = 1: hh = 1: hj = 0: fly = 0: op = 0: hod = 0
wh = 1
bx = 10: by = 10: dx = 4: dy = -.2: fire = 0
hodd = 0
brekhod = 0
DIM aa(100): DIM bb(100): DIM u(100): DIM s(100): DIM die(100)
f = 1
pow = 3: liv = 3: amm = 3: gold = 0: bom = 0
mig = 0: mag = 0
mdm = 0
FOR x = 1 TO 200
FOR y = 1 TO 10
IF a(x, y) = 6 THEN s(f) = -2.5: u(f) = 1: bb(f) = 1: aa(f) = x * 15: GOTO jj
IF a(x, y) = 7 THEN s(f) = -4: u(f) = 2: bb(f) = 1: aa(f) = x * 15: GOTO jj
IF a(x, y) = 8 THEN s(f) = -4: u(f) = 3: aa(f) = x * 15: bb(f) = y * 15: f = f + 1
jj0:
NEXT y
NEXT x
GOTO ser
jj:
IF b(aa(f) / 15, bb(f) / 15) = 1 THEN bb(f) = bb(f) - 15: GOTO jj2
bb(f) = bb(f) + 15
GOTO jj
jj2:
f = f + 1
GOTO jj0
ser:
FOR f = 1 TO 10
a$ = INKEY$
NEXT f
gg:
SCREEN , , vid, vir
SCREEN , , vid, vir
GOSUB act
SCREEN , vid, vid
vid = vid + 1: IF vid > 4 THEN vid = 2
vir = vir + 1: IF vir > 4 THEN vir = 2
GOTO gg
act:
IF a$ = " " AND intro = 1 THEN intro = 0: hod = 0
IF intro = 1 THEN hod = hod + inhod: IF hod > 91 OR hod < 1 THEN inhod = -inhod
IF hod < 2 AND hodd < 0 THEN hodd = 0
IF hod > 91 AND hodd > 0 THEN hodd = 0: brekhod = 1
IF hodd > 0 AND brekhod = 0 THEN hodd = hodd - 1: hod = hod + 1: a = a - 1: IF fire = 1 THEN bx = bx - 15
IF hodd < 0 AND brekhod = 0 THEN hodd = hodd + 1: hod = hod - 1: a = a + 1: IF fire = 1 THEN bx = bx + 15
act2:
bl = RND
FOR yy = 1 TO 10
PUT (0, yy * 15), wc, PSET
PUT (20 * 15, yy * 15), wc, PSET
NEXT yy
FOR x = 1 TO 19
FOR y = 1 TO 10
IF a(x + INT(hod), y) = 1 THEN PUT (x * 15, y * 15), g1, PSET: GOTO nn
IF a(x + INT(hod), y) = 2 THEN PUT (x * 15, y * 15), g2, PSET: GOTO nn
IF a(x + INT(hod), y) = 3 THEN PUT (x * 15, y * 15), g3, PSET: GOTO nn
IF a(x + INT(hod), y) = 4 AND wh = 1 THEN PUT (x * 15, y * 15), w1, PSET: GOTO nn
IF a(x + INT(hod), y) = 4 AND wh = -1 THEN PUT (x * 15, y * 15), w2, PSET: GOTO nn
IF a(x + INT(hod), y) = 5 AND bl <= .95 THEN PUT (x * 15, y * 15), m1, PSET: GOTO nn
IF a(x + INT(hod), y) = 5 AND bl > .95 THEN PUT (x * 15, y * 15), m2, PSET: GOTO nn
IF a(x + INT(hod), y) = 9 THEN PUT (x * 15, y * 15), g4, PSET: GOTO nn
IF a(x + INT(hod), y) = 10 THEN PUT (x * 15, y * 15), g5, PSET: GOTO nn
IF a(x + INT(hod), y) = 11 THEN PUT (x * 15, y * 15), g6, PSET: GOTO nn
IF a(x + INT(hod), y) = 12 THEN PUT (x * 15, y * 15), g7, PSET: GOTO nn
IF a(x + INT(hod), y) = 13 THEN PUT (x * 15, y * 15), g8, PSET: GOTO nn
IF a(x + INT(hod), y) = 14 THEN PUT (x * 15, y * 15), g9, PSET: GOTO nn
IF a(x + INT(hod), y) = 15 THEN PUT (x * 15, y * 15), g10, PSET: GOTO nn
IF a(x + INT(hod), y) = 16 THEN PUT (x * 15, y * 15), g11, PSET: GOTO nn
IF a(x + INT(hod), y) = 17 THEN PUT (x * 15, y * 15), g12, PSET: GOTO nn
IF a(x + INT(hod), y) = 18 THEN PUT (x * 15, y * 15), am1, PSET: GOTO nn
IF a(x + INT(hod), y) = 19 THEN PUT (x * 15, y * 15), am2, PSET: GOTO nn
IF a(x + INT(hod), y) = 20 THEN PUT (x * 15, y * 15), am3, PSET: GOTO nn
IF a(x + INT(hod), y) = 21 THEN PUT (x * 15, y * 15), g13, PSET: GOTO nn
IF a(x + INT(hod), y) = 22 THEN PUT (x * 15, y * 15), g14, PSET: GOTO nn
IF a(x + INT(hod), y) = 23 THEN PUT (x * 15, y * 15), g15, PSET: GOTO nn
IF a(x + INT(hod), y) = 24 THEN PUT (x * 15, y * 15), g16, PSET: GOTO nn
IF a(x + INT(hod), y) = 25 THEN PUT (x * 15, y * 15), g17, PSET: GOTO nn
IF a(x + INT(hod), y) = 26 THEN PUT (x * 15, y * 15), g18, PSET: GOTO nn
IF a(x + INT(hod), y) = 27 THEN PUT (x * 15, y * 15), g19, PSET: GOTO nn
IF a(x + INT(hod), y) = 28 AND bl > .7 THEN PUT (x * 15, y * 15), g21, PSET: GOTO nn
IF a(x + INT(hod), y) = 28 AND bl <= .7 THEN PUT (x * 15, y * 15), g20, PSET: GOTO nn
if a(x+int(hod),y-1)=28 or a(x+int(hod),y-1)=27 then put(x*15,y*15),wc,pset:gosub dddd:for ddt=1 to 10:ddx=rnd*5+5:ddy=rnd*ddd:pset (x*15+ddx,y*15+ddy),12:next ddt:goto nn
PUT (x * 15, y * 15), wc, PSET
nn:
NEXT y
IF mdm = 0 AND intro = 0 THEN GOSUB kli
NEXT x
IF intro = 1 THEN GOSUB intr: RETURN
IF a <> hh THEN h = -h: op = 1
IF op1 = 1 THEN op = 1
op1 = 0
hh = a
IF b(a + hod, b + .9) = 0 THEN fly = 1: b = b + hj: h = -1 ELSE fly = 0
IF b(a + hod, b + .8) <> 0 THEN b = b - .1: h = 1
IF b(a + hod, b - .5) <> 0 OR b < 1.5 THEN hj = .1
IF hj < .5 THEN hj = hj + .1
IF a(a + hod - .2, b + .8) = 5 THEN a(a + hod - .2, b + .8) = 0: gold = gold + 1: IF gold > 9 THEN gold = 0: liv = liv + 1
IF a(a + hod - .2, b + .8) = 18 THEN a(a + hod - .2, b + .8) = 0
IF a(a + hod - .2, b + .8) = 19 THEN a(a + hod - .2, b + .8) = 0: amm = amm + 1
IF a(a + hod - .2, b + .8) = 20 THEN a(a + hod - .2, b + .8) = 0: bom = bom + 1
IF mdm <> 0 THEN GOSUB md: GOTO mf
IF s = 1 AND h = 1 AND mig <> 1 THEN PUT (a * 15, b * 15), h1lm, AND: PUT (a * 15, b * 15), h1l, XOR
IF s = 1 AND h = -1 AND mig <> 1 THEN PUT (a * 15, b * 15), h2lm, AND: PUT (a * 15, b * 15), h2l, XOR
IF s = -1 AND h = 1 AND mig <> 1 THEN PUT (a * 15, b * 15), h1rm, AND: PUT (a * 15, b * 15), h1r, XOR
IF s = -1 AND h = -1 AND mig <> 1 THEN PUT (a * 15, b * 15), h2rm, AND: PUT (a * 15, b * 15), h2r, XOR
mf:
IF a > 15 THEN hodd = 8
IF a < 6 AND hod > 1 THEN hodd = -8
IF fly = 1 THEN GOSUB ts: IF t = 0 THEN a = a + s / 3
wsp = wsp + 1: IF wsp > 2 THEN wsp = 0: wh = -wh
IF fly = 0 THEN op = 0
IF brekhod = 0 THEN GOSUB mon
IF fire = 1 THEN IF bx / 15 > 20 OR bx / 15 < 1 THEN fire = 0: IF bom > 0 THEN bom = bom - 1
IF b(bx / 15 + hod, by / 15) <> 0 AND fire = 1 THEN fire = 0: IF bom > 0 THEN bom = bom - 1
IF fire = 1 AND bom <= 0 THEN PUT (bx, by), ffm, AND: PUT (bx, by), ff, XOR: bx = bx + dx
IF fire = 1 AND bom > 0 THEN PUT (bx, by), am3m, AND: PUT (bx, by), am3, XOR: bx = bx + dx
REM LOCATE 1, 1: PRINT mig; " "
ktm = ktm + 1
IF mig <> 0 THEN mig = mig + 1: IF mig > 3 THEN mig = 1
mag = mag - 1: IF mag < 0 THEN mig = 0
IF mdm > 20 THEN LOCATE 9, 14: COLOR 11: PRINT "<22><> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>"
GOSUB panel
RETURN
md:
IF s = -1 THEN PUT (a * 15, b * 15 + 1), mdrm, AND: PUT (a * 15, b * 15 + 1), mdr, XOR
IF s = 1 THEN PUT (a * 15, b * 15 + 1), mdlm, AND: PUT (a * 15, b * 15 + 1), mdl, XOR
mdm = mdm + 1: IF mdm = 50 THEN END
RETURN
kli:
_LIMIT 250
a$ = INKEY$
IF a$ = "e" THEN END
IF a$ = "o" AND fly = 0 THEN ktm = 0: s = -1: GOSUB ts: IF t = 0 THEN a = a - .2
IF a$ = "p" AND fly = 0 THEN ktm = 0: s = 1: GOSUB ts: IF t = 0 THEN a = a + .2
IF a$ = "q" AND fly = 0 AND b > 2 THEN hj = -.6: b = b - .2
IF a$ = "o" AND fly = 1 THEN op1 = 1: s = -1
IF a$ = "p" AND fly = 1 THEN op1 = 1: s = 1
IF a$ = "m" AND fire = 0 THEN fire = 1: GOSUB firs
RETURN
firs:
IF s = -1 THEN bx = a * 15 - 10: by = b * 15 + 5: dx = -10
IF s = 1 THEN bx = a * 15 + 10: by = b * 15 + 5: dx = 10
IF bom > 0 THEN by = b * 15
RETURN
ts:
t = 0
IF s = 1 THEN IF b(a + hod + .6, b + .6) = 1 THEN t = 1
IF s = -1 THEN IF b(a + hod - .6, b + .6) = 1 THEN t = 1
IF s = -1 AND a < 1.5 THEN t = 1
IF ktm > 2 AND op = 0 AND fly = 1 THEN t = 1
RETURN
mon:
FOR f = 1 TO 100
aaa = 0
IF hodd > 0 THEN aa(f) = aa(f) - 15: aaa = 15: FOR sz = 1 TO 10: x(f, sz) = x(f, sz) - 15: NEXT sz
IF hodd < 0 THEN aa(f) = aa(f) + 15: aaa = -15: FOR sz = 1 TO 10: x(f, sz) = x(f, sz) + 15: NEXT sz
IF die(f) <> 0 THEN GOSUB dm: GOTO ccc2
IF aa(f) / 15 > 1 AND aa(f) / 15 < 19 THEN GOTO ccc
GOTO ccc2
ccc:
IF fire = 1 AND die(f) = 0 AND bx > aa(f) - 5 AND bx < aa(f) + 20 AND by > bb(f) - 10 AND by < bb(f) + 15 THEN die(f) = -1: GOSUB bm: FOR sz = 1 TO 10: x(f, sz) = aa(f) + RND * 15: y(f, sz) = bb(f) + RND * 5: NEXT sz: GOTO ccc2
IF u(f) = 1 THEN GOSUB mon1
IF u(f) = 2 THEN GOSUB mon2
IF u(f) = 3 THEN GOSUB mon3
IF mig = 0 AND a > aa(f) / 15 - 1 AND a < aa(f) / 15 + 1 AND b > bb(f) / 15 - 1 AND b < bb(f) / 15 + 1 THEN mag = 50: mig = 1: pow = pow - 1: IF pow <= 0 THEN mdm = 1
ccc2:
IF die(f) <> 0 THEN die(f) = die(f) - 1: GOSUB mbl
IF die(f) = 0 THEN x(f, 1) = aa(f): y(f, 1) = bb(f)
NEXT f
RETURN
bm:
IF bom > 0 THEN fire = 1 ELSE fire = 0
RETURN
dm:
IF aa(f) / 15 > 1 AND aa(f) / 15 < 19 THEN GOTO dmm
RETURN
dmm:
IF u(f) = 3 AND bb(f) < 143 THEN yu = b(aa(f) / 15 + hod + aaa / 15, bb(f) / 15 + .9)
IF u(f) = 3 AND bb(f) < 143 AND a(aa(f) / 15 + hod + aaa / 15, bb(f) / 15) = 4 THEN bb(f) = bb(f) - RND: GOTO dmmm
IF u(f) = 3 AND yu <> 1 THEN bb(f) = bb(f) + 3
dmmm:
IF u(f) = 1 THEN PUT (aa(f) + aaa, bb(f)), dm1m, AND: PUT (aa(f) + aaa, bb(f)), dm1, XOR
IF u(f) = 2 THEN PUT (aa(f) + aaa, bb(f)), dm2m, AND: PUT (aa(f) + aaa, bb(f)), dm2, XOR
IF u(f) = 3 AND bb(f) < 143 THEN PUT (aa(f) + aaa, bb(f)), dm3m, AND: PUT (aa(f) + aaa, bb(f)), dm3, XOR
RETURN
mbl:
IF y(f, 1) > 150 THEN RETURN
FOR sz = 1 TO 10
FOR ssz = 1 TO 2
PSET (x(f, sz) + aaa + RND * 2, y(f, sz) + RND * 2 + 7), 12
PSET (x(f, sz) + aaa + RND * 2, y(f, sz) + RND * 2 + 7), 4
NEXT ssz
y(f, sz) = y(f, sz) - die(f) / 5 - 2
x(f, sz) = x(f, sz) + RND * 6 - 3
NEXT sz
RETURN
mon1:
IF b(aa(f) / 15 + hod + .5 + aaa / 15, bb(f) / 15 + 1) <> 1 THEN s(f) = -2.5
IF b(aa(f) / 15 + hod - .5 + aaa / 15, bb(f) / 15 + 1) <> 1 THEN s(f) = 2.5
IF b(aa(f) / 15 + hod + .5 + aaa / 15, bb(f) / 15) = 1 THEN s(f) = -2.5
IF b(aa(f) / 15 + hod - .5 + aaa / 15, bb(f) / 15) = 1 THEN s(f) = 2.5
aa(f) = aa(f) + s(f)
IF s(f) = 2.5 AND wh = 1 THEN PUT (aa(f) + aaa, bb(f) - 5), t1rm, AND: PUT (aa(f) + aaa, bb(f) - 5), t1r, XOR
IF s(f) = 2.5 AND wh = -1 THEN PUT (aa(f) + aaa, bb(f) - 5), tr1lm, AND: PUT (aa(f) + aaa, bb(f) - 5), tr1l, XOR
IF s(f) = -2.5 AND wh = 1 THEN PUT (aa(f) + aaa, bb(f) - 5), t1lm, AND: PUT (aa(f) + aaa, bb(f) - 5), t1l, XOR
IF s(f) = -2.5 AND wh = -1 THEN PUT (aa(f) + aaa, bb(f) - 5), tr1rm, AND: PUT (aa(f) + aaa, bb(f) - 5), tr1r, XOR
RETURN
mon2:
IF b(aa(f) / 15 + hod + .5 + aaa / 15, bb(f) / 15 + 1) <> 1 THEN s(f) = -4
IF b(aa(f) / 15 + hod - .5 + aaa / 15, bb(f) / 15 + 1) <> 1 THEN s(f) = 4
IF b(aa(f) / 15 + hod + .5 + aaa / 15, bb(f) / 15) = 1 THEN s(f) = -4
IF b(aa(f) / 15 + hod - .5 + aaa / 15, bb(f) / 15) = 1 THEN s(f) = 4
aa(f) = aa(f) + s(f)
IF s(f) = 4 AND wh = 1 THEN PUT (aa(f) + aaa, bb(f)), mr1rm, AND: PUT (aa(f) + aaa, bb(f)), mr1r, XOR
IF s(f) = 4 AND wh = -1 THEN PUT (aa(f) + aaa, bb(f)), mr2rm, AND: PUT (aa(f) + aaa, bb(f)), mr2r, XOR
IF s(f) = -4 AND wh = 1 THEN PUT (aa(f) + aaa, bb(f)), mr1lm, AND: PUT (aa(f) + aaa, bb(f)), mr1l, XOR
IF s(f) = -4 AND wh = -1 THEN PUT (aa(f) + aaa, bb(f)), mr2lm, AND: PUT (aa(f) + aaa, bb(f)), mr2l, XOR
RETURN
mon3:
IF b(aa(f) / 15 + hod + .5 + aaa / 15, bb(f) / 15) = 1 THEN s(f) = -4
IF b(aa(f) / 15 + hod - .5 + aaa / 15, bb(f) / 15) = 1 THEN s(f) = 4
IF b(aa(f) / 15 + hod + .5 + aaa / 15, bb(f) / 15 + 1) = 1 THEN s(f) = -4
IF b(aa(f) / 15 + hod - .5 + aaa / 15, bb(f) / 15 + 1) = 1 THEN s(f) = 4
IF aa(f) / 15 > 18 THEN s(f) = -4
IF aa(f) / 15 < 2 THEN s(f) = 4
aa(f) = aa(f) + s(f)
IF s(f) = 4 THEN PUT (aa(f) + aaa, bb(f)), lkrm, AND: PUT (aa(f) + aaa, bb(f)), lkr, XOR
IF s(f) = -4 THEN PUT (aa(f) + aaa, bb(f)), lklm, AND: PUT (aa(f) + aaa, bb(f)), lkl, XOR
RETURN
intr:
LOCATE 1, 1: PRINT " Press ~SPACE~"
FOR f = 0 TO 14
FOR y = 0 TO 10
FOR x = 0 + f * 8 TO 7 + f * 8
aa = POINT(x, y)
IF aa <> 0 THEN PSET (x + 105, y + 120), 4
IF aa <> 0 AND RND > y / 10 THEN PSET (x + 105, y + 120), 12
NEXT x
NEXT y
NEXT f
LOCATE 1, 1: PRINT " * DEMO * "
FOR y = 0 TO 10
FOR x = 0 TO 72
aa = POINT(x, y)
FOR vb = 1 TO 6
IF aa <> 0 THEN PSET (x * 2 + 90 + RND * 2, y * 2 + 20 + RND * (y + 2)), 12
NEXT vb
NEXT x
NEXT y
LOCATE 1, 1: PRINT " ": COLOR 15
a$ = INKEY$
RETURN
panel:
PUT (16, 0), fc, PSET
LOCATE 2, 6: PRINT "*"; liv
PUT (76, 0), am1, PSET
LOCATE 2, 13: PRINT "*"; pow
PUT (136, 0), am3, PSET
LOCATE 2, 20: PRINT "*"; bom
PUT (196, 0), m1, PSET
LOCATE 2, 28: PRINT "*"; gold
PUT (256, 0), am2, PSET
LOCATE 2, 36: PRINT "*"; amm
RETURN
dddd:
ddd=1
ddd1:
if rnd>.9 then return
ddd=ddd+1:if ddd>15 then return
goto ddd1
lod:
OPEN "demap.vir" FOR INPUT AS #2
FOR sx = 1 TO 200
FOR sy = 1 TO 10
INPUT #2, a(sx, sy)
INPUT #2, b(sx, sy)
NEXT sy
NEXT sx
CLOSE #2
RETURN