'=========================================================================== ' Subject: QB CAR RACING GAME Date: 02-12-99 (21:54) ' Author: Robert Gavelin Code: QB, QBasic, PDS ' Origin: gavelin@hem.passagen.se Packet: GAMES.ABC '=========================================================================== ' ÛÛÛÛÛ ÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛ ' Û Û Û Û Û ' Û Û Û Û Û ' Û Û Û Û Û ' Û Û Û Û ÛÛ ' ÛÛÛÛÛ ÛÛÛ Û ÛÛÛ ' Û Û Û Û Û ÛÛ ' Û Û Û Û Û ÛÛ ' Û Û Û ÛÛÛÛ ÛÛ ' Û Û ÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛ ' ' A QB car racing game by Robert Gavelin (gavelin@hem.passagen.se) ' Visit http://hem.passagen.se/gavelin/qbasic.htm for updates & other progs ' ' Made in Sweden ' * PRESS F5 TO START * ' DECLARE SUB bana1 () DECLARE SUB bana2 () DECLARE SUB bana3 () DECLARE SUB bana4 () DECLARE SUB bilbana1 () DECLARE SUB bilbana2 () DECLARE SUB bilbana3 () DECLARE SUB bilbana4 () DECLARE SUB nylista () DECLARE SUB konvert (tiid!) DECLARE SUB setcolor () DECLARE SUB finish () DECLARE SUB calibrate () DECLARE SUB filhant () DECLARE SUB intro () DECLARE SUB stoppa (n!) DECLARE SUB options () DECLARE SUB hiscore () DECLARE SUB help () DECLARE SUB Start () DECLARE SUB gameover () DECLARE SUB ritabil () COMMON SHARED c, cc, x, y, dx, dy, u, varv, v, speed, totaltid, sluttid DIM SHARED dam AS INTEGER, ljud AS INTEGER, bana AS INTEGER DIM SHARED tid AS STRING * 9, dead AS INTEGER, color1 AS INTEGER, color2 AS INTEGER DIM SHARED max1 AS INTEGER, min1 AS INTEGER, cent1 AS INTEGER, joy AS INTEGER DIM SHARED postnr AS INTEGER, bannamn(1 TO 4) AS STRING TYPE hiscoredata namn AS STRING * 16 score AS SINGLE END TYPE DIM SHARED hidata AS hiscoredata KEY(0) STOP ON KEY(8) GOSUB toggle ' Ljud p†/av med F 8 ON KEY(10) GOSUB avsluta ' Snabbt avslut med F 10 KEY(8) ON KEY(10) ON bannamn(1) = "Fastec Ring" bannamn(2) = "Springfield" bannamn(3) = " Bundyland " bannamn(4) = " Dazemaze " '--- Start --- CLOSE CLS 0 OPEN "options.rej" FOR RANDOM AS #1 LEN = 2 CALL filhant OPEN "hiscore.rej" FOR RANDOM AS #2 LEN = 20 GET #2, 1, hidata IF hidata.score <> 4 THEN CALL nylista CALL filhant CALL intro startet: 'H„r „r menyn CLS 0 SCREEN 12 VIEW PRINT (1) TO (30) mval = 1 menyst: CLS COLOR 9 FOR lr = 4 TO 24 LOCATE lr, 15: PRINT "Û" NEXT lr FOR lk = 15 TO 65 LOCATE 24, lk: PRINT "Û" NEXT lk FOR lr = 4 TO 24 LOCATE lr, 65: PRINT "Û" NEXT lr FOR lk = 15 TO 65 LOCATE 4, lk: PRINT "Û" NEXT lk LOCATE 8, 30: PRINT " * * * R E J S * * * " menyn: IF mval < 1 THEN mval = 1 IF mval > 5 THEN mval = 5 IF mval = 1 THEN COLOR 9 LOCATE 12, 32: PRINT "o" ELSE COLOR 7 LOCATE 12, 32: PRINT " " END IF LOCATE 12, 35: PRINT "Play game" IF mval = 2 THEN COLOR 9 LOCATE 14, 32: PRINT "o" ELSE COLOR 7 LOCATE 14, 32: PRINT " " END IF LOCATE 14, 35: PRINT "Options" IF mval = 3 THEN COLOR 9 LOCATE 16, 32: PRINT "o" ELSE COLOR 7 LOCATE 16, 32: PRINT " " END IF LOCATE 16, 35: PRINT "Hi-scores" IF mval = 4 THEN COLOR 9 LOCATE 18, 32: PRINT "o" ELSE COLOR 7 LOCATE 18, 32: PRINT " " END IF LOCATE 18, 35: PRINT "How to play" IF mval = 5 THEN COLOR 9 LOCATE 20, 32: PRINT "o" ELSE COLOR 7 LOCATE 20, 32: PRINT " " END IF LOCATE 20, 35: PRINT "Quit" DO m$ = INKEY$ LOOP UNTIL m$ <> "" SELECT CASE m$ CASE CHR$(0) + "H": IF mval > 1 THEN mval = mval - 1 IF ljud% = 1 THEN SOUND 200, 1.5 CASE CHR$(0) + "P": IF mval < 5 THEN mval = mval + 1 IF ljud% = 1 THEN SOUND 200, 1.5 CASE CHR$(13): GOTO hoppa END SELECT GOTO menyn hoppa: IF mval = 1 THEN GOTO slutet IF mval = 2 THEN CALL options IF mval = 3 THEN CALL hiscore IF mval = 4 THEN CALL help IF mval = 5 THEN COLOR 7 CLS 0 SHELL "echo Thank you for playing REJS" SHELL "echo Visit http://hem.passagen.se/gavelin/qbasic.htm for updates & other progs " SHELL "echo. " COLOR 0: SYSTEM END IF GOTO menyst slutet: speed = 0 v = 0 varv = 1 minut = 0 dam% = 0 u = v '--- Event trapping --- ON KEY(11) GOSUB gasa ON KEY(14) GOSUB bromsa ON KEY(13) GOSUB hoger ON KEY(12) GOSUB vanster ON STRIG(0) GOSUB gasa ON STRIG(4) GOSUB bromsa STRIG(0) OFF STRIG(4) OFF FOR n = 11 TO 14 KEY(n) OFF NEXT n CALL filhant Banval: SELECT CASE bana% CASE IS = 1: CALL bana1 CASE IS = 2: CALL bana2 CASE IS = 3: CALL bana3 CASE IS = 4: CALL bana4 CASE ELSE: bana% = 1: GOTO Banval END SELECT GOTO startet '********************************** '--- Rutiner vid h„ndelseinf†ng --- gasa: speed = speed + 1 IF speed > 25 THEN speed = 25 RETURN bromsa: speed = speed - 2 IF speed < 0 THEN speed = 0 RETURN vanster: v = v - .35 RETURN hoger: v = v + .35 RETURN toggle: ljud% = ljud% + 1 IF ljud% > 1 THEN ljud% = 0 PUT #1, 3, ljud% CALL filhant RETURN avsluta: CLS 0 COLOR 0 SYSTEM RETURN ' Grafik till introt DATA 04,04,04,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,04,04,04,04,04,00,00,00,00,00,00,00,00,00,00,00,00,00,00 DATA 00,04,04,04,04,04,04,04,04,08,08,08,08,00,00,00,00,00,00,00 DATA 00,00,04,04,04,04,04,04,04,04,08,08,08,08,04,04,00,00,00,00 DATA 00,00,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,00,00 DATA 00,00,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04 DATA 00,00,00,08,08,00,00,00,00,00,00,00,00,08,08,00,00,00,00,00 DATA 00,00,00,08,08,00,00,00,00,00,00,00,00,08,08,00,00,00,00,00 SUB bana1 CALL filhant '--- Spelet --- STRIG(0) OFF STRIG(4) OFF FOR n = 11 TO 14 KEY(n) OFF NEXT n CLS SCREEN 12 VIEW SCREEN (1, 1)-(639, 420), , 0 VIEW PRINT (29) TO (30) bilbana1 x = 165 y = 355 c = color1% cc = 0 v = 0 speed = 0 dam% = 0 dead% = 0 ritabil LINE (148, 310)-(152, 410), 15, BF CALL Start nolltid = TIMER ' Starten starttid = TIMER IF joy% = 0 THEN FOR n = 11 TO 14 KEY(n) ON NEXT n ELSE STRIG(0) ON STRIG(4) ON END IF CLS 2 DO UNTIL INKEY$ = CHR$(27) ' v c = color1% cc = 0 u = v IF dead% <> 1 THEN CALL ritabil '--- Fartminskning --- IF speed > 0 THEN speed = speed - .3 IF speed < 0 THEN speed = 0 IF joy% = 1 THEN DO jstick% = STICK(0) LOOP UNTIL jstick% < max1% + 10 AND jstick% > min1% - 10 SELECT CASE jstick% CASE IS > (cent1% + max1%) / 2: v = v + .25 ' H”ger / v„nster CASE IS < (cent1% + min1%) / 2: v = v - .25 END SELECT END IF '--- Ljud --- s = 37 + 10 * speed IF ljud% = 1 THEN SOUND s, 2 IF ljud% = 0 THEN SOUND 30000, 2 COLOR 15 tiden = TIMER - nolltid IF tiden < 1 THEN tid$ = STR$(minut) + "." + "00" + STR$(TIMER - nolltid) ELSEIF tiden < 10 THEN tid$ = STR$(minut) + "." + "0" + STR$(TIMER - nolltid) ELSEIF tiden >= 60 THEN minut = minut + 1 nolltid = TIMER tid$ = STR$(minut) + "." + STR$(TIMER - nolltid) ELSE tid$ = STR$(minut) + "." + STR$(TIMER - nolltid) END IF IF dead% = 0 THEN LOCATE 29, 2: PRINT tid$; SPACE$(2) IF dead% = 2 THEN LOCATE 29, 2: PRINT stid$; SPACE$(2) SELECT CASE varv CASE IS < 5: LOCATE 29, 14: PRINT "Lap: "; varv CASE IS = 5: COLOR 14: LOCATE 29, 14: PRINT "Final lap " CASE IS > 5: COLOR 14: LOCATE 29, 14: PRINT "==FINISH==" END SELECT COLOR 15 IF dam% > 99 THEN COLOR 4 LOCATE 29, 25: PRINT "Damage: "; dam%; LOCATE 29, 38: PRINT "%" LOCATE 29, 60: COLOR 9: PRINT "REJS v1.0" ' --- c = 7 cc = 7 IF dead% <> 1 THEN CALL ritabil dx = speed * COS(v) dy = speed * SIN(v) x = x + dx y = y + dy '--- Banans utseende --- IF x > 625 THEN CALL gameover IF x < 15 THEN CALL gameover IF y > 405 THEN CALL gameover IF y < 15 THEN CALL gameover IF x > 95 AND x < 545 AND y > 95 AND y < 315 THEN CALL gameover IF x > 530 AND y > 290 THEN k = 2 IF k = 2 AND y < 110 AND x > 530 THEN k = 1 IF y > 300 AND x > 140 AND x < 166 AND dx >= 0 THEN varv = varv + k: k = 0 IF y > 300 AND x > 140 AND x < 166 AND dx < 0 THEN k = 0 LINE (148, 310)-(152, 410), 15, BF ' D”d ? IF dead% = 1 THEN EXIT DO ' M†lg†ng IF varv > 5 THEN IF dead% = 0 THEN sluttid = TIMER - starttid konvert sluttid IF dead% = 0 THEN stid$ = tid$ dead% = 2 KEY(11) OFF STRIG(0) OFF IF speed = 0 THEN EXIT DO END IF LOOP ' ^ SELECT CASE dead% CASE IS = 0: CLS 2: PRINT " * Game aborted *": stoppa 1 CASE IS = 1: CLS 2: PRINT " You crashed and got burned to death.; GAME; OVER; ": stoppa 2 CASE IS = 2: CALL finish END SELECT END SUB SUB bana2 filhant '--- Spelet --- STRIG(0) OFF STRIG(4) OFF FOR n = 11 TO 14 KEY(n) OFF NEXT n CLS SCREEN 12 VIEW SCREEN (1, 1)-(639, 420), , 0 VIEW PRINT (29) TO (30) bilbana2 x = 165 y = 375 dam% = 0 c = color1% cc = 0 v = 0 speed = 0 dead% = 0 CALL ritabil LINE (148, 320)-(152, 410), 15, BF CALL Start starttid = TIMER nolltid = TIMER ' Start IF joy% = 0 THEN FOR n = 11 TO 14 KEY(n) ON NEXT n ELSE STRIG(0) ON STRIG(4) ON END IF CLS 2 DO UNTIL INKEY$ = CHR$(27) ' v c = color1% cc = 0 u = v CALL ritabil '--- Fartminskning --- speed = speed - .3 IF speed < 0 THEN speed = 0 IF joy% = 1 THEN DO jstick% = STICK(0) LOOP UNTIL jstick% < max1% + 10 AND jstick% > min1% - 10 SELECT CASE jstick% CASE IS > (cent1% + max1%) / 2: v = v + .25 ' H”ger / v„nster CASE IS < (cent1% + min1%) / 2: v = v - .25 END SELECT END IF '--- Ljud --- s = 37 + 10 * speed IF ljud% = 1 THEN SOUND s, 2 IF ljud% = 0 THEN SOUND 30000, 2 c = 7 cc = 7 CALL ritabil COLOR 15 tiden = TIMER - nolltid IF tiden < 1 THEN tid$ = STR$(minut) + "." + "00" + STR$(TIMER - nolltid) ELSEIF tiden < 10 THEN tid$ = STR$(minut) + "." + "0" + STR$(TIMER - nolltid) ELSEIF tiden >= 60 THEN minut = minut + 1 nolltid = TIMER tid$ = STR$(minut) + "." + STR$(TIMER - nolltid) ELSE tid$ = STR$(minut) + "." + STR$(TIMER - nolltid) END IF IF dead% = 0 THEN LOCATE 29, 2: PRINT tid$; SPACE$(2) IF dead% = 2 THEN LOCATE 29, 2: PRINT stid$; SPACE$(2) SELECT CASE varv CASE IS < 5: LOCATE 29, 14: PRINT "Lap: "; varv CASE IS = 5: COLOR 14: LOCATE 29, 14: PRINT "Final lap " CASE IS > 5: COLOR 14: LOCATE 29, 14: PRINT "==FINISH==" END SELECT COLOR 15 LOCATE 29, 25: PRINT "Damage: "; dam%; IF dam% > 99 THEN COLOR 4 LOCATE 29, 37: PRINT "%" LOCATE 29, 60: COLOR 9: PRINT "REJS v1.0" ' --- dx = speed * COS(v) dy = speed * SIN(v) x = x + dx y = y + dy '--- Banans utseende --- IF x > 625 THEN CALL gameover IF x < 15 THEN CALL gameover IF y > 405 THEN CALL gameover IF y < 15 THEN CALL gameover IF x > 85 AND x < 195 AND y > 85 AND y < 325 THEN CALL gameover IF y > 265 AND x > 275 AND x < 405 THEN CALL gameover IF x >= 195 AND x < 555 AND y > 90 AND y < 185 THEN CALL gameover IF x > 485 AND x < 555 AND y >= 180 AND y < 325 THEN CALL gameover IF x > 530 AND y > 290 THEN k = 2 IF k = 2 AND y < 110 AND x > 530 THEN k = 1 IF y > 300 AND x > 140 AND x < 166 AND dx >= 0 THEN varv = varv + k: k = 0 IF y > 300 AND x > 140 AND x < 166 AND dx < 0 THEN k = 0 LINE (148, 320)-(152, 410), 15, BF ' D”d IF dead% = 1 THEN EXIT DO ' M†lg†ng IF varv > 5 THEN IF dead% = 0 THEN sluttid = TIMER - starttid konvert sluttid IF dead% = 0 THEN stid$ = tid$ dead% = 2 KEY(11) OFF STRIG(0) OFF IF speed = 0 THEN EXIT DO END IF LOOP ' ^ SELECT CASE dead% CASE IS = 0: CLS 2: PRINT " * Game aborted * ": stoppa 1 CASE IS = 1: CLS 2: PRINT " You crashed and got burned to death. GAME OVER ": stoppa 2 CASE IS = 2: CALL finish END SELECT END SUB SUB bana3 filhant '--- Spelet --- STRIG(0) OFF STRIG(4) OFF FOR n = 11 TO 14 KEY(n) OFF NEXT n CLS SCREEN 12 VIEW SCREEN (1, 1)-(639, 420), , 0 VIEW PRINT (29) TO (30) bilbana3 x = 165 y = 370 dam% = 0 c = color1% cc = 0 v = 0 speed = 0 dead% = 0 CALL ritabil LINE (148, 310)-(152, 410), 15, BF CALL Start starttid = TIMER nolltid = TIMER ' Start IF joy% = 0 THEN FOR n = 11 TO 14 KEY(n) ON NEXT n ELSE STRIG(0) ON STRIG(4) ON END IF CLS 2 DO UNTIL INKEY$ = CHR$(27) ' v c = color1% cc = 0 u = v CALL ritabil '--- Fartminskning --- speed = speed - .3 IF speed < 0 THEN speed = 0 IF joy% = 1 THEN DO jstick% = STICK(0) LOOP UNTIL jstick% < max1% + 10 AND jstick% > min1% - 10 SELECT CASE jstick% CASE IS > (cent1% + max1%) / 2: v = v + .25 ' H”ger / v„nster CASE IS < (cent1% + min1%) / 2: v = v - .25 END SELECT END IF '--- Ljud --- s = 37 + 10 * speed IF ljud% = 1 THEN SOUND s, 2 IF ljud% = 0 THEN SOUND 30000, 2 c = 7 cc = 7 CALL ritabil COLOR 15 tiden = TIMER - nolltid IF tiden < 1 THEN tid$ = STR$(minut) + "." + "00" + STR$(TIMER - nolltid) ELSEIF tiden < 10 THEN tid$ = STR$(minut) + "." + "0" + STR$(TIMER - nolltid) ELSEIF tiden >= 60 THEN minut = minut + 1 nolltid = TIMER tid$ = STR$(minut) + "." + STR$(TIMER - nolltid) ELSE tid$ = STR$(minut) + "." + STR$(TIMER - nolltid) END IF IF dead% = 0 THEN LOCATE 29, 2: PRINT tid$; SPACE$(2) IF dead% = 2 THEN LOCATE 29, 2: PRINT stid$; SPACE$(2) SELECT CASE varv CASE IS < 5: LOCATE 29, 14: PRINT "Lap: "; varv CASE IS = 5: COLOR 14: LOCATE 29, 14: PRINT "Final lap " CASE IS > 5: COLOR 14: LOCATE 29, 14: PRINT "==FINISH==" END SELECT COLOR 15 LOCATE 29, 25: PRINT "Damage: "; dam%; IF dam% > 99 THEN COLOR 4 LOCATE 29, 37: PRINT "%" LOCATE 29, 60: COLOR 9: PRINT "REJS v1.0" ' --- dx = speed * COS(v) dy = speed * SIN(v) x = x + dx y = y + dy '--- Banans utseende --- IF x > 625 THEN CALL gameover IF x < 15 THEN CALL gameover IF y > 405 THEN CALL gameover IF y < 15 THEN CALL gameover IF x > 95 AND x < 125 AND y > 95 AND y < 315 THEN CALL gameover IF y > 195 AND y < 215 AND x > 195 THEN CALL gameover IF x > 120 AND x < 535 AND y > 95 AND y < 125 THEN CALL gameover IF x > 120 AND x < 535 AND y > 285 AND y < 315 THEN CALL gameover IF x > 530 AND y > 290 THEN k = 2 IF k = 2 AND y < 110 AND x > 530 THEN k = 1 IF y > 300 AND x > 140 AND x < 166 AND dx >= 0 THEN varv = varv + k: k = 0 IF y > 300 AND x > 140 AND x < 166 AND dx < 0 THEN k = 0 LINE (148, 310)-(152, 410), 15, BF ' D”d IF dead% = 1 THEN EXIT DO ' M†lg†ng IF varv > 5 THEN IF dead% = 0 THEN sluttid = TIMER - starttid konvert sluttid IF dead% = 0 THEN stid$ = tid$ dead% = 2 KEY(11) OFF STRIG(0) OFF IF speed = 0 THEN EXIT DO END IF LOOP ' ^ SELECT CASE dead% CASE IS = 0: CLS 2: PRINT " * Game aborted *": stoppa 1 CASE IS = 1: CLS 2: PRINT " You crashed and got burned to death. GAME OVER": stoppa 2 CASE IS = 2: CALL finish END SELECT END SUB SUB bana4 filhant '--- Spelet --- STRIG(0) OFF STRIG(4) OFF FOR n = 11 TO 14 KEY(n) OFF NEXT n CLS SCREEN 12 VIEW SCREEN (1, 1)-(639, 420), , 0 VIEW PRINT (29) TO (30) bilbana4 x = 165 y = 380 dam% = 0 c = color1% cc = 0 v = 0 speed = 0 dead% = 0 CALL ritabil LINE (148, 330)-(152, 410), 15, BF CALL Start starttid = TIMER nolltid = TIMER ' Start IF joy% = 0 THEN FOR n = 11 TO 14 KEY(n) ON NEXT n ELSE STRIG(0) ON STRIG(4) ON END IF CLS 2 DO UNTIL INKEY$ = CHR$(27) ' v c = color1% cc = 0 u = v CALL ritabil '--- Fartminskning --- speed = speed - .3 IF speed < 0 THEN speed = 0 IF joy% = 1 THEN DO jstick% = STICK(0) LOOP UNTIL jstick% < max1% + 10 AND jstick% > min1% - 10 SELECT CASE jstick% CASE IS > (cent1% + max1%) / 2: v = v + .25 ' H”ger / v„nster CASE IS < (cent1% + min1%) / 2: v = v - .25 END SELECT END IF '--- Ljud --- s = 37 + 10 * speed IF ljud% = 1 THEN SOUND s, 2 IF ljud% = 0 THEN SOUND 30000, 2 c = 7 cc = 7 CALL ritabil COLOR 15 tiden = TIMER - nolltid IF tiden < 1 THEN tid$ = STR$(minut) + "." + "00" + STR$(TIMER - nolltid) ELSEIF tiden < 10 THEN tid$ = STR$(minut) + "." + "0" + STR$(TIMER - nolltid) ELSEIF tiden >= 60 THEN minut = minut + 1 nolltid = TIMER tid$ = STR$(minut) + "." + STR$(TIMER - nolltid) ELSE tid$ = STR$(minut) + "." + STR$(TIMER - nolltid) END IF IF dead% = 0 THEN LOCATE 29, 2: PRINT tid$; SPACE$(2) IF dead% = 2 THEN LOCATE 29, 2: PRINT stid$; SPACE$(2) SELECT CASE varv CASE IS < 5: LOCATE 29, 14: PRINT "Lap: "; varv CASE IS = 5: COLOR 14: LOCATE 29, 14: PRINT "Final lap " CASE IS > 5: COLOR 14: LOCATE 29, 14: PRINT "==FINISH==" END SELECT COLOR 15 LOCATE 29, 25: PRINT "Damage: "; dam%; IF dam% > 99 THEN COLOR 4 LOCATE 29, 37: PRINT "%" LOCATE 29, 60: COLOR 9: PRINT "REJS v1.0" ' --- dx = speed * COS(v) dy = speed * SIN(v) x = x + dx y = y + dy '--- Banans utseende --- IF x > 625 THEN CALL gameover IF x < 15 THEN CALL gameover IF y > 405 THEN CALL gameover IF y < 15 THEN CALL gameover IF x > 75 AND x < 95 AND y > 75 AND y < 335 THEN CALL gameover IF x > 85 AND x < 225 AND y > 315 AND y < 335 THEN CALL gameover IF x > 205 AND x < 225 AND y > 85 AND y < 325 THEN CALL gameover IF x > 205 AND x < 425 AND y > 85 AND y < 115 THEN CALL gameover IF x > 405 AND x < 425 AND y > 105 AND y < 335 THEN CALL gameover IF x > 405 AND x < 565 AND y > 315 AND y < 335 THEN CALL gameover IF x > 545 AND x < 565 AND y > 75 AND y < 325 THEN CALL gameover IF x > 305 AND x < 325 AND y > 195 AND y < 425 THEN CALL gameover IF x > 145 AND x < 165 AND y > 10 AND y < 245 THEN CALL gameover IF x > 475 AND x < 495 AND y > 10 AND y < 245 THEN CALL gameover IF x > 530 AND y > 290 THEN k = 2 IF k = 2 AND y < 110 AND x > 530 THEN k = 1 IF y > 300 AND x > 140 AND x < 166 AND dx >= 0 THEN varv = varv + k: k = 0 IF y > 300 AND x > 140 AND x < 166 AND dx < 0 THEN k = 0 LINE (148, 330)-(152, 410), 15, BF ' D”d IF dead% = 1 THEN EXIT DO ' M†lg†ng IF varv > 5 THEN IF dead% = 0 THEN sluttid = TIMER - starttid konvert sluttid IF dead% = 0 THEN stid$ = tid$ dead% = 2 KEY(11) OFF STRIG(0) OFF IF speed = 0 THEN EXIT DO END IF LOOP ' ^ SELECT CASE dead% CASE IS = 0: CLS 2: PRINT " * Game aborted *": stoppa 1 CASE IS = 1: CLS 2: PRINT " You crashed and got burned to death. GAME OVER": stoppa 2 CASE IS = 2: CALL finish END SELECT END SUB SUB bilbana1 ' Kantlinjer LINE (0, 0)-(640, 10), 1, BF LINE STEP(0, 0)-(630, 420), 1, BF LINE STEP(0, 0)-(0, 410), 1, BF LINE STEP(0, 0)-(10, 0), 1, BF ' ™vriga linjer LINE (100, 100)-(530, 310), 1, BF PAINT (320, 60), 7, 1 END SUB SUB bilbana2 'kantlinjer LINE (0, 0)-(640, 10), 6, BF LINE STEP(0, 0)-(630, 420), 6, BF LINE STEP(0, 0)-(0, 410), 6, BF LINE STEP(0, 0)-(10, 0), 6, BF '”vriga linjer LINE (90, 90)-(190, 320), 6, BF LINE (280, 420)-(400, 270), 6, BF LINE (190, 90)-(490, 180), 6, BF LINE (490, 90)-(550, 320), 6, BF PAINT (320, 60), 7, 6 END SUB SUB bilbana3 ' Kantlinjer LINE (0, 0)-(640, 10), 4, BF LINE STEP(0, 0)-(630, 420), 4, BF LINE STEP(0, 0)-(0, 410), 4, BF LINE STEP(0, 0)-(10, 0), 4, BF ' ™vriga linjer LINE (100, 100)-(120, 310), 4, BF LINE (120, 310)-(530, 290), 4, BF LINE (100, 100)-(530, 120), 4, BF LINE (200, 200)-(630, 210), 4, BF PAINT (320, 60), 7, 4 END SUB SUB bilbana4 'kantlinjer LINE (0, 0)-(640, 10), 8, BF LINE STEP(0, 0)-(630, 420), 8, BF LINE STEP(0, 0)-(0, 410), 8, BF LINE STEP(0, 0)-(10, 0), 8, BF '”vriga linjer LINE (80, 80)-(90, 330), 8, BF LINE (90, 330)-(220, 320), 8, BF LINE (220, 320)-(210, 90), 8, BF LINE (210, 90)-(420, 110), 8, BF LINE (420, 110)-(410, 330), 8, BF LINE (410, 330)-(560, 320), 8, BF LINE (560, 320)-(550, 80), 8, BF LINE (310, 420)-(315, 200), 8, BF LINE (150, 10)-(160, 240), 8, BF LINE (480, 10)-(490, 240), 8, BF PAINT (320, 60), 7, 8 END SUB SUB calibrate CLS 0 COLOR 9 FOR lr = 4 TO 24 LOCATE lr, 15: PRINT "Û" NEXT lr FOR lk = 15 TO 65 LOCATE 24, lk: PRINT "Û" NEXT lk FOR lr = 4 TO 24 LOCATE lr, 65: PRINT "Û" NEXT lr FOR lk = 15 TO 65 LOCATE 4, lk: PRINT "Û" NEXT lk LOCATE 8, 22: PRINT "Calibrate joystick - press ESC to skip" COLOR 7 LOCATE 10, 20: PRINT "Move stick to upper left and press button" DO UNTIL STRIG(1) = -1 OR STRIG(5) = -1 OR STRIG(3) = -1 OR STRIG(7) = -1 IF INKEY$ = CHR$(27) THEN GOTO calslut LOCATE 12, 30: PRINT STICK(0); STICK(1) LOOP min% = STICK(0) stoppa .5 LOCATE 15, 20: PRINT "Move stick to lower right and press button" DO UNTIL STRIG(1) = -1 OR STRIG(5) = -1 OR STRIG(3) = -1 OR STRIG(7) = -1 IF INKEY$ = CHR$(27) THEN GOTO calslut LOCATE 17, 30: PRINT STICK(0); STICK(1) LOOP max% = STICK(0) stoppa .5 LOCATE 20, 20: PRINT "Center joystick and press button" DO UNTIL STRIG(1) = -1 OR STRIG(5) = -1 OR STRIG(3) = -1 OR STRIG(7) = -1 IF INKEY$ = CHR$(27) THEN GOTO calslut LOCATE 22, 30: PRINT STICK(0); STICK(1) LOOP cent% = STICK(0) stoppa .5 PUT #1, 7, max% PUT #1, 8, min% PUT #1, 9, cent% filhant calslut: CLS END SUB SUB filhant starrt: GET #1, 1, koll% IF koll% <> 8 THEN GOTO skapafil SEEK #1, 2 GET #1, , joy% GET #1, , ljud% GET #1, , bana% GET #1, , color1% GET #1, , color2% GET #1, , max1% GET #1, , min1% GET #1, , cent1% GOTO slutt skapafil: ' Standardv„rden koll% = 8 PUT #1, 1, koll% joy% = 0 PUT #1, 2, joy% ljud% = 1 PUT #1, 3, ljud% bana% = 1 PUT #1, 4, bana% color1% = 4 PUT #1, 5, color1% color2% = 2 PUT #1, 6, color2% max1% = 72 PUT #1, 7, max1% min1% = 2 PUT #1, 7, min1% cent1% = 34 PUT #1, 7, cent1% GOTO starrt slutt: END SUB SUB finish SCREEN 12 VIEW PRINT (1) TO (30) CLS 0 COLOR 15 LOCATE 4, 1: PRINT "Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û " LOCATE 5, 1: PRINT " Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û" LOCATE 6, 1: PRINT "Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û " LOCATE 7, 1: PRINT " Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û" LOCATE 8, 1: PRINT "Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û " LOCATE 2, 22: PRINT " T H E F I N I S H L I N E " COLOR 14: LOCATE 3, 31: PRINT bannamn(bana%): COLOR 15 ' Kolla om tiden „r hiscore... postnr% = bana% * 10 FOR m = postnr% TO postnr% + 10 GET #2, m, hidata IF sluttid < hidata.score THEN EXIT FOR NEXT m konvert sluttid IF m >= postnr% + 10 THEN LOCATE 13, 15: PRINT "Your time was "; tid$ IF m < postnr% + 9 THEN FOR f = postnr% + 8 TO m STEP -1 GET #2, f, hidata PUT #2, (f + 1), hidata NEXT f END IF IF m < postnr% + 10 THEN LOCATE 13, 15: PRINT "Your time was "; tid$; " That's a new hi-score!!!" LOCATE 15, 15: INPUT "Enter your name please: ", hidata.namn hidata.score = sluttid PUT #2, m, hidata END IF 'Visa listan FOR lr = 17 TO 29 LOCATE lr, 25: PRINT "Û" NEXT lr FOR lk = 25 TO 55 LOCATE 17, lk: PRINT "Û" NEXT lk FOR lr = 17 TO 29 LOCATE lr, 55: PRINT "Û" NEXT lr FOR lk = 25 TO 55 LOCATE 29, lk: PRINT "Û" NEXT lk plac% = 1 LOCATE 18, 33: PRINT "H I - S C O R E S" FOR g = 19 TO 28 GET #2, postnr%, hidata konvert hidata.score LOCATE g, 27: PRINT plac%; hidata.namn: LOCATE g, 46: PRINT tid$ postnr% = postnr% + 1 plac% = plac% + 1 NEXT g DO UNTIL INKEY$ <> "" LOOP END SUB SUB gameover IF ljud% = 1 THEN SOUND 150, 1' BONK! IF dead% = 0 THEN dam% = INT(dam% + .02 * speed ^ 2) IF dam% > 100 THEN dam% = 100 IF dam% = 100 THEN c = color1% cc = 0 ritabil COLOR 14 FOR p% = 1 TO 12 snd% = p% * 100 REM CIRCLE (x, y), .8 * p%, 4 IF ljud% = 1 THEN SOUND snd%, .7 IF ljud% = 0 THEN SOUND 20000, .7 LINE (x, y)-(x + 1.5 * p%, y) LINE (x, y)-(x - 1.5 * p%, y) LINE (x, y)-(x + p%, y + p%) LINE (x, y)-(x - p%, y + p%) LINE (x, y)-(x, y + 1.5 * p%) LINE (x, y)-(x, y - 1.5 * p%) LINE (x, y)-(x - p%, y - p%) LINE (x, y)-(x + p%, y - p%) CIRCLE (x, y), .8 * p%, 4 NEXT p% COLOR 4 PRINT " B O O M ! ! ! ! " IF ljud% = 1 THEN PLAY "mf o1 l16 d p16 dddd" dead% = 1 stoppa 1 ELSE x = x - 2 * dx y = y - 2 * dy speed = speed - 5 IF speed < 0 THEN speed = 0 END IF END SUB SUB help CLS 0 COLOR 9 FOR lr = 4 TO 24 LOCATE lr, 15: PRINT "Û" NEXT lr FOR lk = 15 TO 65 LOCATE 24, lk: PRINT "Û" NEXT lk FOR lr = 4 TO 24 LOCATE lr, 65: PRINT "Û" NEXT lr FOR lk = 15 TO 65 LOCATE 4, lk: PRINT "Û" NEXT lk LOCATE 7, 32: PRINT "HOW TO PLAY" COLOR 7 LOCATE 9, 22: PRINT "The object of this game is easy" LOCATE 10, 18: PRINT "Just try to race 5 laps as fast as you can" LOCATE 11, 20: PRINT "and try not to crash against the walls" LOCATE 12, 23: PRINT "Use numeric keypad to play" LOCATE 13, 23: PRINT "(Make sure NUM LOCK is on)" COLOR 9: LOCATE 14, 50: PRINT "JOYSTICK:" COLOR 9: LOCATE 15, 17: PRINT "KEYS:" COLOR 7: LOCATE 15, 30: PRINT "8 - accelerate" LOCATE 15, 50: PRINT "(button A)" LOCATE 16, 30: PRINT "2 - brake" LOCATE 16, 50: PRINT "(button B)" LOCATE 17, 30: PRINT "4 - turn left" LOCATE 17, 50: PRINT "(left)" LOCATE 18, 30: PRINT "6 - turn right" LOCATE 18, 50: PRINT "(right)" LOCATE 19, 30: PRINT "" LOCATE 20, 35: PRINT "F8 - Toggle sound" LOCATE 21, 35: PRINT "ESC - Abort race" LOCATE 22, 35: PRINT "F10 - Quick exit" DO WHILE INKEY$ = "" LOOP IF ljud% = 1 THEN SOUND 200, 1.5 END SUB SUB hiscore CLS 0 COLOR 9 FOR lr = 2 TO 29 LOCATE lr, 10: PRINT "Û" NEXT lr FOR lk = 10 TO 70 LOCATE 29, lk: PRINT "Û" NEXT lk FOR lr = 2 TO 29 LOCATE lr, 70: PRINT "Û" NEXT lr FOR lk = 10 TO 70 LOCATE 2, lk: PRINT "Û" NEXT lk LOCATE 4, 13: PRINT " * * * T H E H A L L O F F A M E * * * " bana% = 1 postnr% = bana% * 10 plac% = 1 LOCATE 6, 20: PRINT bannamn(bana%) COLOR 7 FOR g = 7 TO 16 GET #2, postnr%, hidata konvert hidata.score LOCATE g, 14: PRINT plac%; hidata.namn: LOCATE g, 33: PRINT tid$ postnr% = postnr% + 1 plac% = plac% + 1 NEXT g bana% = 2 postnr% = bana% * 10 plac% = 1 COLOR 9: LOCATE 6, 45: PRINT bannamn(bana%) COLOR 7 FOR g = 7 TO 16 GET #2, postnr%, hidata konvert hidata.score LOCATE g, 41: PRINT plac%; hidata.namn: LOCATE g, 60: PRINT tid$ postnr% = postnr% + 1 plac% = plac% + 1 NEXT g bana% = 3 postnr% = bana% * 10 plac% = 1 COLOR 9: LOCATE 18, 20: PRINT bannamn(bana%) COLOR 7 FOR g = 19 TO 28 GET #2, postnr%, hidata konvert hidata.score LOCATE g, 14: PRINT plac%; hidata.namn: LOCATE g, 33: PRINT tid$ postnr% = postnr% + 1 plac% = plac% + 1 NEXT g bana% = 4 postnr% = bana% * 10 plac% = 1 COLOR 9: LOCATE 18, 45: PRINT bannamn(bana%) COLOR 7 FOR g = 19 TO 28 GET #2, postnr%, hidata konvert hidata.score LOCATE g, 41: PRINT plac%; hidata.namn: LOCATE g, 60: PRINT tid$ postnr% = postnr% + 1 plac% = plac% + 1 NEXT g DO WHILE INKEY$ = "" LOOP CLS 0 END SUB SUB intro DIM bil1(160) DIM bil2(160) SCREEN 7, 0, 1, 0 COLOR 15, 0 FOR s = 1 TO 15 COLOR s LOCATE 12, 3: PRINT " Robert Gavelin proudly presents..." PCOPY 1, 0 IF INKEY$ <> "" THEN EXIT SUB stoppa .08 NEXT s FOR by = 1 TO 8 FOR bx = 1 TO 20 READ z PSET (bx, by), z NEXT bx NEXT by GET (0, 0)-(20, 8), bil1 RESTORE FOR by = 1 TO 8 FOR bx = 20 TO 1 STEP -1 READ z PSET (bx, by), z NEXT bx NEXT by GET (0, 0)-(20, 8), bil2 CLS ' kapprejs †t h”ger FOR x = 0 TO 350 STEP 5 IF INKEY$ <> "" THEN EXIT SUB IF ljud% = 1 THEN SOUND 40 + .1 * x, .4 IF ljud% = 0 THEN SOUND 20000, .4 IF x < 295 THEN PUT (x, 100), bil1, PSET ' bilen som „r f”re IF x > 45 AND x < 285 THEN PUT (1.2 * x - 45, 120), bil1, PSET ' efter PCOPY 1, 0 CLS NEXT x SOUND 20000, 4 ' siren FOR a = 1 TO 14 STEP .02 IF INKEY$ <> "" THEN EXIT SUB s = 2000 * SIN(a) IF ljud% = 1 THEN SOUND (2600 + s), .03 IF ljud% = 0 THEN SOUND 20000, .03 NEXT a ' kapprejs †t v„nster FOR x = 350 TO 0 STEP -5 IF INKEY$ <> "" THEN EXIT SUB IF ljud% = 1 THEN SOUND 40 + .2 * x, .4 IF ljud% = 0 THEN SOUND 20000, .4 IF x < 295 THEN PUT (x, 100), bil2, PSET ' bilen som „r f”re IF x > 45 AND x < 285 THEN PUT (1.1 * x - 45, 120), bil2, PSET ' efter PCOPY 1, 0 CLS NEXT x SOUND 20000, 10 CLS PCOPY 1, 0 ' r„serk”rning FOR x = 1 TO 300 STEP 5 IF INKEY$ <> "" THEN EXIT SUB IF ljud% = 1 AND x <= 200 THEN SOUND 80 + .2 * x, .25 IF ljud% = 1 AND x > 200 THEN SOUND 120 - .5 * (x - 200), .25 IF ljud% = 0 THEN SOUND 20000, .25 PUT (x, 150), bil1, PSET PCOPY 1, 0 CLS NEXT x SOUND 20000, 10 CLS PCOPY 1, 0 ' krock FOR x = 1 TO 140 STEP 5 IF INKEY$ <> "" THEN EXIT SUB IF ljud% = 1 THEN SOUND 60 + .4 * x, .3 IF ljud% = 0 THEN SOUND 20000, .3 PUT (x, 96), bil1 PUT (300 - x, 96), bil2 PCOPY 1, 0 CLS NEXT x FOR r = 1 TO 180 STEP 3 IF INKEY$ <> "" THEN EXIT SUB IF ljud% = 1 THEN SOUND 100 + r, .2 IF ljud% = 0 THEN SOUND 20000, .2 CIRCLE (150, 96), r, 14 PCOPY 1, 0 NEXT r PLAY "mf o1" IF INKEY$ <> "" THEN EXIT SUB IF ljud% = 1 THEN PLAY "L16 ed L4 e P64 L4 L16 fe L32 f P8 e P8 L4 d P4" IF ljud% = 0 THEN stoppa .5 ' rita logga COLOR 1, 15 LOCATE 7, 1 PRINT " " PRINT " ÛÛÛÛÛ ÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛ TM " PRINT " Û Û Û Û Û " PRINT " Û Û Û Û Û " PRINT " Û Û Û Û Û " PRINT " Û Û Û Û ÛÛ " PRINT " ÛÛÛÛÛ ÛÛÛ Û ÛÛÛ " PRINT " Û Û Û Û Û ÛÛ " PRINT " Û Û Û Û Û ÛÛ " PRINT " Û Û Û ÛÛÛÛ ÛÛ " PRINT " Û Û ÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛ " PRINT " " PRINT " A Qbasic game by Robert Gavelin " PRINT " " LINE (0, 0)-(320, 200), 9, B LINE (10, 50)-(310, 160), 9, B PAINT (150, 15), 9, 9 PCOPY 1, 0 IF ljud% = 1 THEN IF INKEY$ <> "" THEN EXIT SUB IF ljud% = 1 THEN PLAY "L16 fe L4 f P64 L4 d P64 c L32 d P8 c P8 d P8 L4 c P4" IF INKEY$ <> "" THEN EXIT SUB IF ljud% = 1 THEN PLAY "L16 ed L4 e P64 L4 L16 fe L32 f P8 e P8 L4 d P4 " IF INKEY$ <> "" THEN EXIT SUB IF ljud% = 1 THEN PLAY "L16 fe L4 f P64 L4 d P64 c L32 d P8 c P8 d P8 L4 c P4" ELSE IF INKEY$ <> "" THEN EXIT SUB stoppa 2 END IF END SUB SUB konvert (tiid) ' Konvertera sluttid till minuter, sekunder etc... tidmin% = INT(tiid / 60) tidsek% = INT(tiid - 60 * tidmin%) tid10% = INT((tiid - INT(tiid)) * 10) IF tidsek% < 10 THEN temp$ = "0" ELSE temp$ = "" END IF tid$ = RTRIM$(STR$(tidmin%)) + "." + RTRIM$(temp$) + LTRIM$(STR$(tidsek%)) + "." + LTRIM$(STR$(tid10%)) 'klart END SUB SUB nylista hidata.namn = "korrekt" hidata.score = 4 PUT #2, 1, hidata SEEK #2, 10 'bana 1 hidata.namn = "Robert Gavelin": hidata.score = 40.001 PUT #2, , hidata hidata.namn = "J. Villeneuve": hidata.score = 45.001 PUT #2, , hidata hidata.namn = "Alain Prost": hidata.score = 50.001 PUT #2, , hidata hidata.namn = "M. Schumacher": hidata.score = 55.001 PUT #2, , hidata hidata.namn = "Rikard Rydell": hidata.score = 60.001 PUT #2, , hidata hidata.namn = "Martin Gavelin": hidata.score = 65.001 PUT #2, , hidata hidata.namn = "Simon Gavelin": hidata.score = 75.001 PUT #2, , hidata hidata.namn = "Grandpa": hidata.score = 100.001 PUT #2, , hidata hidata.namn = "Grandma": hidata.score = 130.001 PUT #2, , hidata hidata.namn = "S. Snail": hidata.score = 180.001 PUT #2, , hidata 'bana 2 hidata.namn = "Robert Gavelin": hidata.score = 50.001 PUT #2, , hidata hidata.namn = "Homer Simpson": hidata.score = 55.001 PUT #2, , hidata hidata.namn = "Bart Simpson": hidata.score = 60.001 PUT #2, , hidata hidata.namn = "Marge Simpson": hidata.score = 65.001 PUT #2, , hidata hidata.namn = "Lisa Simpson": hidata.score = 75.001 PUT #2, , hidata hidata.namn = "Maggie Simpson": hidata.score = 90.001 PUT #2, , hidata hidata.namn = "Ned Flanders": hidata.score = 110.001 PUT #2, , hidata hidata.namn = "Barney": hidata.score = 140.001 PUT #2, , hidata hidata.namn = "Smithers": hidata.score = 170.001 PUT #2, , hidata hidata.namn = "mr. Burns": hidata.score = 200.001 PUT #2, , hidata 'bana 3 hidata.namn = "Robert Gavelin": hidata.score = 65.001 PUT #2, , hidata hidata.namn = "Al Bundy": hidata.score = 70.001 PUT #2, , hidata hidata.namn = "Bud Bundy": hidata.score = 75.001 PUT #2, , hidata hidata.namn = "Peggy Bundy": hidata.score = 80.001 PUT #2, , hidata hidata.namn = "Kelly Bundy": hidata.score = 85.001 PUT #2, , hidata hidata.namn = "Buck the dog": hidata.score = 90.001 PUT #2, , hidata hidata.namn = "Lucky the dog": hidata.score = 110.001 PUT #2, , hidata hidata.namn = "Jefferson": hidata.score = 140.001 PUT #2, , hidata hidata.namn = "Steve": hidata.score = 170.001 PUT #2, , hidata hidata.namn = "Marcy D'Arcy": hidata.score = 200.001 PUT #2, , hidata 'bana 4 hidata.namn = "Robert Gavelin": hidata.score = 110.001 PUT #2, , hidata hidata.namn = "Accelerator": hidata.score = 115.001 PUT #2, , hidata hidata.namn = "Hypermaniac": hidata.score = 120.001 PUT #2, , hidata hidata.namn = "Screamager": hidata.score = 125.001 PUT #2, , hidata hidata.namn = "Teethgrinder": hidata.score = 135.001 PUT #2, , hidata hidata.namn = "Brainsaw": hidata.score = 165.001 PUT #2, , hidata hidata.namn = "Neck Freak": hidata.score = 200.001 PUT #2, , hidata hidata.namn = "Hjalle": hidata.score = 230.001 PUT #2, , hidata hidata.namn = "Heavy": hidata.score = 260.001 PUT #2, , hidata hidata.namn = "looser": hidata.score = 300.001 PUT #2, , hidata END SUB SUB options CLS 0 SCREEN 12 VIEW PRINT (1) TO (30) oval = 1 optst: COLOR 9 FOR lr = 4 TO 24 LOCATE lr, 15: PRINT "Û" NEXT lr FOR lk = 15 TO 65 LOCATE 24, lk: PRINT "Û" NEXT lk FOR lr = 4 TO 24 LOCATE lr, 65: PRINT "Û" NEXT lr FOR lk = 15 TO 65 LOCATE 4, lk: PRINT "Û" NEXT lk LOCATE 8, 29: PRINT " * * * O P T I O N S * * * " optionss: IF oval < 1 THEN oval = 1 IF oval > 6 THEN oval = 6 IF oval = 1 THEN COLOR 9 LOCATE 12, 32: PRINT "o" ELSE COLOR 7 LOCATE 12, 32: PRINT " " END IF LOCATE 12, 35: PRINT "Game control: "; IF joy% = 0 THEN PRINT "Keypad " IF joy% = 1 THEN PRINT "Joystick" IF oval = 2 THEN COLOR 9 LOCATE 14, 32: PRINT "o" ELSE COLOR 7 LOCATE 14, 32: PRINT " " END IF LOCATE 14, 35: PRINT "Track: "; bannamn(bana%); SPACE$(5) IF oval = 3 THEN COLOR 9 LOCATE 16, 32: PRINT "o" ELSE COLOR 7 LOCATE 16, 32: PRINT " " END IF LOCATE 16, 35: PRINT "Sound: "; IF ljud% = 1 THEN PRINT "ON " ELSEIF ljud% = 0 THEN PRINT "OFF" END IF IF oval = 4 THEN COLOR 9 LOCATE 18, 32: PRINT "o" ELSE COLOR 7 LOCATE 18, 32: PRINT " " END IF LOCATE 18, 35: PRINT "Set car colour" IF oval = 5 THEN COLOR 9 LOCATE 20, 32: PRINT "o" ELSE COLOR 7 LOCATE 20, 32: PRINT " " END IF LOCATE 20, 35: PRINT "Calibrate joystick" IF oval = 6 THEN COLOR 9 LOCATE 22, 32: PRINT "o" ELSE COLOR 7 LOCATE 22, 32: PRINT " " END IF LOCATE 22, 35: PRINT "Previous menu" DO m$ = INKEY$ LOOP UNTIL m$ <> "" SELECT CASE m$ CASE CHR$(0) + "H" IF oval > 1 THEN oval = oval - 1 IF ljud% = 1 THEN SOUND 200, 1.5 CASE CHR$(0) + "P" IF oval < 6 THEN oval = oval + 1 IF ljud% = 1 THEN SOUND 200, 1.5 CASE CHR$(13): GOTO hoppaopt END SELECT GOTO optionss hoppaopt: IF oval = 1 THEN SELECT CASE joy% CASE IS = 1: joy% = 0 CASE IS = 0: joy% = 1 END SELECT stoppa .1 ELSEIF oval = 2 THEN bana% = bana% + 1 IF bana% > 4 THEN bana% = 1 stoppa .1 ELSEIF oval = 3 THEN ljud% = ljud% + 1 IF ljud% > 1 THEN ljud% = 0 stoppa .1 ELSEIF oval = 4 THEN CALL setcolor ELSEIF oval = 5 THEN CALL calibrate ELSEIF oval = 6 THEN GOTO slutopt END IF PUT #1, 2, joy% PUT #1, , ljud% PUT #1, , bana% PUT #1, , color1% PUT #1, , color2% filhant GOTO optst slutopt: PUT #1, 2, joy% PUT #1, , ljud% PUT #1, , bana% PUT #1, , color1% PUT #1, , color2% CALL filhant END SUB SUB ritabil CONST pi = 3.141592654# COLOR c rx = COS(u) ' Parallell ry = SIN(u) kx = COS(u + .5 * pi) ' Vinkelr„t KY = SIN(u + .5 * pi) pettx = x + 8 * rx petty = y + 8 * ry ptvax = x - 8 * rx ptvay = y - 8 * ry REM LINE (pettx, petty)-(ptvax, ptvay) ptrex = ptvax + 4 * kx ptrey = ptvay + 4 * KY pfyrx = pettx + 2 * kx pfyry = petty + 2 * KY pfemx = ptvax - 4 * kx pfemy = ptvay - 4 * KY psexx = pettx - 2 * kx psexy = petty - 2 * KY LINE (ptrex, ptrey)-(pfyrx, pfyry) LINE (ptrex, ptrey)-(pfemx, pfemy) LINE (psexx, psexy)-(pfyrx, pfyry) LINE (psexx, psexy)-(pfemx, pfemy) LINE (x + 3 * rx + 1 * kx, y + 3 * ry + 1 * KY)-(x + 3 * rx - 1 * kx, y + 3 * ry - 1 * KY) LINE (x + 3 * rx + 1 * kx, y + 3 * ry + 1 * KY)-(x - 4 * rx + 2 * kx, y - 4 * ry + 2 * KY) LINE (x - 4 * rx + 2 * kx, y - 4 * ry + 2 * KY)-(x - 4 * rx - 2 * kx, y - 4 * ry - 2 * KY) LINE (x - 4 * rx - 2 * kx, y - 4 * ry - 2 * KY)-(x + 3 * rx - 1 * kx, y + 3 * ry - 1 * KY) ' --- d„ck --- LINE (x - 4 * rx + 4 * kx, y - 4 * ry + 4 * KY)-STEP(-3 * rx, -3 * ry), cc LINE (x - 4 * rx - 4 * kx, y - 4 * ry - 4 * KY)-STEP(-3 * rx, -3 * ry), cc LINE (x - 4 * rx + 5 * kx, y - 4 * ry + 5 * KY)-STEP(-3 * rx, -3 * ry), cc LINE (x - 4 * rx - 5 * kx, y - 4 * ry - 5 * KY)-STEP(-3 * rx, -3 * ry), cc LINE (x + 7 * rx + 3 * kx, y + 7 * ry + 3 * KY)-STEP(-2 * rx, -2 * ry), cc LINE (x + 7 * rx - 3 * kx, y + 7 * ry - 3 * KY)-STEP(-2 * rx, -2 * ry), cc LINE (x + 7 * rx + 4 * kx, y + 7 * ry + 4 * KY)-STEP(-2 * rx, -2 * ry), cc LINE (x + 7 * rx - 4 * kx, y + 7 * ry - 4 * KY)-STEP(-2 * rx, -2 * ry), cc END SUB SUB setcolor cstart: CLS COLOR 9 FOR lr = 4 TO 24 LOCATE lr, 15: PRINT "Û" NEXT lr FOR lk = 15 TO 65 LOCATE 24, lk: PRINT "Û" NEXT lk FOR lr = 4 TO 24 LOCATE lr, 65: PRINT "Û" NEXT lr FOR lk = 15 TO 65 LOCATE 4, lk: PRINT "Û" NEXT lk COLOR 9 LOCATE 8, 25: PRINT "Press ENTER to change colour" LOCATE 9, 29: PRINT "Press ESC when ready" x = 320 y = 240 CIRCLE (320, 240), 25, 7 PAINT (320, 240), 7, 7 DO UNTIL INKEY$ = CHR$(27) u = u + .25 c = color1% cc = 0 ritabil stoppa .2 c = 7 cc = 7 ritabil tryck$ = INKEY$ IF tryck$ = CHR$(27) THEN EXIT DO ELSEIF tryck$ = CHR$(13) THEN IF ljud% = 1 THEN SOUND 200, 1.5 color1% = color1% + 1 IF color1% > 15 THEN color1% = 1 IF color1% = 7 THEN color1% = 9 ELSE END IF LOOP SOUND 200, 1.5 PUT #1, 5, color1% CLS END SUB SUB Start COLOR 15 LOCATE , 25: PRINT "Get ready to REJS !! " IF ljud% = 1 THEN SOUND 37, 30 stoppa (1.5) PLAY "o3" PLAY "l4" PLAY "mf" COLOR 4 FOR kl = 1 TO 80 LOCATE 29, kl: PRINT "Û" NEXT kl IF ljud% = 1 THEN PLAY "c" stoppa 1 COLOR 14 FOR kl = 1 TO 80 LOCATE 29, kl: PRINT "Û" NEXT kl IF ljud% = 1 THEN PLAY "c" stoppa 1 COLOR 10 FOR kl = 1 TO 80 LOCATE 29, kl: PRINT "Û" NEXT kl IF ljud% = 1 THEN PLAY "o4l2c" stoppa 1 END SUB SUB stoppa (n!) tidnoll = TIMER DO WHILE difftid < n difftid = TIMER - tidnoll LOOP END SUB