'===========================================================================
' Subject: QBASIC PCMAN                       Date: 07-07-96 (00:14)       
'  Author: Akarsha Vasant Kumar               Code: QB, QBasic, PDS        
'  Origin: avkumar@giasbm01.vsnl.net.in     Packet: GAMES.ABC
'===========================================================================
'--------------------------------------------------------------------------
'|||||||||||||                QBASIC  PCMAN              ||||||||||||||||||
'--------------------------------------------------------------------------
'                       --- Akarsha V. Kumar

'HI !! I'm a high school student and I waste a lotta time programming in
'Qbasic ( My mom doesn't like it one bit tho !!)
'I haven't really completed this game . You can go ahead and complete
'it. I have used the screen function to find which charachter is printed
'at a specific point .This greatly reduces the program size and speed
'as one does not require to feed in the maze data into an array .
'The mazes are printed at the bottom of the program and you can make your
'own mazes as I have done by simply typing in the designs .
'The program should work on any maze provided to it .Don't blame me if it dosen't !!
'The program also includes a subroutine for drawing bordered boxes .
'The monsters are not very smart and are absolutely incapable
'of chasing MR.PCMAN very well .Moreover , the monsters delete the numbers
'while moving over them . You can make the necessary additions .
'I'm too LAZY !!
'NOTE : The program may crawl on slow computers . Try compiling it .
'       Better still , change the delay times

DECLARE SUB DRAWDBLBOX (X1, Y1, X2, Y2)

TIMER ON
RANDOMIZE TIMER
LEVEL = 1
SCREEN 0, , 1

FOR I = 1 TO 5
CLS
CALL DRAWDBLBOX(40 - 7 * I, 10 - I, 40 + 7 * I, 12 + I)
STARTIME = TIMER
DO
TIME = TIMER
LOOP UNTIL TIME - STARTIME > .05

NEXT I

 LOCATE 8, 18: PRINT "°°°°°°   °°°°°°   °°°   °°°  °°°°°°°   °°°    °  "
 LOCATE 9, 18: PRINT "°    °   °        °  ° °  °  °     °   °  °   °  "
LOCATE 10, 18: PRINT "±±±±±±   ±        ±   ±   ±  ±±±±±±±   ±   ±  ±  "
LOCATE 11, 18: PRINT "±        ±        ±       ±  ±     ±   ±    ± ±  "
LOCATE 12, 18: PRINT "²        ²        ²       ²  ²     ²   ²     ²²  "
LOCATE 13, 18: PRINT "²        ²²²²²²   ²       ²  ²     ²   ²      ²  "

LOCATE 15, 27: PRINT "PROGRAMMED BY : AKARSHA V. KUMAR"

LOCATE 22, 35: PRINT "PRESS A KEY ...."
DO: LOOP UNTIL INPUT$(1) <> ""

FOR I = 1 TO 5
CLS
CALL DRAWDBLBOX(40 - 3 * I, 10 - I, 45 + 3 * I, 15 + I)
STARTIME = TIMER
DO
TIME = TIMER
LOOP UNTIL TIME - STARTIME > .05

NEXT I

LOCATE 8, 29: PRINT " USE THE FOLLOWING KEYS ...."
LOCATE 10, 42: PRINT CHR$(24)
LOCATE 11, 40: PRINT CHR$(27); SPC(3); CHR$(26)
LOCATE 12, 42: PRINT CHR$(25)
LOCATE 14, 37: PRINT "S ==> SHOOT "
LOCATE 15, 37: PRINT "Q ==> QUIT"
LOCATE 17, 35: COLOR 10, 0: PRINT "(+) ==> PACMAN": COLOR 2, 0
LOCATE 18, 35: PRINT "[-] ==> MONSTERS"
DO: LOOP UNTIL INPUT$(1) <> ""
1 LIFE = 5

CLS

'declarations
DIM MONSTERROW
DIM MONSTERCOL
DIM MONSTERORIENT$
DIM DIR

'determine which maze to draw
IF LEVEL = 1 THEN MONSTEREDRAW = 0: direction$ = "": GOSUB 9999
IF LEVEL = 2 THEN MONSTEREDRAW = 0: direction$ = "": GOSUB 9998
IF LEVEL = 3 THEN MONSTEREDRAW = 0: direction$ = "": GOSUB 9997
IF LEVEL > 3 THEN MONSTEREDRAW = 0: direction$ = "": GOSUB VICTORY

