'===========================================================================
' Subject: HOT SHOOT                          Date: 01-03-00 (06:18)       
'  Author: Mahesh R. Menon                    Code: QB, QBasic, PDS        
'  Origin: mahesh_rmenon@hotmail.com        Packet: GAMES.ABC
'===========================================================================
CLS

SCREEN 0        '----------- screen mode

'------------------- for printing instructions
   COL = 1
   ASH$ = STRING$(4, 176): ASH1$ = STRING$(4, 177): ASH2$ = STRING$(4, 178)
   ASH3$ = STRING$(15, 232)
   OUT$ = STRING$(75, 205): OUT1$ = STRING$(1, 201): OUT2$ = STRING$(1, 187)
   OUT3$ = STRING$(1, 186): OUT4$ = STRING$(1, 200): OT5$ = STRING$(1, 188)
   FOR CL = 1 TO 15
   COLOR COL
   LOCATE 2, 4: PRINT OUT1$
   LOCATE 2, 5: PRINT OUT$
   LOCATE 2, 80: PRINT OUT2$
   
   LOCATE 18, 4: PRINT OUT4$
   LOCATE 18, 5: PRINT OUT$
   FOR MNO = 3 TO 17
   LOCATE MNO, 4: PRINT OUT3$
   LOCATE MNO, 80: PRINT OUT3$
   NEXT MNO
   LOCATE 18, 80: PRINT OT5$
  
   LOCATE 4, 7: PRINT ASH$; ASH1$; ASH2$; ASH3$; " GAME CONTROLS "; ASH3$; ASH2$; ASH1$; ASH$
   LOCATE 8, 25: PRINT " 1] LEFT ARROW TO GO LEFT "
   LOCATE 9, 25: PRINT " 2] RIGHT ARROW TO GO RIGHT "
   LOCATE 10, 25: PRINT " 3] UP ARROW TO GO RIGHT "
   LOCATE 11, 25: PRINT " 4] DOWN ARROW TO GO RIGHT "
   LOCATE 12, 25: PRINT " 5] SPACE BAR TO HIT "
   LOCATE 15, 28: PRINT "PRESS ANY KEY TO CONTINUE..."
   SLEEP (1)
   IF COL > 14 THEN COL = 0
   COL = COL + 1
   IF INKEY$ <> "" THEN GOTO 7
   NEXT CL
   CLS

7  SCREEN 1
   a = 1: B = 2: C = 50: D = 60
   FOR x = 1 TO 15
   FOR Z = 1 TO 90000
   NEXT Z
   CIRCLE (156, 93), 65, a, , , .6
   CIRCLE (156, 93), 75, B, , , .6
   C = C + 10: D = D + 10
   SWAP a, B
   NEXT x
   LOCATE 12, 14
   PRINT "* HOt-ShOOt *"
   SLEEP (2)
   CLS

'------------------------------------------------------------- for printing 5
        SCREEN 7
        COLOR 13
        FOR ST = 2 TO 19
        LOCATE 12, ST: PRINT "5"
        LOCATE 12, ST - 1: PRINT " "
       
        FOR CN = 1 TO 20000     '--------------- delay for the next position
        NEXT CN
        NEXT ST

       
     O = 3: O1 = 14  '--------- to change the color attributes for the circle

        FOR S = 10 TO 60        '--------- radius of the circle
        CIRCLE (146, 90), S, O   '------ O=1 when radius = 10
        FOR CN1 = 1 TO 10000    '-------- delay for the next circle
        NEXT CN1
        CIRCLE (145, 90), S, 0  '-------- change the color of the circle to black
        SWAP O, O1              '--------- swap the color
        NEXT S

        CLS
       
'------------------------------------------------------- for printing 4
      
        COLOR 9
        FOR st1 = 2 TO 12
        LOCATE st1, 19: PRINT "4"
        LOCATE st1 - 1, 19: PRINT " "
      
        FOR CN = 1 TO 30000
        NEXT CN
        NEXT st1

        O2 = 12: O3 = 3

        FOR S3 = 10 TO 60
        CIRCLE (146, 90), S3, O2
        FOR CN1 = 1 TO 10000
        NEXT CN1
        CIRCLE (147, 90), S3, 0
        SWAP O2, O3
        NEXT S3
        CLS

'------------------------------------------------ for printing 3
       
        COLOR 3
        FOR ST5 = 38 TO 19 STEP -1
        LOCATE 12, ST5: PRINT "3"
        LOCATE 12, ST5 + 1: PRINT " "
      
        FOR CN = 1 TO 20000
        NEXT CN
        NEXT ST5

     O4 = 10: O5 = 11

        FOR S = 10 TO 60
        CIRCLE (146, 90), S, O4
        FOR CN1 = 1 TO 10000
        NEXT CN1
        CIRCLE (145, 90), S, 0
        SWAP O4, O5
        NEXT S

        CLS

