glados: portals actually work

This commit is contained in:
Vince Weaver 2017-01-06 15:24:56 -05:00
parent b849e7da6f
commit e5fd19f36a

View File

@ -1,44 +1,52 @@
10 HOME:HGR 10 HOME:HGR
11 POKE 232,0:POKE 233,16 11 POKE 232,0:POKE 233,30
12 PRINT CHR$(4)+"BLOAD OBJECTS.SHAPE,A$1000" 12 PRINT CHR$(4)+"BLOAD OBJECTS.SHAPE,A$1E00"
15 GOSUB 1000 15 GOSUB 1000
20 CX=20:CY=100:VY=0:SX=140:SY=80:BO=0:GO=0 20 CX=20:CY=100:VX=0:VY=0:SX=140:SY=80:BO=0:GO=0
22 XDRAW 1 AT SX,SY 22 XDRAW 1 AT SX,SY
25 XDRAW 2 AT CX,CY-7 25 XDRAW 2 AT CX,CY
30 HCOLOR=5:REM ORANGE 30 REM
'35 HPLOT CX,CY-7 TO CX,CY+7
' ERASE OLD COPY
'35 XDRAW 2 AT CX,CY-7
35 OX=CX:OY=CY:LX=SX:LY=SY 35 OX=CX:OY=CY:LX=SX:LY=SY
37 IF PEEK(-16384)<128 THEN GOTO 100 37 IF PEEK(-16384)<128 THEN GOTO 100
40 GET A$ 40 GET A$
41 IF A$="I" AND SY>4 THEN SY=SY-4 42 IF A$="I" AND SY>4 THEN SY=SY-4
42 IF A$="J" AND SX>4 THEN SX=SX-4 44 IF A$="J" AND SX>4 THEN SX=SX-4
43 IF A$="K" AND SX<275 THEN SX=SX+4 46 IF A$="K" AND SX<275 THEN SX=SX+4
44 IF A$="M" AND SY<150 THEN SY=SY+4 48 IF A$="M" AND SY<150 THEN SY=SY+4
45 IF A$="D" THEN CX=CX+2 50 IF A$="D" AND VX<0 THEN VX=0:GOTO 52
46 IF A$="A" THEN CX=CX-2 51 IF A$="D" THEN VX=5
47 IF A$="Q" THEN GOTO 800 52 IF A$="A" AND VX>0 THEN VX=0:GOTO 54
48 IF A$=" " THEN VY=5 53 IF A$="A" THEN VX=-5
49 IF A$="H" THEN GOSUB 5000 54 IF A$="Q" THEN GOTO 800
50 IF A$="," THEN GOSUB 6000 56 IF A$=" " THEN VY=5
51 IF A$="." THEN GOSUB 7000 58 IF A$="H" THEN GOSUB 5000
60 IF A$="," THEN GOSUB 6000
62 IF A$="." THEN GOSUB 7000
' PHYSICS ENGINE ' PHYSICS ENGINE
100 CY=CY-VY 100 CY=CY-VY
105 VY=VY-4.5 105 VY=VY-4.5
107 CX=CX+VX
110 IF VX<0.5 AND VX>-0.5 THEN VX=0
'
' COLLISION DETECTION ' COLLISION DETECTION
200 IF CX<7 THEN CX=7 '
205 IF CX>271 THEN CX=271 ' Edges
200 IF CX<7 THEN CX=7:VX=0
205 IF CX>271 THEN CX=271:VX=0
210 IF CY<7 THEN CY=7:VY=-VY 210 IF CY<7 THEN CY=7:VY=-VY
' DETECT THE FLOOR ' Floors
220 IF CX < 119 AND CY > 112 THEN CY=112:VY=0 220 IF CX < 119 AND CY > 112 THEN CY=112:VY=0:VX=VX/2
225 IF CX > 161 AND CY > 112 THEN CY=112:VY=0 225 IF CX > 161 AND CY > 112 THEN CY=112:VY=0:VX=VX/2
230 IF CX > 119 AND CX < 161 AND CY>140 THEN GOTO 800 230 IF CX > 119 AND CX < 161 AND CY>140 THEN GOTO 800
' Portals
235 IF BO=0 OR GO=0 GOTO 240
236 IF CX>BX-5 AND CX<BX+5 AND CY<BY+12 AND CY>BY-12 THEN CX=GX+5*VX:CY=GY
238 IF CX>GX-5 AND CX<GX+5 AND CY<GY+12 AND CY>GY-12 THEN CX=BX-5*VX:CY=BY
240 REM 240 REM
' DRAW AT UPDATE CO-ORDS ' DRAW AT UPDATE CO-ORDS
245 IF OX=CX AND OY=CY GOTO 255 245 IF OX=CX AND OY=CY GOTO 255
250 XDRAW 2 AT OX,OY-7 250 XDRAW 2 AT OX,OY
251 XDRAW 2 AT CX,CY-7 251 XDRAW 2 AT CX,CY
255 IF LX=SX AND LY=SY GOTO 300 255 IF LX=SX AND LY=SY GOTO 300
256 XDRAW 1 AT LX,LY 256 XDRAW 1 AT LX,LY
257 XDRAW 1 AT SX,SY 257 XDRAW 1 AT SX,SY
@ -85,7 +93,8 @@
5080 PRINT " , = SHOOT BLUE" 5080 PRINT " , = SHOOT BLUE"
5090 PRINT " Q = QUIT . = SHOOT ORANGE" 5090 PRINT " Q = QUIT . = SHOOT ORANGE"
5100 PRINT:GET A$ 5100 PRINT:GET A$
5110 HGR ' return to hires
5110 POKE -16304,0
5120 RETURN 5120 RETURN
' DRAW BLUE PORTAL ' DRAW BLUE PORTAL
6000 REM DRAW BLUE 6000 REM DRAW BLUE
@ -101,3 +110,8 @@
7010 GX=SX+1:GY=SY 7010 GX=SX+1:GY=SY
7020 GO=1:HCOLOR=5:DRAW 2 AT GX,GY 7020 GO=1:HCOLOR=5:DRAW 2 AT GX,GY
7030 RETURN 7030 RETURN
'
' BUGS:
' Shouldn't be able to create portals underground
' Artifacts when deleting portals