SCORE = 1

LOCATE 22, 25: PRINT "LEVEL "; LEVEL
DO: LOOP UNTIL INPUT$(1) <> ""

SHOT = NUMMONST * 3

FOR I = 1 TO NUMMONST
DIR(I) = INT(RND * 3) + 1
MONSTERPOS(I) = 1
NEXT I

START:

'redraw maze if all monsters are shot
IF MONSTEREDRAW = 1 AND LEVEL = 1 THEN GOSUB 9999
IF MONSTEREDRAW = 1 AND LEVEL = 2 THEN GOSUB 9998
IF MONSTEREDRAW = 1 AND LEVEL = 3 THEN GOSUB 9997

LOCATE PCMANROW, PCMANCOL
PRINT "   "

K$ = INKEY$
IF K$ = CHR$(0) + "H" THEN GOSUB UP
IF K$ = CHR$(0) + "P" THEN GOSUB DOWN
IF K$ = CHR$(0) + "K" THEN GOSUB LEFT
IF K$ = CHR$(0) + "M" THEN GOSUB RIGHT
IF UCASE$(K$) = "S" THEN GOSUB SHOOT
IF UCASE$(K$) = "Q" THEN GOSUB QUIT

IF direction$ = "LEFT" THEN PCMANCOL = PCMANCOL - 1
IF direction$ = "RIGHT" THEN PCMANCOL = PCMANCOL + 1
IF direction$ = "UP" THEN PCMANROW = PCMANROW - 1
IF direction$ = "DOWN" THEN PCMANROW = PCMANROW + 1

IF PCMANROW <= 1 THEN PCMANROW = 19
IF PCMANROW >= 20 THEN PCMANROW = 2
IF PCMANCOL <= 1 THEN PCMANCOL = 57
IF PCMANCOL >= 58 THEN PCMANCOL = 1

'check if pcman hits the walls
FOR X = 0 TO 2
A = SCREEN(PCMANROW, PCMANCOL + X)
IF CHR$(A) = "#" THEN SOUND (150), 1: GOSUB CHANGEDIR
NEXT X

'check if pcman hits numbers
FOR X = 0 TO 2
B = SCREEN(PCMANROW, PCMANCOL + X)
IF VAL(CHR$(B)) < 10 AND VAL(CHR$(B)) > 0 THEN SOUND (300), 1: NOOFFRUITS = NOOFFRUITS - 1: SCORE = SCORE + VAL(CHR$(B))
NEXT X

GOSUB DRAWMONST

IF LIFE <= 0 THEN : FOR Y = 10 TO 14: FOR X = 25 TO 44: LOCATE Y, X: PRINT CHR$(178): NEXT X: NEXT Y: LOCATE 12, 31: PRINT "GAME OVER": SLEEP (2): CLS : SYSTEM

IF SCORE > 200 THEN LEVEL = LEVEL + 1: GOTO 1

COLOR 10, 8
LOCATE PCMANROW, PCMANCOL
PRINT "(+)"
COLOR 2, 0

LOCATE 23, 1, 0, 0
PRINT "LIVES :"; LIFE
LOCATE 23, 20
PRINT "BULLETS :"; SHOT
LOCATE 23, 40
PRINT "SCORE :"; SCORE

GOTO START

END

'change direction if pcman hits wall
CHANGEDIR:
IF direction$ = "LEFT" THEN PCMANCOL = PCMANCOL + 1: direction$ = "RIGHT": RETURN
IF direction$ = "RIGHT" THEN PCMANCOL = PCMANCOL - 1: direction$ = "LEFT": RETURN
IF direction$ = "UP" THEN PCMANROW = PCMANROW + 1: direction$ = "DOWN": RETURN
IF direction$ = "DOWN" THEN PCMANROW = PCMANROW - 1: direction$ = "UP": RETURN
RETURN

LEFT:
A = SCREEN(PCMANROW, PCMANCOL - 1)
IF CHR$(A) = "#" THEN RETURN
direction$ = "LEFT"
RETURN

RIGHT:
A = SCREEN(PCMANROW, PCMANCOL + 3)
IF CHR$(A) = "#" THEN RETURN
direction$ = "RIGHT"
RETURN

UP:
IF PCMANROW = 1 THEN RETURN
FOR X = 0 TO 2
A = SCREEN(PCMANROW - 1, PCMANCOL + X)
IF CHR$(A) = "#" THEN RETURN
NEXT X
direction$ = "UP"
RETURN