'------------------------------- for printing 2

        COLOR 14
        FOR st4 = 24 TO 12 STEP -1
        LOCATE st4, 19: PRINT "2"
        LOCATE st4 + 1, 19: PRINT " "
     
        FOR CN = 1 TO 25000
        NEXT CN
        NEXT st4

        Ot2 = 10: Ot3 = 13

        FOR S3 = 10 TO 60
        CIRCLE (146, 90), S3, Ot2
        FOR CN1 = 1 TO 10000
        NEXT CN1
        CIRCLE (147, 90), S3, 0
        SWAP Ot2, Ot3
        NEXT S3
        CLS

'------------------------------------------ for printing GO !!!

        LOCATE 4, 7
        COLOR 3, 0: PRINT "READY . . ."
        SLEEP (1)
        LOCATE 4, 7: PRINT "             "

        LOCATE 17, 23
        COLOR 9, 0: PRINT "GET SET . . "
        SLEEP (1)
        LOCATE 17, 23: PRINT "            "

        LOCATE 12, 12
        COLOR 14, 0: PRINT " GO . . ...! ! !"
        FOR lk = 1 TO 40000
        NEXT lk

'------------------------ start of the program . . .

SCREEN 1
CLS
LINE (3, 8)-(317, 185), 2, B
ROW = 21: sr = 20: sc = 3: er = 21: ec = 38: SPEED = 48000: HIT = 0
SCORE1 = 0: MISS1 = 0
COLUMN = 21
LOCATE 25, 2
a$ = STRING$(1, 177)
PRINT "   ***** HOt-ShOOt *****"; "  "; a$; " q - Quit"; a$

1   a = 3: B = 2

     FOR i = 3 TO 36
     LINE (3, 141)-(317, 143), 2, B
     LOCATE a, B
     PRINT " O "
     FOR A1 = 1 TO SPEED
     NEXT A1

     B = B + 1
     
     KEYED$ = INKEY$
       
       
        LOCATE ROW, COLUMN
   IF KEYED$ = CHR$(0) + "H" THEN ROW = ROW - 1
   IF ROW <= sr THEN ROW = sr
      LOCATE ROW + 1, COLUMN: PRINT " "
     
  IF KEYED$ = CHR$(0) + "P" THEN ROW = ROW + 1
  IF ROW >= er THEN ROW = er
     LOCATE ROW - 1, COLUMN: PRINT " "

  IF KEYED$ = CHR$(0) + "K" THEN COLUMN = COLUMN - 1
  IF COLUMN <= sc THEN COLUMN = sc
     LOCATE ROW, COLUMN + 1: PRINT " "
      
  IF KEYED$ = CHR$(0) + "M" THEN COLUMN = COLUMN + 1
  IF COLUMN >= ec THEN COLUMN = ec
     LOCATE ROW, COLUMN - 1: PRINT " "
 
  IF KEYED$ = "Q" OR KEYED$ = "q" THEN GOTO 2
 
   LOCATE ROW, COLUMN
   PRINT "U"
 
  IF KEYED$ = " " OR KEYED$ = " " THEN
   MAC1 = ROW: mac2 = COLUMN
   h1 = 2
   FOR I2 = 1 TO 17
   LOCATE MAC1 - h1, mac2
   PRINT "."
   FOR i1 = 1 TO 2222
   NEXT i1
   LOCATE MAC1 - h1, mac2
   PRINT " "
   h1 = h1 + 1
   NEXT I2
  
   IF COLUMN <> i THEN
        MISS1 = MISS1 + 1
   ELSE
        HIT = HIT + 1
        SCORE1 = SCORE1 + 1
  
   IF HIT > 2 THEN
   SPEED = SPEED - 4500
   IF HIT = 11 THEN GOTO 12
   END IF
   LOCATE 16, 30: PRINT "HIT "; HIT: SLEEP (1): LOCATE 16, 30: PRINT "       "
   GOTO 1
  
   END IF
   END IF
   
   NEXT i
          GOTO 1

'----------------------------------------------------- Level 2 . . .

12 CLS
   SCREEN 1
   a = 1: B = 2: C = 50: D = 60
   FOR x = 1 TO 15
   FOR Z = 1 TO 90000
   NEXT Z
   CIRCLE (156, 93), 50, a, , , .6
   CIRCLE (156, 93), 60, B, , , .6
   C = C + 10: D = D + 10
   SWAP a, B
   NEXT x
   LOCATE 12, 16
   PRINT "LEVEL 2..."
   SLEEP (2)
   CLS


LINE (3, 8)-(317, 185), 2, B
ROW = 21: sr = 20: sc = 3: er = 21: ec = 38: SPEED1 = 47000: HIT1 = 0
SCORE2 = 0: MISS2 = 0
COLUMN = 21
LOCATE 25, 2
a$ = STRING$(1, 177)
PRINT "   ***** HOt-ShOOt *****"; "  "; a$; " q - Quit"; a$


