152 lines
2.5 KiB
Plaintext
152 lines
2.5 KiB
Plaintext
|
|
' written by Robert Sanchez
|
|
|
|
|
|
_runtimePath_ "../../at67/gbas/runtime"
|
|
_codeRomType_ ROMv2
|
|
|
|
const MISSLE_COUNT = 5
|
|
|
|
set FGBG_COLOUR, 0
|
|
cls : mode 3
|
|
|
|
x = 100
|
|
y = 100
|
|
tmpx = 0
|
|
tmpy = 0
|
|
oldc = 0
|
|
|
|
|
|
dim mis_x1%(MISSLE_COUNT)
|
|
dim mis_y1%(MISSLE_COUNT)
|
|
|
|
dim mis_x2%(MISSLE_COUNT)
|
|
dim mis_y2%(MISSLE_COUNT)
|
|
|
|
dim mis_dx(MISSLE_COUNT)
|
|
dim mis_dy(MISSLE_COUNT)
|
|
|
|
dim mis_sx(MISSLE_COUNT) ' TODO: what is wrong with using this?
|
|
dim mis_e(MISSLE_COUNT)
|
|
|
|
|
|
for n=0 to MISSLE_COUNT
|
|
gosub initMissle
|
|
next n
|
|
|
|
mystep:
|
|
gosub handleInput
|
|
|
|
for n=0 to MISSLE_COUNT
|
|
gosub drawMissle
|
|
next n
|
|
goto mystep
|
|
'end
|
|
|
|
|
|
|
|
initMissle:
|
|
mis_x1(n) = rnd(159)
|
|
mis_y1(n) = 1
|
|
|
|
mis_x2(n) = rnd(159)
|
|
mis_y2(n) = 119
|
|
|
|
mis_dx(n) = abs(mis_x2(n) - mis_x1(n))
|
|
|
|
'if mis_x1(n) < mis_x2(n)
|
|
'mis_sx(n) = 1
|
|
'else
|
|
'mis_sx(n) = -1
|
|
'endif
|
|
|
|
mis_dy(n) = -abs(mis_y2(n) - mis_y1(n))
|
|
|
|
mis_e(n) = mis_dx(n) + mis_dy(n)
|
|
|
|
return
|
|
|
|
|
|
|
|
'loop:
|
|
drawMissle:
|
|
'pset mis_x1(n),mis_y1(n),rnd(0) and &h3F
|
|
pset mis_x1(n),mis_y1(n),&h03
|
|
|
|
if (mis_x1(n) = mis_x2(n)) and (mis_y1(n) = mis_y2(n))
|
|
goto done
|
|
endif
|
|
|
|
e2 = mis_e(n)
|
|
|
|
if e2 >= mis_dy(n)
|
|
if mis_x1(n) = mis_x2(n)
|
|
goto done
|
|
endif
|
|
mis_e(n) = mis_e(n) + mis_dy(n)
|
|
|
|
' TODO: hoist this logic out, having problems with that though
|
|
if mis_x1(n) < mis_x2(n)
|
|
mis_x1(n) = mis_x1(n) + 1
|
|
else
|
|
mis_x1(n) = mis_x1(n) -1
|
|
endif
|
|
endif
|
|
|
|
if e2 <= mis_dx(n)
|
|
if mis_y1(n) = mis_y2(n)
|
|
goto done
|
|
endif
|
|
mis_e(n) = mis_e(n) + mis_dx(n)
|
|
mis_y1(n) = mis_y1(n) + 1
|
|
endif
|
|
|
|
pset mis_x1(n),mis_y1(n),&h3F
|
|
return
|
|
|
|
done:
|
|
gosub initMissle
|
|
return
|
|
|
|
|
|
|
|
|
|
handleInput:
|
|
button = get("BUTTON_STATE")
|
|
if (button AND &h01)
|
|
tmpx = tmpx - 1
|
|
if tmpx < -1
|
|
tmpx = 0
|
|
pset x,y,oldc
|
|
x = x - 1
|
|
endif
|
|
endif
|
|
if (button AND &h02)
|
|
tmpx = tmpx + 1
|
|
if tmpx > 1
|
|
tmpx = 0
|
|
pset x,y,oldc
|
|
x = x + 1
|
|
endif
|
|
endif
|
|
if (button AND &h04)
|
|
tmpy = tmpy -1
|
|
if tmpy < -1
|
|
tmpy = 0
|
|
pset x,y,oldc
|
|
y = y - 1
|
|
endif
|
|
endif
|
|
if (button AND &h08)
|
|
tmpy = tmpy + 1
|
|
if tmpy > 1
|
|
tmpy = 0
|
|
pset x,y,oldc
|
|
y = y + 1
|
|
endif
|
|
endif
|
|
|
|
'oldc = peek(((y + 8) LSL 8) + x) ' TODO
|
|
pset x,y,rnd(0) and &h3F
|
|
return
|