DOWN:
FOR X = 0 TO 2
A = SCREEN(PCMANROW + 1, PCMANCOL + X)
IF CHR$(A) = "#" THEN RETURN
NEXT X
direction$ = "DOWN"
RETURN

'subroutine for shooting bullets
SHOOT:

IF SHOT = 0 OR PCMANROW = 1 OR PCMANCOL = 1 THEN RETURN

SHOT = SHOT - 1
COLOR 10, 0
I = 1
'check for walls around pcman and draw bullets
170 IF direction$ = "LEFT" THEN A = PCMANROW: B = PCMANCOL - I: C = SCREEN(A, B): IF CHR$(C) = "#" THEN SOUND (100), 1: RETURN:  ELSE LOCATE PCMANROW, PCMANCOL - I: PRINT CHR$(27)
IF direction$ = "RIGHT" THEN A = PCMANROW: B = PCMANCOL + 3 + I: C = SCREEN(A, B): IF CHR$(C) = "#" THEN SOUND (100), 1: RETURN:  ELSE LOCATE PCMANROW, PCMANCOL + 3 + I: PRINT CHR$(26)
IF direction$ = "UP" THEN A = PCMANROW - I: B = PCMANCOL + 1: C = SCREEN(A, B): IF CHR$(C) = "#" THEN SOUND (100), 1: RETURN:  ELSE LOCATE PCMANROW - I, PCMANCOL + 1: PRINT CHR$(24)
IF direction$ = "DOWN" THEN A = PCMANROW + I: B = PCMANCOL + 1: C = SCREEN(A, B): IF CHR$(C) = "#" THEN SOUND (100), 1: RETURN:  ELSE LOCATE PCMANROW + I, PCMANCOL + 1: PRINT CHR$(25)
LOCATE PCMANROW, PCMANCOL: PRINT "(+)"

FOR DELAY = 1 TO 200: NEXT DELAY

IF direction$ = "LEFT" THEN LOCATE PCMANROW, PCMANCOL - I
IF direction$ = "RIGHT" THEN LOCATE PCMANROW, PCMANCOL + 3 + I
IF direction$ = "UP" THEN LOCATE PCMANROW - I, PCMANCOL + 1
IF direction$ = "DOWN" THEN LOCATE PCMANROW + I, PCMANCOL + 1
PRINT " "
LOCATE PCMANROW, PCMANCOL: PRINT "   "

'return if bullet goes out of maze limits
IF A >= 20 OR A < 2 THEN RETURN
IF B >= 60 OR B < 2 THEN RETURN

'check whether bullet hits monster
FOR X = 1 TO NUMMONST
IF MONSTERPOS(X) = 1 AND B >= MONSTERCOL(X) AND B < MONSTERCOL(X) + 3 AND A = MONSTERROW(X) THEN PLAY "CFC": MONSTERPOS(X) = 0: LOCATE MONSTERROW(X), MONSTERCOL(X): PRINT "   ": SCORE = SCORE + 50: RETURN
NEXT X
I = I + 1: GOTO 170

RETURN

DRAWMONST:

'draw pcman
COLOR 10, 8
LOCATE PCMANROW, PCMANCOL
PRINT "(+)"
COLOR 2, 0

'erase monster
FOR I = 1 TO NUMMONST
IF MONSTERPOS(I) = 0 THEN GOTO 5
LOCATE MONSTERROW(I), MONSTERCOL(I): PRINT "   "
5 NEXT I

' if monster moves out of maze , produce it at the other end
FOR I = 1 TO NUMMONST
IF MONSTERPOS(I) = 0 THEN GOTO 20
IF MONSTERCOL(I) <= 1 THEN MONSTERCOL(I) = 55
IF MONSTERCOL(I) >= 57 THEN MONSTERCOL(I) = 2
IF MONSTERROW(I) <= 1 THEN MONSTERROW(I) = 19
IF MONSTERROW(I) >= 20 THEN MONSTERROW(I) = 2

' check if pcman touches monster
IF PCMANCOL > MONSTERCOL(I) - 3 AND PCMANCOL < MONSTERCOL(I) + 3 AND PCMANROW = MONSTERROW(I) THEN PLAY "EC": LOCATE PCMANROW, PCMANCOL: PRINT " ": LIFE = LIFE - 1: PCMANROW = YY: PCMANCOL = XX: SCORE = SCORE - 50: RETURN