13      a = 3: B = 2: X1 = 5: Y1 = 75: X2 = 65: Y2 = 80
       
        FOR MW = 3 TO 35
        LINE (3, 141)-(317, 143), 2, B
        LOCATE a, B
        PRINT " . "
        FOR A1 = 1 TO SPEED1
        NEXT A1
        B = B + 1
     
        KEYED$ = INKEY$
     
        LOCATE ROW, COLUMN
                IF KEYED$ = CHR$(0) + "H" THEN ROW = ROW - 1
                IF ROW <= sr THEN ROW = sr
                LOCATE ROW + 1, COLUMN: PRINT " "
  
                IF KEYED$ = CHR$(0) + "P" THEN ROW = ROW + 1
                IF ROW >= er THEN ROW = er
                LOCATE ROW - 1, COLUMN: PRINT " "

                IF KEYED$ = CHR$(0) + "K" THEN COLUMN = COLUMN - 1
                IF COLUMN <= sc THEN COLUMN = sc
                LOCATE ROW, COLUMN + 1: PRINT " "
   
                IF KEYED$ = CHR$(0) + "M" THEN COLUMN = COLUMN + 1
                IF COLUMN >= ec THEN COLUMN = ec
                LOCATE ROW, COLUMN - 1: PRINT " "

                IF KEYED$ = "Q" OR KEYED$ = "q" THEN GOTO 2

        LOCATE ROW, COLUMN
        PRINT "U"

                IF KEYED$ = " " OR KEYED$ = " " THEN
                MAC1 = ROW: mac2 = COLUMN
                h1 = 2
                FOR I2 = 1 TO 17
                LOCATE MAC1 - h1, mac2
                PRINT "."
                FOR i1 = 1 TO 2222
                NEXT i1
                LOCATE MAC1 - h1, mac2
                PRINT " "
                h1 = h1 + 1
                NEXT I2
               
                IF COLUMN <> MW THEN
                        MISS2 = MISS2 + 1
              
                ELSE
                        HIT1 = HIT1 + 1
                        SCORE2 = SCORE2 + 1
               
                IF HIT1 > 2 THEN
                SPEED1 = SPEED1 - 4500
               
                IF HIT1 = 11 THEN GOTO 2
                END IF
                LOCATE 16, 30: PRINT "HIT "; HIT1: SLEEP (1): LOCATE 16, 30: PRINT "       "
                GOTO 13

   END IF
   END IF

  
   NEXT MW
          GOTO 13

'---------------------------------------------- Score-board . . .

2 CLS
      
       SCREEN 2
       SCREEN 0
      
       TOTAL1 = 0: TOTAL2 = 0
       DO
       LOCATE 2, 2: PRINT "------------------------------------------------------------------------"
       LOCATE 3, 30: PRINT " SCORE - BOARD "
       LOCATE 4, 2: PRINT "------------------------------------------------------------------------"
       LOCATE 6, 10: PRINT "FOR EACH HIT 100 POINTS"
       LOCATE 8, 10: PRINT "FOR EACH MISS MINUS 50 POINTS"
       LOCATE 12, 10: PRINT "HITS OF 1ST & 2nd LEVEL : "; SCORE1; SCORE2
       LOCATE 14, 10: PRINT "MISSES OF 1st & 2nd LEVEL: "; MISS1; MISS2
       TOTAL1 = SCORE1 * 100 - MISS1 * 50
       TOTAL2 = SCORE2 * 100 - MISS2 * 50
       LOCATE 16, 10: PRINT "TOTAL OF 1st LEVEL: "; TOTAL1
       LOCATE 17, 10: PRINT "TOTAL OF 2nd LEVEL: "; TOTAL2
       LOOP UNTIL INKEY$ <> ""
     
       CLS




       DO
       q1 = 14
       FOR j = 1 TO 58
       LOCATE 6, q1
       PRINT "-"
       LOCATE 18, q1
       PRINT "-"
       q1 = q1 + 1
       NEXT j
     
       q = 7: p = 42
     
       FOR i = 6 TO 16
       LOCATE q, 15
       PRINT "|"
       LOCATE q, 70
       PRINT "|"
       q = q + 1
       NEXT i
       LOCATE 8, 24
       PRINT "*** THANK YOU FOR PLAYING HOt ShOOt ***"
       LOCATE 10, 24
       PRINT "              * Note *                 "
       LOCATE 12, 24
       PRINT "Runs faster when compiled using Q-BASIC"
       LOCATE 17, 52
       PRINT " - MAHESH R MENON "
       LOCATE 14, 26
       PRINT " e-MAIL: mahesh_rmenon@hotmail.com "
       LOOP UNTIL INKEY$ <> ""
       END
