It's also been very worthwhile - it can now handle 4 poles faster than it could 3! And not by nasty stuff like making the poles jump greater gaps at each cycle - nothing has changed there.
I think even 5 poles runs at a tolerable speed but I'd say that's the limit. It's opened up some great options for progressive gameplay. I'm thinking:
1) Start with 3 poles, with a delay to slow it down.
2) Once the absorber is very wide, the collection of a special pole will cause you to enter a warp level.
4) Once past a warp level your absorber goes back to the initial size, and the number of poles increases to 4 and then possibly to 5 after next warp.
Three poles now plays so fast that if I saw it on a Spectrum I'd believe it was written in machine code!
Code: Select all
2MODE7:VDU23,1,0;0;0;0:PROCINST
5MODE2:VDU23,1,0;0;0;0
10DIMYB%(20):DIMYT%(20):DIMD%(20)
20FORI=1TO20:YB%(I)=340-I^1.23:YT%(I)=340+I^1.693:D%(20-I)=8+I*2:NEXT
22REMFORI=1TO10:YB%(I)=340-I^1.6:YT%(I)=340+I^2.2:NEXT
30DIMR%(3):R%(0)=1:R%(1)=2:R%(2)=4:R%(3)=7
32DIMX%(10):DIMC%(10):DIMS%(10)
40R%=0:E%=100:A%=-1:L%=-20:M%=20:SC%=0
42GCOL0,7
45PRINT
47FORI%=0TO10:X%(I%)=RND(440)-220:C%(I%)=RND(7):S%(I%)=RND(2):NEXT
50PRINTTAB(1,7);"ENERGY"
60PRINTTAB(2,9);"SCORE 0"
110VDU29,0;0;
120MOVE340,500:DRAW940,500:DRAW940,292:DRAW340,292:DRAW340,500
135FORI%=1TO10:PRINTTAB(7+I%,7);"*":SOUND1,-10,50+I%*2,1:FORJ%=1TO300STEP1:NEXTJ%:NEXTI%
155VDU29,640;0;
157GCOL0,R%(0):MOVEL%,296:DRAWM%,296
158SOUND&11,-2,2,255:SOUND&12,-2,3,255
160REPEAT:FORI%=0TO2
165S%=S%(I%):X%=X%(I%):N%=INKEY(-1)
170IFN%SOUND3,-6,0,1
190GCOL0,0:MOVEX%,YB%(S%):DRAWX%,YT%(S%)
212D%=0:IFINKEY(-98)D%=D%(S%)ELSEIFINKEY(-67)D%=-D%(S%)
215X%=X%+X%DIV(8*(1-N%))+D%:S%(I%)=S%+2+N%:S%=S%(I%)
217IFS%>20ANDX%>=L%ANDX%<=M%A%=FNC(I%)
220IFS%>20ORABS(X%)>292S%=RND(2):S%(I%)=S%:X%=RND(440)-220:C%(I%)=RND(7)
240GCOL3,C%(I%):MOVEX%,YB%(S%):DRAWX%,YT%(S%)
250IFR%=3ANDINKEY(-74)Z%=FNL
255X%(I%)=X%
260NEXT:UNTILA%=0
261SOUND&11,0,0,0:SOUND&12,0,0,0:SOUND&13,0,0,0:ENVELOPE3,128,0,0,0,0,0,0,0,0,0,-1,126,0:SOUND4,3,6,1
262PRINTTAB(5,30);"Press SPACE"
265G$=GET$:IFG$<>" "THENGOTO265
270CLS:GOTO40
300DEFFNC(I%)
305IFR%(R%)<>C%(I%)ORR%=3THENSOUND3,-15,0,2:E%=E%-10:R%=0:GCOL0,R%(R%):MOVEL%,296:DRAWM%,296:PRINTTAB(8+E%/10,7);" ":=E%
310SOUND3,-7,100,1:R%=R%+1:IFR%=4THENR%=0
311SC%=SC%+50:PRINTTAB(8,9);SC%
312IFR%=3THENL%=L%-8:M%=M%+8
313GCOL0,R%(R%):MOVEL%,296:DRAWM%,296
315=-1
400DEFFNL
403ENVELOPE1,1,4,-4,8,1,1,1,0,0,0,-60,60,60:SOUND1,1,120,10:SOUND2,1,124,10:SOUND3,1,128,10
404GCOL3,7:MOVEL%,308:MOVEM%,308:PLOT85,M%,340:MOVEL%,340:PLOT85,L%,308
405R%=0:GCOL0,R%(R%):MOVEL%,296:DRAWM%,296
410FORJ%=0TO3
420IFC%(J%)=7ANDX%(J%)>=L%ANDX%(J%)<=M%THENGCOL3,C%(J%):MOVEX%(J%),YB%(S%(J%)):DRAWX%(J%),YT%(S%(J%)):S%(J%)=RND(2):X%(J%)=RND(440)+440:C%(J%)=RND(7):SC%=SC%+200:PRINTTAB(8,9);SC%:ENVELOPE3,128,0,0,0,0,0,0,0,0,0,-2,100,0:SOUND4,3,5,1
425NEXT
427GCOL3,7:MOVEL%,308:MOVEM%,308:PLOT85,M%,340:MOVEL%,340:PLOT85,L%,308
430=-1
500REPEAT: FOR I=-1TO-127STEP-1:IFINKEY(I)THENPRINTI
510NEXT:UNTIL0
1000DEFPROCINST
1005PRINT
1010PRINT"POLE RUNNER"
1020PRINT
1030PRINT"You find yourself hurtling along the"
1035PRINT"barren surface of Planet RGB in your"
1040PRINT"Pole Runner Mk3 hover vehicle."
1045PRINT
1050PRINT"Your mission: to eliminate as many of"
1055PRINT"the evil WHITE POLES as you can. But"
1060PRINT"before you can fire your LASER beam"
1065PRINT"you must first charge it, by absorbing"
1070PRINT"a RED, GREEN and BLUE pole, in that"
1075PRINT"order. Absorb poles by bumping into"
1076PRINT"them with your front-mounted ABSORBER."
1080PRINT
1082PRINT"If you hit a pole of a colour that your"
1084PRINT"ABSORBER is not expecting, you will"
1086PRINT"take damage. When your LASER is charged"
1087PRINT"your ABSORBER will widen. This is good,":PRINT"and bad..."
1088PRINT
1090PRINT"Z-Left X-Right SHIFT-Slow RETURN-Fire"
1100PRINT
1110PRINT"PRESS A KEY TO GET STARTED!";
1900G$=GET$
2000ENDPROC