'This routine checks for walls and changes monster direction
'Have to develop a better logic for this part.
SELECT CASE DIR(I)

CASE 1

FOR X = 0 TO 2
A = SCREEN(MONSTERROW(I) + 1, MONSTERCOL(I) + X)
IF CHR$(A) = "#" THEN GOTO 10
NEXT X
MONSTERROW(I) = MONSTERROW(I) + 1: GOTO 20
10 A = SCREEN(MONSTERROW(I), MONSTERCOL(I) - 1)
IF CHR$(A) <> "#" THEN MONSTERCOL(I) = MONSTERCOL(I) - 1 ELSE DIR(I) = 4

CASE 2

FOR X = 0 TO 2
A = SCREEN(MONSTERROW(I) - 1, MONSTERCOL(I) + X)
IF CHR$(A) = "#" THEN GOTO 30
NEXT X
MONSTERROW(I) = MONSTERROW(I) - 1: GOTO 20
30 A = SCREEN(MONSTERROW(I), MONSTERCOL(I) + 3)
IF CHR$(A) <> "#" THEN MONSTERCOL(I) = MONSTERCOL(I) + 1 ELSE DIR(I) = 3

CASE 3
A = SCREEN(MONSTERROW(I), MONSTERCOL(I) - 1)
IF CHR$(A) <> "#" THEN MONSTERCOL(I) = MONSTERCOL(I) - 1: GOTO 20
FOR X = 0 TO 2
A = SCREEN(MONSTERROW(I) - 1, MONSTERCOL(I))
IF CHR$(A) = "#" THEN DIR(I) = 1: GOTO 20
NEXT X
MONSTERROW(I) = MONSTERROW(I) - 1

CASE 4
A = SCREEN(MONSTERROW(I), MONSTERCOL(I) + 3)
IF CHR$(A) <> "#" THEN MONSTERCOL(I) = MONSTERCOL(I) + 1: GOTO 20
FOR X = 0 TO 2
A = SCREEN(MONSTERROW(I) + 1, MONSTERCOL(I))
IF CHR$(A) = "#" THEN DIR(I) = 2: GOTO 20
NEXT X
MONSTERROW(I) = MONSTERROW(I) + 1

END SELECT

20 NEXT I

'Draw monsters
FOR I = 1 TO NUMMONST
IF MONSTERPOS(I) = 0 THEN GOTO 60
COLOR 10, 2
LOCATE MONSTERROW(I), MONSTERCOL(I)
PRINT "[-]"
COLOR 2, 0
60 NEXT I

' Check if all monsters are dead
FOR I = 1 TO NUMMONST
IF MONSTERPOS(I) <> 0 THEN GOTO 100
NEXT I
MONSTEREDRAW = 1
FOR I = 1 TO NUMMONST
MONSTERPOS(I) = 1
NEXT I

100 STARTIME = TIMER
DO
TIME = TIMER
LOOP UNTIL TIME - STARTIME > .1

RETURN
								    
VICTORY:
CLS
 LOCATE 8, 8: PRINT "Û     Û      ÛÛ      Û     Û      Û       Û      Û    ÛÛÛ     Û"
 LOCATE 9, 8: PRINT " Û   Û     ÛÛ  ÛÛ    Û     Û      Û       Û      Û    ÛÛ Û    Û"
LOCATE 10, 8: PRINT "  ÛÛÛ     Û      Û   Û     Û      Û       Û      Û    ÛÛ  Û   Û"
LOCATE 11, 8: PRINT "   Û      Û      Û   Û     Û      Û   Û   Û      Û    ÛÛ   Û  Û"
LOCATE 12, 8: PRINT "   Û       ÛÛ  ÛÛ    Û     Û       Û  Û  Û       Û    ÛÛ    Û Û"
LOCATE 13, 8: PRINT "   Û         ÛÛ      ÛÛÛÛÛÛÛ        ÛÛ ÛÛ        Û    ÛÛ     ÛÛ"

LOCATE 22, 35: PRINT "SCORE :"; SCORE
PLAY "O2 L5CL8DE-P14FL4G>P10 C P14 <L5A-L7B->CP14<L4G P8 L8FE-P14DL4C"
SYSTEM

