! SIMPLANE ! PRINT "Welcome to EJ's SIMPLANE" PRINT "A version of this for your PC may be downloaded from:" PRINT "http://members.tripod.com/~ej_/" PRINT "Press space to fire." PRINT "Give me a number between 20 and 480:" INPUT OX% PRINT "Give me a number between 1 and 185:" INPUT OY% XM%= 0 OY2%= OY% OX2%= OX%- 20 X%= 1 X2%= 640 Y%= 125 Y2%= 125 N%= 0 CALL CLRSCR CALL LINE( X%, Y%, X2%, Y2%) LOOP CALL LINE2( 216, 120, 224, 120) CALL LINE3( 220, 116, 220, 125) IF X%< 1 THEN X%= 1 ENDIF IF X2%< 1 THEN X2%= 1 ENDIF IF Y%< 1 THEN Y%= 1 ENDIF IF Y2%< 1 THEN Y2%= 1 ENDIF K$= KEY$ K%= ASC%( K$, 1) IF ( K%= 39) THEN XM%= XM%+ 1 CALL COLOR( 0) CALL LINE2( OX%, OY%, OX2%, OY2%) CALL COLOR( 1) Y2%= Y2%- 10 Y%= Y%+ 10 CALL CLRSCR CALL LINE( 216, 120, 224, 120) CALL LINE( 220, 116, 220, 125) CALL LINE( X%, Y%, X2%, Y2%) ENDIF IF K%= 32 THEN LOOP FOR T%= 116 TO 125 CALL LINE( 216, T%, 224, T%) LOOP FOR S%= 216 TO 224 LOOP FOR R%= OX2% TO OX% IF ( R%= S%) AND ( OY%= T%) THEN PRINT "GREAT SHOT!" N%= 0- N% N%= N%+ 501 N%= N%* 10 PRINT "You got"; N%; " points!" PRINT "This score is based on the amount of time you took." END ENDIF ENDLOOP ENDLOOP ENDLOOP ENDIF N%= N%+ 1 IF ( K%= 37) THEN XM%= XM%- 1 CALL COLOR( 0) CALL LINE( OX%, OY%, OX2%, OY2%) Y2%= Y2%+ 10 Y%= Y%- 10 CALL CLRSCR CALL COLOR( 1) CALL LINE( 216, 120, 224, 120) CALL LINE( 220, 116, 220, 124) CALL LINE( X%, Y%, X2%, Y2%) ENDIF IF ( K%= 40) THEN OY%= OY%+ 10 OY2%= OY2%+ 10 Y%= Y%- 10 Y2%= Y2%- 10 CALL CLRSCR CALL LINE( 216, 120, 224, 120) CALL LINE( 220, 116, 220, 124) CALL LINE( X%, Y%, X2%, Y2%) ENDIF IF ( K%= 38) THEN OY%= OY%- 10 OY2%= OY2%- 10 Y%= Y%+ 10 Y2%= Y2%+ 10 CALL CLRSCR CALL LINE( 216, 120, 224, 120) CALL LINE( 220, 116, 220, 124) CALL LINE( X%, Y%, X2%, Y2%) ENDIF IF K%= 27 THEN END ENDIF CALL COLOR( 1) IF ( OX2%< 599) AND ( OX%> 2) THEN CALL COLOR( 0) CALL LINE( OX%, OY%, OX2%, OY2%) OX%= OX%+ XM% OX2%= OX2%+ XM% CALL COLOR( 1) CALL LINE( OX%, OY%, OX2%, OY2%) ENDIF IF OX%< 10 THEN OX%= 10 ENDIF IF OX%> 599 THEN OX%= 599 ENDIF IF OX2%< 10 THEN OX2%= 10 ENDIF IF OX2%> 599 THEN OX2%= 599 ENDIF IF OY%< 1 THEN OY%= 1 ENDIF IF OY2%< 1 THEN OY2%= 1 ENDIF IF OY%> 199 THEN OY%= 199 ENDIF IF OY2%> 199 THEN OY2%= 199 ENDIF OX2%= OX%- 20 IF ( XM%> 7) OR ( XM%< - 7) THEN PRINT "YOU SPUN OUT OF CONTROL!" END ENDIF IF N%>= 500 THEN CALL TIMEOUT ENDIF ENDLOOP PROCEDURE TIMEOUT PRINT "You took too much time." END ENDPROC ! The following taken from BasiCE\LIB ! PROCEDURE CLRSCR PRINT "C"; ENDPROC PROCEDURE COLOR( C%) PRINT "Q"+ CHR$( 32+ C%) ; ENDPROC procedure line( x1%,y1%,xx%,yy%) print "L";chr$(shift%(x1%,-6)+1);chr$((x1% and 63)+1);\ chr$(shift%(y1%,-6)+1);chr$((y1% and 63)+1); print chr$(shift%(xx%,-6)+1);chr$((xx% and 63)+1);\ chr$(shift%(yy%,-6)+1);chr$((yy% and 63)+1); endproc ! The following was taken from BasiCE\LIB and modified ! procedure line2( x3%,y3%,x4%,y4%) print "L";chr$(shift%(x3%,-6)+1);chr$((x3% and 63)+1);\ chr$(shift%(y3%,-6)+1);chr$((y3% and 63)+1); print chr$(shift%(x4%,-6)+1);chr$((x4% and 63)+1);\ chr$(shift%(y4%,-6)+1);chr$((y4% and 63)+1); endproc procedure line3( x5%,y5%,x6%,y6%) print "L";chr$(shift%(x5%,-6)+1);chr$((x5% and 63)+1);\ chr$(shift%(y5%,-6)+1);chr$((y5% and 63)+1); print chr$(shift%(x6%,-6)+1);chr$((x6% and 63)+1);\ chr$(shift%(y6%,-6)+1);chr$((y6% and 63)+1); endproc