'===========================================================================
' Subject: BeText Car Race                    Date: 06-11-03 (  :  )       
'  Author: Jagdish Vankar                     Code: Qbasic, QB, PDS, PB    
'  Origin: jagdish_vankar@indiatimes.com    Packet: TEXT.ABC
'===========================================================================
 


'ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ-Ä-Äúú ú
'³ *** Car Racer ***                    
'³qbasic
'³ Programmed by Jagdish Vankar.

  16-04-03 
'³ E-mail: jagdish_vankar@indiatimes.com
'ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ-Ä-Äúú ú


' make race car game
' first of all make road
' plot car
' give the road running finish
' that will be all for a startup

DECLARE SUB delay (duration!)
DIM hs(10)
FOR i = 1 TO 10
 hs(i) = 0
NEXT i
 
newstart:
RANDOMIZE TIMER
SCREEN 0, 0, 0
CLS
COLOR 14, 0
FOR i = 1 TO 9
 LOCATE i + 6, 1
 PRINT "Session High "; i; " "; hs(i)
NEXT i

LOCATE 1, 33
PRINT "Car Racer"
LOCATE 21, 25
COLOR 13, 0
PRINT "   Fast     Med    Slow"
COLOR 12, 0
LOCATE 22, 23
PRINT "Programmed by - Jagdish Vankar."
carpos = 37
oc1 = 2
oc2 = 2
oc3 = 2
score = 0
start:
FOR i = 2 TO 20
IF i MOD 2 = 0 THEN
COLOR 2, 0
LOCATE i, 25
PRINT CHR$(176)
'LOCATE i, 33
'PRINT CHR$(179)
'LOCATE i, 42
'PRINT CHR$(179)
LOCATE i, 50
PRINT CHR$(176)
ELSE
COLOR 1, 0
LOCATE i, 25
PRINT CHR$(176)
'LOCATE i, 33
'PRINT " "
'LOCATE i, 42
'PRINT " "
LOCATE i, 50
PRINT CHR$(176)
END IF
NEXT i
delay .5
IF oc1 = 2 AND exist1 = 0 THEN exist1 = INT(RND * 10)
IF exist1 = 8 THEN
LOCATE oc1, 29
PRINT "  "
oc1 = oc1 + .25
IF (oc1 = 19 OR oc1 = 20) AND carpos = 29 THEN GOTO exit1
IF oc1 = 20 THEN oc1 = 2: exist1 = 0: GOTO n1
LOCATE oc1, 29
PRINT STRING$(2, CHR$(178))
SOUND 100, .0! 5
ELSE
exist1 = 0
END IF

IF oc2 = 2 AND exist2 = 0 THEN exist2 = INT(RND * 10)
IF exist2 = 4 THEN
LOCATE oc2, 37
PRINT "  "
oc2 = oc2 + .5
IF (oc2 = 19 OR oc2 = 20) AND carpos = 37 THEN GOTO exit1
IF oc2 = 20 THEN oc2 = 2: exist2 = 0: GOTO n1
LOCATE oc2, 37
PRINT STRING$(2, CHR$(178))
SOUND 200, .05
ELSE
exist2 = 0
END IF

IF oc3 = 2 AND exist3 = 0 THEN exist3 = INT(RND * 10)
IF exist3 = 2 THEN
LOCATE oc3, 45
PRINT "  "
oc3 = oc3 + 1
IF (oc3 = 19 OR oc3 = 20) AND carpos = 45 THEN GOTO exit1
IF oc3 = 20 THEN oc3 = 2: exist3 = 0: GOTO n1
LOCATE oc3, 45
PRINT STRING$(2, CHR$(178))
SOUND 300, .05
ELSE
exist3 = 0
END IF

n1:
FOR i = 2 TO 20
IF i MOD 2 = 0 THEN
COLOR 1, 0
LOCATE i, 25
PRINT CHR$(176)
'LOCATE i, 33
'PRINT " "
'LOCATE i, 42
'PRINT " "
LOCATE i, 50
PRINT CHR$(176)
ELSE
COLOR 2, 0
LOCATE i, 25
PRINT CHR$(176)
LOCATE i, 33
PRINT CHR$(179)
LOCATE i, 42
PRINT CHR$(179)
LOCATE i, 50
PRINT CHR$(176)
END IF
NEXT i
delay .4
score = score + 1
IF carpos = 37 THEN
LOCATE 20, 37
PRINT STRING$(2, CHR$(178))
END IF
IF carpos = 29 THEN
LOCATE 20, 29
PRINT STRING$(2, CHR$(178))
END IF
IF carpos = 45 THEN
LOCATE 20, 45
PRINT STRING$(2, CHR$(178))
END IF


j$ = INKEY$
LOCATE 20, 1
PRINT "KM = "; score
IF j$ = "" THEN GOTO start
IF ASC(RIGHT$(j$, 1)) = 75 THEN
 IF carpos = 29 THEN SOUND 1000, .1: GOTO start
 LOCATE 20, carpos
 PRINT STRING$(2, " ")
 IF carpos = 37 THEN carpos = 29: SOUND 2000, .1
 IF carpos = 45 THEN carpos = 37: SOUND 2000, .1
 GOTO start
END IF
IF ASC(RIGHT$(j$, 1)) = 77 THEN
 IF carpos = 45 THEN SOUND 1000, .1: GOTO start
 LOCATE 20, carpos
 PRINT STRING$(2, " ")
 IF carpos = 37 THEN carpos = 45: SOUND 2000, .1
 IF carpos = 29 THEN carpos = 37: SOUND 2000, .1
 GOTO start
END IF
IF ASC(RIGHT$(j$, 1)) = 27 THEN
 GOTO exit3
END IF

SOUND 1000, .1
GOTO start
exit1:
 FOR i = 1 TO 50
  SOUND INT(RND * 100) + 100, .2
 NEXT i

FOR i = 1 TO 10
  IF score > hs(i) THEN
   FOR j = 9 TO i + 1 STEP -1
   hs(j) = hs(j - 1)
   NEXT j
   hs(i) = score
   GOTO printhigh
  END IF
NEXT i

printhigh:
FOR i = 1 TO 9
 LOCATE i + 6, 1
 PRINT "Session High "; i; " "; hs(i)
NEXT i

LOCATE 21, 25
PRINT "      Play again(Y/N)     ";
exit2:
j$ = INPUT$(1)
IF j$ = "y" OR j$ = "Y" THEN GOTO newstart
IF j$ = "n" OR j$ = "N" OR ASC(j$) = 27 THEN
exit3:
 COLOR 2, 0
 LOCATE 21, 25
 PRINT "           bye           "
 END
ELSE
GOTO exit2
END IF

SUB delay (duration)
totalmovedelay = 5000 * duration
FOR delaycntr = 1 TO totalmovedelay: NEXT delaycntr
END SUB