QUIT:
LOCATE 23, 1: PRINT "                                                       "
PCOPY 1, 2
FOR Y = 10 TO 14
FOR X = 20 TO 39
LOCATE Y, X: PRINT CHR$(177)
NEXT X
NEXT Y
LOCATE 12, 23: INPUT "QUIT ?(Y/N):", ANS$: ANS$ = UCASE$(ANS$)
IF ANS$ = "Y" THEN
LOCATE 1, 1: FOR X = 1 TO 80:  FOR Y = 1 TO 23: LOCATE Y, X: PRINT " "; : NEXT Y: NEXT X
CLS
CALL DRAWDBLBOX(15, 5, 69, 17)
LOCATE 7, 17: PRINT "This incomplete game has been written in QuickBasic"
LOCATE 8, 22: PRINT "You are free to distribute it as you like."
LOCATE 9, 22: PRINT "  Suggestions on how to make those stupid "
LOCATE 10, 18: PRINT "monsters move more sensibly are ever welcome !!!"
LOCATE 12, 28: PRINT "Do send in comments at:"
LOCATE 13, 27: PRINT "avkumar@giasbm01.vsnl.net.in"

LOCATE 15, 30: PRINT "Thanks for playing..."
DO: LOOP UNTIL INKEY$ <> ""

SYSTEM
END IF

LOCATE 23, 1: PRINT "                                                       "
PCOPY 2, 1
SCREEN 0, , 1
RETURN

' These sub-routines contain the data for drawing mazes as well as monster
' and pcman init positions . You can add your own mazes . If you want to
' increase or decrease maze size , some minor changes have to be made to
' the prog. parts which check if monsters.etc have strayed out of the maze .
' Try to follow a similar pattern while making the mazes .

9999
SHOT = NUMMONST
	LOCATE 1, 1, 1
	NUMMONST = 3
	NOOFFRUITS = 20
	COLOR 2, 0
	PRINT "##############################################   ###########"
	PRINT "#### 4 ######## 4         5      #############   ###########"
	PRINT "####   ########   ############################   ###########"
	PRINT "####   ########   #######                      1          ##"
	PRINT "####   ########   #######   ##################   ####   ####"
	PRINT "#### 9          4         5 ##################   ####   ####"
	PRINT "#########   ###################### 9 ################   ####"
	PRINT "#########   ######################   ############# 2      ##"
	PRINT "#########   ######################   ################   ####"
	PRINT "######### 9                #######   #############        ##"
	PRINT "#########   ############ 5 #######   #############   ##   ##"
	PRINT "## 7   ##   ############             #############   ##   ##"
	PRINT "####   ##   ############   ##############            ##   ##"
	PRINT "####   ## 9       ######   #######################   ##   ##"
	PRINT "####   ##   ###   ######   #######################   ## 2 ##"
	PRINT "####   ##   ######################################   #######"
	PRINT "     5                   4                         1        "
	PRINT "####   ####   ################################   #   #######"
	PRINT "## 8   ####           9           ############   #    2  ###"
	PRINT "##############################################   ###########"
	  
FOR I = 1 TO 3
140 MONSTERROW(I) = INT(RND * 20) + 1
MONSTERCOL(I) = INT(RND * 56) + 1
FOR X = 0 TO 2
IF SCREEN(MONSTERROW(I), MONSTERCOL(I) + X) = 35 THEN GOTO 140
NEXT X
NEXT I
	  
	IF MONSTEREDRAW = 1 THEN MONSTEREDRAW = 0: RETURN
	LET PCMANROW = 20: YY = 20
	LET PCMANCOL = 47: XX = 47
110 RETURN

REM ----------------------------------------------------------------------

9998   SHOT = NUMMONST
	
NUMMONST = 4
NOOFFRUITS = 38
LOCATE 1, 1, 1
COLOR 2, 0
PRINT "###   ##########################   #########################"
PRINT "###   ##########################   # 9  4    ###############"
PRINT "###   ######        6         1    #   ###   ###############"
PRINT "### 1 ###### 3 ##########   ######## 9 ###     9  1     8 ##"
PRINT "###   ######   ########## 4 ########   ###   ########   ####"
PRINT "###    7       ##########   ##############   ######## 3 ####"
PRINT "############   ##########   ####   #######   ########   ####"
PRINT "############ 2 ##   8       #### 5 #######    8   2     ####"
PRINT "###   ######   ##   ############   #######   ########   ####"
PRINT "### 1 ######   ## 9 ############   ####### 7 ######## 5 ####"
PRINT "###   ######   ##   ############   #######   ########   ####"
PRINT "      ###### 5 #################     6                      "
PRINT "###   ######   #################   #####   #####   ###   ###"
PRINT "###                   4            ##### 8 ##### 3 ###   ###"
PRINT "### 2 ########################## 3 #####   #####   ### 4 ###"
PRINT "###   ##########################      7            ###   ###"
PRINT "###             8       ########   #############   ###   ###"
PRINT "###   #### 6 ######## 9       4    ############# 3       ###"
PRINT "### 3 ####   ################### 1 #########################"
PRINT "###   ##########################   #########################"
FOR I = 1 TO 4
150 MONSTERROW(I) = INT(RND * 20) + 1
MONSTERCOL(I) = INT(RND * 56) + 1
FOR X = 0 TO 2
IF SCREEN(MONSTERROW(I), MONSTERCOL(I) + X) = 35 THEN GOTO 150
NEXT X
NEXT I
	IF MONSTEREDRAW = 1 THEN MONSTEREDRAW = 0: RETURN
	LET PCMANROW = 3: YY = 3
	LET PCMANCOL = 4: XX = 4
	
120 RETURN

REM ---------------------------------------------------------

9997    SHOT = NUMMONST
	LOCATE 1, 1, 1
	
NUMMONST = 5
NOOFFRUITS = 37
COLOR 2, 0
PRINT "######   ######################################   ##########"
PRINT "######   ###################################### 1 ##########"
PRINT "###### 6 ####### 9 ################## 2 #######       9 ####"
PRINT "### 7    #######           2            #######   ###   ####"
PRINT "###      #######   ## 9 ######## 9 ##   #######       4 ####"
PRINT "######   ####### 3 ##   ########   ##   #######   ##########"
PRINT "###### 8 #######   ################## 5 ####### 3 ##########"
PRINT "######      1         6    ##   6           7     ##########"
PRINT "##############   ######################   ##################"
PRINT "##############   ######################   ##################"
PRINT "    4    7            9  ######## 9             4     1     "
PRINT "##############   ######################   ##################"
PRINT "############## 4 ######################   ##################"
PRINT "###### 1              5          5                ##########"
PRINT "######   ##################   #################   ##########"
PRINT "###            6     8             8     6        ##########"
PRINT "### 3    ################## 7 #################       4 ####"
PRINT "######   ##################   #################   ###   ####"
PRINT "###### 1 ######################################       9 ####"
PRINT "######   ######################################   ##########"
FOR I = 1 TO 5
160 MONSTERROW(I) = INT(RND * 20) + 1
MONSTERCOL(I) = INT(RND * 56) + 1
FOR X = 0 TO 2
IF SCREEN(MONSTERROW(I), MONSTERCOL(I) + X) = 35 THEN GOTO 160
NEXT X
NEXT I
	IF MONSTEREDRAW = 1 THEN MONSTEREDRAW = 0: RETURN
	LET PCMANROW = 1: YY = 1
	LET PCMANCOL = 7: XX = 7
	
130 RETURN

SUB DRAWDBLBOX (X1, Y1, X2, Y2)

'CHECK FOR VALID CO-ORDINATES
IF X1 > 80 OR X1 < 1 OR X2 > 80 OR X2 < 1 OR Y1 > 24 OR Y1 < 1 OR Y2 > 24 OR Y2 < 1 THEN GOTO 101

IF X1 > X2 THEN ' DETERMINE GREATER CO-ORDINATE
GREATERX = X1: LESSERX = X2
ELSE
GREATERX = X2: LESSERX = X1
END IF

'DRAW HORIZONTAL LINES
FOR I = (LESSERX + 1) TO (GREATERX - 1)
LOCATE Y1, I: PRINT CHR$(205)
LOCATE Y2, I: PRINT CHR$(205)
NEXT I

'DRAW VERTICAL LINES

IF Y1 > Y2 THEN ' DETERMINE GREATER CO-ORDINATE
GREATERY = Y1: LESSERY = Y2
ELSE
GREATERY = Y2: LESSERY = Y1
END IF

FOR I = LESSERY + 1 TO GREATERY - 1
LOCATE I, X1: PRINT CHR$(186)
LOCATE I, X2: PRINT CHR$(186)
NEXT I

'DRAW CORNERS
LOCATE LESSERY, LESSERX: PRINT CHR$(201)
LOCATE GREATERY, GREATERX: PRINT CHR$(188)
LOCATE LESSERY, GREATERX: PRINT CHR$(187)
LOCATE GREATERY, LESSERX: PRINT CHR$(200)

101 END SUB

