mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-09-28 05:17:49 +00:00
9ee89d6ff4
These tests use a variety of sample code (with some of the larger files removed, so they are not complete!) and verifies that they all compile successfully.
1968 lines
38 KiB
QBasic
1968 lines
38 KiB
QBasic
CHDIR ".\programs\samples\pete\pongtennis"
|
|
|
|
DECLARE SUB challengeMatchDay ()
|
|
DECLARE SUB challengeMode ()
|
|
DECLARE SUB matchDayMenu ()
|
|
DECLARE SUB calender ()
|
|
DECLARE SUB career ()
|
|
DECLARE SUB worldRankings ()
|
|
DECLARE SUB backWallRally ()
|
|
DECLARE SUB training ()
|
|
DECLARE SUB targetPractice ()
|
|
DECLARE SUB tournament ()
|
|
DECLARE SUB preMatchDay ()
|
|
DECLARE SUB options ()
|
|
DECLARE SUB matchDay ()
|
|
DECLARE SUB getInfo ()
|
|
DECLARE FUNCTION rand! (c!)
|
|
DIM SHARED points(2)
|
|
DIM SHARED realPoints$(2)
|
|
DIM SHARED games(2)
|
|
DIM SHARED sets(2)
|
|
DIM SHARED forename$(32)
|
|
DIM SHARED surname$(32)
|
|
DIM SHARED speedRating(32)
|
|
DIM SHARED speed(32)
|
|
DIM SHARED power(32)
|
|
DIM SHARED accuracy(32)
|
|
DIM SHARED colour$(15)
|
|
DIM SHARED winners(2)
|
|
DIM SHARED aces(2)
|
|
DIM SHARED faults(2)
|
|
DIM SHARED errors(2)
|
|
DIM SHARED player(33)
|
|
DIM SHARED flag(32)
|
|
DIM SHARED in(32)
|
|
DIM SHARED tournamentPlayer(33)
|
|
DIM SHARED round$(5)
|
|
DIM SHARED arp(32)
|
|
DIM SHARED rankPoints(10, 32)
|
|
DIM SHARED minorRating(32)
|
|
DIM SHARED rank(32)
|
|
DIM SHARED month$(12)
|
|
DIM SHARED days(12)
|
|
DIM SHARED day(24)
|
|
DIM SHARED month(24)
|
|
DIM SHARED qual(34)
|
|
DIM SHARED tourney$(34)
|
|
DIM SHARED qual$(34)
|
|
DIM SHARED entrants(6)
|
|
DIM SHARED rounds(34)
|
|
DIM SHARED cPlayerNumber(2, 6)
|
|
DIM SHARED cGames(2, 6)
|
|
DIM SHARED cSets(2, 6)
|
|
DIM SHARED cGamesToWin(6)
|
|
DIM SHARED cSetsToWin(6)
|
|
DIM SHARED cAmount(6)
|
|
DIM SHARED cDescription$(6, 6)
|
|
DIM SHARED cCompleted(6)
|
|
COMMON SHARED challenge, day, month, year, userDone, winner, userColour, opponentColour, forename$, surname$, l$, r$, u$, d$, opponent, gamesToWin, setsToWin, gamesToWin2
|
|
|
|
SCREEN 0
|
|
CALL getInfo
|
|
gamesToWin = 6
|
|
gamesToWin2 = 2
|
|
setsToWin = 1
|
|
userColour = 11
|
|
opponentColour = 4
|
|
colour$(3) = "CYAN"
|
|
colour$(4) = "RED"
|
|
colour$(5) = "PURPLE"
|
|
colour$(6) = "ORANGE"
|
|
colour$(7) = "WHITE"
|
|
colour$(8) = "GREY"
|
|
colour$(9) = "TURQOUISE"
|
|
colour$(10) = "GREEN"
|
|
colour$(11) = "BLUE"
|
|
colour$(12) = "LIGHT RED"
|
|
colour$(13) = "PINK"
|
|
colour$(14) = "YELLOW"
|
|
colour$(15) = "BRIGHT WHITE"
|
|
name$ = "USER"
|
|
|
|
COLOR 15, 2
|
|
CLS
|
|
LOCATE 16, 32
|
|
PRINT "PONG TENNIS"
|
|
COLOR 7, 2
|
|
LOCATE 20, 30
|
|
PRINT "BY ALEX BEIGHTON"
|
|
DO
|
|
LOOP UNTIL INKEY$ = CHR$(13)
|
|
|
|
COLOR 15, 2
|
|
CLS
|
|
LOCATE 16, 32
|
|
PRINT "KEY CONFIG"
|
|
LOCATE 20, 25
|
|
COLOR 7, 2
|
|
PRINT "PLEASE ENTER THE "; CHR$(34); "LEFT"; CHR$(34); " KEY"
|
|
DO
|
|
l$ = INKEY$
|
|
LOOP UNTIL l$ <> ""
|
|
COLOR 15, 2
|
|
CLS
|
|
LOCATE 16, 32
|
|
PRINT "KEY CONFIG"
|
|
LOCATE 20, 24
|
|
COLOR 7, 2
|
|
PRINT "PLEASE ENTER THE "; CHR$(34); "RIGHT"; CHR$(34); " KEY"
|
|
DO
|
|
r$ = INKEY$
|
|
LOOP UNTIL r$ <> ""
|
|
COLOR 15, 2
|
|
CLS
|
|
LOCATE 16, 32
|
|
PRINT "KEY CONFIG"
|
|
LOCATE 20, 26
|
|
COLOR 7, 2
|
|
PRINT "PLEASE ENTER THE "; CHR$(34); "UP"; CHR$(34); " KEY"
|
|
DO
|
|
u$ = INKEY$
|
|
LOOP UNTIL u$ <> ""
|
|
COLOR 15, 2
|
|
CLS
|
|
LOCATE 16, 32
|
|
PRINT "KEY CONFIG"
|
|
LOCATE 20, 25
|
|
COLOR 7, 2
|
|
PRINT "PLEASE ENTER THE "; CHR$(34); "DOWN"; CHR$(34); " KEY"
|
|
DO
|
|
d$ = INKEY$
|
|
LOOP UNTIL d$ <> ""
|
|
COLOR 15, 2
|
|
CLS
|
|
LOCATE 16, 32
|
|
PRINT "PLEASE ENTER YOUR FORENAME"
|
|
LOCATE 20, 32
|
|
COLOR 7, 2
|
|
PRINT "MY FORENAME IS"
|
|
DO
|
|
LOCATE 20, 48
|
|
INPUT forename$
|
|
LOOP UNTIL forename$ <> ""
|
|
COLOR 15, 2
|
|
CLS
|
|
LOCATE 16, 32
|
|
PRINT "PLEASE ENTER YOUR SURNAME"
|
|
LOCATE 20, 32
|
|
COLOR 7, 2
|
|
PRINT "MY SURNAME IS"
|
|
DO
|
|
LOCATE 20, 48
|
|
INPUT surname$
|
|
LOOP UNTIL surname$ <> ""
|
|
|
|
210 COLOR 15, 2
|
|
CLS
|
|
os = 1
|
|
180 COLOR 15, 2
|
|
LOCATE 16, 28
|
|
PRINT "SELECT GAME MODE"
|
|
IF os = 1 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
LOCATE 20, 28
|
|
PRINT "PLAY NOW"
|
|
IF os = 2 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
LOCATE 22, 28
|
|
PRINT "TOURNAMENT MODE"
|
|
IF os = 3 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
LOCATE 24, 28
|
|
PRINT "CAREER MODE"
|
|
IF os = 4 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
LOCATE 26, 28
|
|
PRINT "TRAINING MODE"
|
|
IF os = 5 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
LOCATE 28, 28
|
|
PRINT "CHALLENGE MODE"
|
|
IF os = 6 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
LOCATE 30, 28
|
|
PRINT "QUIT GAME"
|
|
|
|
170 SELECT CASE INKEY$
|
|
CASE IS = u$
|
|
os = os - 1
|
|
IF os < 1 THEN os = 6
|
|
GOTO 180
|
|
CASE IS = d$
|
|
os = os + 1
|
|
IF os > 6 THEN os = 1
|
|
GOTO 180
|
|
CASE IS = CHR$(13)
|
|
CASE ELSE
|
|
GOTO 170
|
|
END SELECT
|
|
|
|
challenge = 0
|
|
SELECT CASE os
|
|
CASE IS = 1
|
|
CALL preMatchDay
|
|
GOTO 180
|
|
CASE IS = 2
|
|
CALL tournament
|
|
GOTO 180
|
|
CASE IS = 3
|
|
REM CALL career
|
|
GOTO 180
|
|
CASE IS = 4
|
|
CALL training
|
|
GOTO 180
|
|
CASE IS = 5
|
|
CALL challengeMode
|
|
GOTO 180
|
|
CASE IS = 6
|
|
COLOR 7, 2
|
|
END
|
|
END SELECT
|
|
|
|
SUB backWallRally
|
|
450 a = 37
|
|
b = 32
|
|
y = 36
|
|
z = 40
|
|
t = 0
|
|
w = 26
|
|
x = 1
|
|
bs = 1
|
|
rally = 0
|
|
rallyEnd = 0
|
|
alreadyAdded = 0
|
|
hitTarget = 0
|
|
totals = 0
|
|
speed = 0
|
|
direction = 1
|
|
directionbs = 1
|
|
|
|
COLOR 15, 2
|
|
CLS
|
|
|
|
LOCATE 16, 24
|
|
PRINT "BACK WALL RALLY"
|
|
COLOR 7, 2
|
|
LOCATE 20, 24
|
|
PRINT "Rally with the back wall as many times as"
|
|
LOCATE 21, 24
|
|
PRINT "possible before the ball goes out, or you"
|
|
LOCATE 22, 24
|
|
PRINT "miss the ball. Every time the ball makes"
|
|
LOCATE 23, 24
|
|
PRINT "contact with the back wall, you will score"
|
|
LOCATE 24, 24
|
|
PRINT "a point. The higher your score at the end,"
|
|
LOCATE 25, 24
|
|
PRINT "the better. However, it's not that simple -"
|
|
LOCATE 26, 24
|
|
PRINT "throughout your rally, a solid object will"
|
|
LOCATE 27, 24
|
|
PRINT "be bouncing between the walls and gradally"
|
|
LOCATE 28, 24
|
|
PRINT "increasing in size. Hit the object and it's"
|
|
LOCATE 29, 24
|
|
PRINT "game over!"
|
|
COLOR 15, 2
|
|
LOCATE 33, 24
|
|
PRINT "PRESS RETURN TO BEGIN BACK WALL RALLY"
|
|
DO
|
|
LOOP UNTIL INKEY$ = CHR$(13)
|
|
|
|
alreadyAdded = 0
|
|
COLOR 15, 2
|
|
CLS
|
|
FOR i = 2 TO 20
|
|
COLOR 1, 15
|
|
LOCATE 2, i
|
|
PRINT CHR$(219)
|
|
NEXT i
|
|
COLOR 15, 1
|
|
LOCATE 2, 2
|
|
PRINT surname$
|
|
|
|
tt = TIMER
|
|
DO
|
|
LOCATE 2, 21
|
|
COLOR 15, 3
|
|
PRINT " RALLY "; rally
|
|
|
|
FOR i = 1 TO bs
|
|
COLOR 14, 2
|
|
LOCATE w, x + i
|
|
PRINT CHR$(219)
|
|
NEXT i
|
|
|
|
FOR i = 1 TO 17
|
|
COLOR userColour, 2
|
|
IF b + i > 0 AND b + i < 81 THEN LOCATE a, b + i
|
|
COLOR 6, 2
|
|
IF b + i > 0 AND b + i < 81 THEN PRINT CHR$(223)
|
|
NEXT i
|
|
|
|
LOCATE y, z
|
|
COLOR 10, 2
|
|
PRINT "o"
|
|
|
|
SELECT CASE INKEY$
|
|
CASE IS = l$
|
|
FOR i = 1 TO 17
|
|
IF b + i > 0 AND b + i < 81 THEN LOCATE a, b + i
|
|
COLOR 6, 2
|
|
IF b + i > 0 AND b + i < 81 THEN PRINT " "
|
|
NEXT i
|
|
b = b - 1
|
|
CASE IS = r$
|
|
FOR i = 1 TO 17
|
|
IF b + i > 0 AND b + i < 81 THEN LOCATE a, b + i
|
|
COLOR 6, 2
|
|
IF b + i > 0 AND b + i < 81 THEN PRINT " "
|
|
NEXT i
|
|
b = b + 1
|
|
CASE IS = CHR$(13)
|
|
IF y < b - 3 THEN GOTO 350
|
|
IF y > b + 13 THEN GOTO 350
|
|
IF speed <> 0 THEN GOTO 350
|
|
speed = 10
|
|
ballHit = b - z + 9
|
|
directionlr = 1
|
|
FOR i = 1 TO 8
|
|
IF ballHit = -i THEN directionlr = 2
|
|
IF ballHit = -i THEN ballHit = i
|
|
NEXT i
|
|
350 END SELECT
|
|
|
|
IF speed = 0 THEN GOTO 360
|
|
moveAmount = (15 - speed) / 200
|
|
moveAmount = INT(moveAmount * 1000) / 1000
|
|
SELECT CASE TIMER
|
|
CASE IS >= t + moveAmount
|
|
COLOR 2, 2
|
|
LOCATE y, z
|
|
PRINT " "
|
|
IF direction = 1 THEN y = y - 1 ELSE y = y + 1
|
|
t = TIMER
|
|
totals = totals + 1
|
|
END SELECT
|
|
|
|
SELECT CASE totals
|
|
CASE IS >= changeAmount
|
|
COLOR 2, 2
|
|
LOCATE y, z
|
|
PRINT " "
|
|
IF directionlr = 1 THEN z = z - 1 ELSE z = z + 1
|
|
IF ballHit = 8 AND directionlr = 1 AND serveHit <> 1 THEN z = z - 1
|
|
IF ballHit = 8 AND directionlr = 2 AND serveHit <> 1 THEN z = z + 1
|
|
totals = 0
|
|
END SELECT
|
|
|
|
hit1 = 0
|
|
IF y = a - 1 AND z <= b + 17 AND z >= b + 1 THEN hit1 = 1 ELSE hit1 = 0
|
|
SELECT CASE hit1
|
|
CASE IS = 1
|
|
ballHit = b - z + 9
|
|
directionlr = 1
|
|
direction = 1
|
|
FOR i = 1 TO 8
|
|
IF ballHit = -i THEN directionlr = 2
|
|
IF ballHit = -i THEN ballHit = i
|
|
NEXT i
|
|
END SELECT
|
|
360 IF ballHit = 0 THEN changeAmount = 100 ELSE changeAmount = 9 - ballHit
|
|
IF b < -12 THEN b = -12
|
|
IF b > 75 THEN b = 75
|
|
IF d < -12 THEN d = -12
|
|
IF d > 75 THEN d = 75
|
|
IF y < 1 THEN y = 1
|
|
IF y > 47 THEN y = 47
|
|
IF z < 1 THEN z = 1
|
|
IF z > 80 THEN z = 80
|
|
IF y = 3 THEN direction = 2
|
|
IF y = 3 AND alreadyAdded = 0 THEN rally = rally + 1
|
|
IF y = 3 AND alreadyAdded = 0 THEN alreadyAdded = 1
|
|
IF y = 4 THEN alreadyAdded = 0
|
|
outOfBounds = 0
|
|
IF y > 42 THEN outOfBounds = 1
|
|
IF z < 2 THEN outOfBounds = 1
|
|
IF z > 79 THEN outOfBounds = 1
|
|
|
|
FOR i = 1 TO bs
|
|
COLOR 2, 2
|
|
IF y = w AND z = x + i THEN rallyEnd = 1
|
|
NEXT i
|
|
|
|
SELECT CASE outOfBounds
|
|
CASE IS = 1
|
|
rallyEnd = 1
|
|
speed = 0
|
|
a = 37
|
|
b = 32
|
|
y = 36
|
|
z = 40
|
|
t = 0
|
|
totals = 0
|
|
speed = 0
|
|
direction = 1
|
|
alreadyAdded = 0
|
|
COLOR 15, 2
|
|
CLS
|
|
FOR i = 2 TO 20
|
|
COLOR 1, 15
|
|
LOCATE 2, i
|
|
PRINT CHR$(219)
|
|
NEXT i
|
|
COLOR 15, 1
|
|
LOCATE 2, 2
|
|
PRINT surname$
|
|
END SELECT
|
|
|
|
SELECT CASE TIMER - tt
|
|
CASE IS >= .005
|
|
FOR i = 1 TO bs
|
|
COLOR 2, 2
|
|
LOCATE w, x + i
|
|
PRINT " "
|
|
NEXT i
|
|
IF directionbs = 1 THEN x = x + 1 ELSE x = x - 1
|
|
tt = TIMER
|
|
END SELECT
|
|
|
|
IF directionbs = 2 THEN GOTO 400
|
|
SELECT CASE x + bs
|
|
CASE IS >= 80
|
|
directionbs = 2
|
|
END SELECT
|
|
400 IF directionbs = 1 THEN GOTO 410
|
|
SELECT CASE x
|
|
CASE IS <= 1
|
|
directionbs = 1
|
|
bs = bs + 1
|
|
END SELECT
|
|
410 LOOP UNTIL rallyEnd = 1
|
|
|
|
COLOR 15, 2
|
|
CLS
|
|
FOR i = 2 TO 20
|
|
COLOR 1, 15
|
|
LOCATE 2, i
|
|
PRINT CHR$(219)
|
|
NEXT i
|
|
COLOR 15, 1
|
|
LOCATE 2, 2
|
|
PRINT surname$
|
|
LOCATE 2, 21
|
|
COLOR 15, 3
|
|
PRINT " RALLY "; rally
|
|
|
|
COLOR 15, 2
|
|
LOCATE 16, 24
|
|
SELECT CASE rally
|
|
CASE IS > 29
|
|
PRINT "THAT WAS AN UNBELIEVEABLE EFFORT! WELL PLAYED!"
|
|
CASE 24 TO 29
|
|
PRINT "WELL DONE! THAT WAS AN EXCELLENT PERFORMANCE."
|
|
CASE 19 TO 23
|
|
PRINT "VERY IMPRESSIVE! YOU SHOULD BE PLEASED WITH THAT SCORE."
|
|
CASE 16 TO 18
|
|
PRINT "GOOD SCORE, BUT STILL A LOT OF IMPROVEMENT TO BE MADE."
|
|
CASE 12 TO 15
|
|
PRINT "NOT A BAD SCORE, BUT YOU CAN DO MUCH BETTER."
|
|
CASE 9 TO 11
|
|
PRINT "BY NO MEANS IMPRESSIVE. TRY AGAIN."
|
|
CASE 6 TO 8
|
|
PRINT "THAT WAS ABSOLUTLY DREADFUL. ENOUGH SAID."
|
|
CASE 3 TO 5
|
|
PRINT "THAT WAS SHOCKING. HAVE YOU EVER PLAYED THIS GAME BEFORE?"
|
|
CASE 0 TO 2
|
|
PRINT "THE ONLY WAS TO DESCRIBE THAT PERFORMANCE IS EMBARRASING."
|
|
END SELECT
|
|
|
|
LOCATE 20, 24
|
|
PRINT "YOUR SCORE:"
|
|
COLOR 7, 2
|
|
LOCATE 20, 36
|
|
PRINT rally
|
|
LOCATE 28, 24
|
|
PRINT "PRESS RETURN TO GO BACK TO THE MAIN MENU"
|
|
LOCATE 30, 24
|
|
PRINT "PRESS SPACE TO TRY BACK WALL RALLY AGAIN"
|
|
440 SELECT CASE INKEY$
|
|
CASE IS = CHR$(13)
|
|
CASE IS = CHR$(32)
|
|
GOTO 450
|
|
CASE ELSE
|
|
GOTO 440
|
|
END SELECT
|
|
END SUB
|
|
|
|
SUB calender
|
|
COLOR 15, 2
|
|
CLS
|
|
LOCATE 2, 5
|
|
PRINT forename$(32); " "; surname$(32); " "; day; " "; month$(month); " "; year
|
|
LOCATE 5, 5
|
|
PRINT "CALENDER"
|
|
LOCATE 9, 5
|
|
PRINT "DATE"
|
|
LOCATE 9, 20
|
|
PRINT "TOURNAMENT"
|
|
LOCATE 9, 60
|
|
PRINT "QUALIFICATION"
|
|
|
|
FOR i = 1 TO 24
|
|
IF qual(i) = 1 THEN COLOR 15, 2 ELSE COLOR 7, 2
|
|
LOCATE i + 10, 4
|
|
PRINT day(i); month$(month(i))
|
|
LOCATE i + 10, 20
|
|
PRINT tourney$(i)
|
|
LOCATE i + 10, 60
|
|
PRINT qual$(qual(i))
|
|
NEXT i
|
|
DO
|
|
LOOP UNTIL INKEY$ = CHR$(13)
|
|
COLOR 15, 2
|
|
CLS
|
|
END SUB
|
|
|
|
SUB career
|
|
os = 1
|
|
COLOR 15, 2
|
|
CLS
|
|
470 COLOR 15, 2
|
|
LOCATE 16, 24
|
|
PRINT "CAREER MODE"
|
|
COLOR 7, 2
|
|
IF os = 1 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
LOCATE 20, 24
|
|
PRINT "NEW CAREER"
|
|
IF os = 2 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
LOCATE 22, 24
|
|
PRINT "LOAD CAREER"
|
|
|
|
460 SELECT CASE INKEY$
|
|
CASE IS = u$
|
|
os = os - 1
|
|
IF os < 1 THEN os = 2
|
|
GOTO 470
|
|
CASE IS = d$
|
|
os = os + 1
|
|
IF os > 2 THEN os = 1
|
|
GOTO 470
|
|
CASE IS = CHR$(13)
|
|
CASE ELSE
|
|
GOTO 460
|
|
END SELECT
|
|
|
|
SELECT CASE os
|
|
CASE IS = 1
|
|
CASE IS = 2
|
|
GOTO 470
|
|
END SELECT
|
|
year = 2006
|
|
day = 1
|
|
month = 1
|
|
forename$(32) = forename$
|
|
surname$(32) = surname$
|
|
|
|
DO
|
|
z = 0
|
|
arp(i) = 0
|
|
FOR i = 1 TO 32
|
|
FOR j = 1 TO 9
|
|
arp(i) = arp(i) + rankPoints(j, i)
|
|
NEXT j
|
|
arp(i) = INT(arp(i) / 10)
|
|
minorRating(i) = i / 1000
|
|
NEXT i
|
|
FOR i = 1 TO 32
|
|
rank(i) = 33
|
|
NEXT i
|
|
FOR i = 1 TO 32
|
|
FOR j = 1 TO 32
|
|
IF arp(i) + minorRating(i) >= arp(j) + minorRating(j) THEN rank(i) = rank(i) - 1
|
|
NEXT j
|
|
NEXT i
|
|
|
|
DO
|
|
COLOR 15, 2
|
|
CLS
|
|
os = 1
|
|
490 COLOR 15, 2
|
|
LOCATE 2, 24
|
|
PRINT forename$(32); " "; surname$(32); " "; day; month$(month); year
|
|
LOCATE 16, 24
|
|
PRINT "CAREER MODE"
|
|
COLOR 7, 2
|
|
LOCATE 20, 24
|
|
IF os = 1 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
PRINT "CALENDER"
|
|
LOCATE 22, 24
|
|
IF os = 2 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
PRINT "PLAYER STATISTICS"
|
|
LOCATE 24, 24
|
|
IF os = 3 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
PRINT "WORLD RANKINGS"
|
|
LOCATE 26, 24
|
|
IF os = 4 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
PRINT "GO TO NEXT TOURNAMENT"
|
|
LOCATE 28, 24
|
|
IF os = 5 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
PRINT "CAREER OPTIONS"
|
|
LOCATE 30, 24
|
|
IF os = 6 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
PRINT "QUIT CAREER"
|
|
|
|
480 SELECT CASE INKEY$
|
|
CASE IS = u$
|
|
os = os - 1
|
|
IF os < 1 THEN os = 6
|
|
GOTO 490
|
|
CASE IS = d$
|
|
os = os + 1
|
|
IF os > 6 THEN os = 1
|
|
GOTO 490
|
|
CASE IS = CHR$(13)
|
|
CASE ELSE
|
|
GOTO 480
|
|
END SELECT
|
|
|
|
SELECT CASE os
|
|
CASE IS = 1
|
|
CALL calender
|
|
os = 1
|
|
GOTO 490
|
|
CASE IS = 3
|
|
CALL worldRankings
|
|
os = 3
|
|
GOTO 490
|
|
CASE IS = 4
|
|
z = 1
|
|
GOTO 490
|
|
CASE IS = 6
|
|
GOTO 500
|
|
CASE ELSE
|
|
GOTO 490
|
|
END SELECT
|
|
week = week + 1
|
|
IF week = 53 THEN year = year + 1
|
|
IF week = 53 THEN week = 1
|
|
LOOP UNTIL z = 1
|
|
LOOP UNTIL year = 11
|
|
500 COLOR 15, 2
|
|
CLS
|
|
END SUB
|
|
|
|
SUB challengeMatchDay
|
|
COLOR 15, 2
|
|
CLS
|
|
LOCATE 16, 24
|
|
IF cCompleted(challenge) = 1 THEN PRINT "MATCH "; challenge; " (Completed)" ELSE PRINT "MATCH "; challenge; " (Not Completed)"
|
|
COLOR 7, 2
|
|
FOR i = 1 TO cAmount(challenge)
|
|
LOCATE (i * 2) + 18, 24
|
|
PRINT cDescription$(i, challenge)
|
|
NEXT i
|
|
LOCATE 36, 24
|
|
COLOR 15, 2
|
|
PRINT "PRESS RETURN TO GO TO THE MATCH"
|
|
DO
|
|
LOOP UNTIL INKEY$ = CHR$(13)
|
|
CALL matchDay
|
|
END SUB
|
|
|
|
SUB challengeMode
|
|
os = 1
|
|
610 COLOR 15, 2
|
|
CLS
|
|
LOCATE 16, 24
|
|
PRINT "CHALLENGE MODE"
|
|
FOR i = 1 TO 6
|
|
LOCATE (i * 2) + 18, 24
|
|
IF os = i THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
IF cCompleted(i) = 1 THEN PRINT "MATCH "; i; " (Completed)" ELSE PRINT "MATCH "; i; " (Not Completed)"
|
|
NEXT i
|
|
LOCATE 32, 24
|
|
IF os = 7 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
PRINT "RETURN TO MAIN MENU"
|
|
|
|
600 SELECT CASE INKEY$
|
|
CASE IS = u$
|
|
os = os - 1
|
|
IF os < 1 THEN os = 7
|
|
GOTO 610
|
|
CASE IS = d$
|
|
os = os + 1
|
|
IF os > 7 THEN os = 1
|
|
GOTO 610
|
|
CASE IS = CHR$(13)
|
|
CASE ELSE
|
|
GOTO 600
|
|
END SELECT
|
|
|
|
SELECT CASE os
|
|
CASE IS = 7
|
|
CASE ELSE
|
|
challenge = os
|
|
CALL challengeMatchDay
|
|
END SELECT
|
|
COLOR 15, 2
|
|
CLS
|
|
END SUB
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SUB getInfo
|
|
OPEN "t.txt" FOR INPUT AS #1
|
|
FOR i = 1 TO 31
|
|
INPUT #1, forename$(i)
|
|
INPUT #1, surname$(i)
|
|
INPUT #1, speedRating(i)
|
|
INPUT #1, power(i)
|
|
INPUT #1, accuracy(i)
|
|
INPUT #1, arp(i)
|
|
NEXT i
|
|
CLOSE
|
|
FOR i = 1 TO 31
|
|
speed(i) = 11 - speedRating(i)
|
|
speed(i) = speed(i) * 25
|
|
NEXT i
|
|
round$(1) = "ROUND 1"
|
|
round$(2) = "ROUND 2"
|
|
round$(3) = "QUARTER-FINALS"
|
|
round$(4) = "SEMI-FINALS"
|
|
round$(5) = "FINAL"
|
|
FOR j = 1 TO 32
|
|
FOR i = 1 TO 10
|
|
rankPoints(i, j) = arp(j)
|
|
NEXT i
|
|
NEXT j
|
|
|
|
'OPEN "t2.txt" FOR INPUT AS #1
|
|
'FOR i = 1 TO 24
|
|
'INPUT #1, day(i)
|
|
'INPUT #1, month(i)
|
|
'INPUT #1, qual(i)
|
|
'INPUT #1, tourney$(i)
|
|
'NEXT i
|
|
'CLOSE
|
|
|
|
month$(1) = "JANUARY"
|
|
days(1) = 31
|
|
month$(2) = "FEBRUARY"
|
|
days(2) = 28
|
|
month$(3) = "MARCH"
|
|
days(3) = 31
|
|
month$(4) = "APRIL"
|
|
days(4) = 30
|
|
month$(5) = "MAY"
|
|
days(5) = 31
|
|
month$(6) = "JUNE"
|
|
days(6) = 30
|
|
month$(7) = "JULY"
|
|
days(7) = 31
|
|
month$(8) = "AUGUST"
|
|
days(8) = 31
|
|
month$(9) = "SEPTEMBER"
|
|
days(9) = 30
|
|
month$(10) = "OCTOBER"
|
|
days(10) = 31
|
|
month$(11) = "NOVEMBER"
|
|
days(11) = 30
|
|
month$(12) = "DECEMBER"
|
|
days(12) = 31
|
|
|
|
qual$(1) = "No qualification"
|
|
qual$(2) = "1-16 in Rankings"
|
|
qual$(3) = "17-32 in Rankings"
|
|
qual$(4) = "1-10 in Rankings"
|
|
qual$(5) = "11-20 in Rankings"
|
|
qual$(6) = "21-32 in Rankings"
|
|
|
|
entrants(1) = 32
|
|
entrants(2) = 16
|
|
entrants(3) = 16
|
|
entrants(4) = 8
|
|
entrants(5) = 8
|
|
entrants(6) = 8
|
|
|
|
rounds(1) = 5
|
|
rounds(2) = 4
|
|
rounds(3) = 4
|
|
rounds(4) = 3
|
|
rounds(5) = 3
|
|
rounds(6) = 3
|
|
|
|
OPEN "t3.txt" FOR INPUT AS #1
|
|
FOR i = 1 TO 6
|
|
INPUT #1, cPlayerNumber(1, i)
|
|
INPUT #1, cGames(1, i)
|
|
INPUT #1, cSets(1, i)
|
|
INPUT #1, cPlayerNumber(2, i)
|
|
INPUT #1, cGames(2, i)
|
|
INPUT #1, cSets(2, i)
|
|
INPUT #1, cGamesToWin(i)
|
|
INPUT #1, cSetsToWin(i)
|
|
INPUT #1, cAmount(i)
|
|
FOR j = 1 TO cAmount(i)
|
|
INPUT #1, cDescription$(j, i)
|
|
NEXT j
|
|
cCompleted(i) = 0
|
|
NEXT i
|
|
CLOSE
|
|
END SUB
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SUB matchDay
|
|
IF challenge > 0 THEN oGamesToWin = gamesToWin
|
|
IF challenge > 0 THEN gamesToWin = cGamesToWin(challenge)
|
|
IF challenge > 0 THEN oSetsToWin = setsToWin
|
|
IF challenge > 0 THEN setsToWin = cSetsToWin(challenge)
|
|
IF challenge > 0 THEN oForename$ = forename$
|
|
IF challenge > 0 THEN forename$ = forename$(cPlayerNumber(1, challenge))
|
|
IF challenge > 0 THEN oSurname$ = surname$
|
|
IF challenge > 0 THEN surname$ = surname$(cPlayerNumber(1, challenge))
|
|
IF challenge > 0 THEN opponent = cPlayerNumber(2, challenge)
|
|
FOR i = 1 TO 2
|
|
points(i) = 0
|
|
realPoints$(i) = ""
|
|
IF challenge > 0 THEN games(i) = cGames(i, challenge) ELSE games(i) = 0
|
|
IF challenge > 0 THEN sets(i) = cSets(i, challenge) ELSE sets(i) = 0
|
|
winners(i) = 0
|
|
aces(i) = 0
|
|
faults(i) = 0
|
|
errors(i) = 0
|
|
NEXT i
|
|
|
|
side = 1
|
|
speed = 0
|
|
serve = 1
|
|
serveHit = 0
|
|
direction = 1
|
|
realPoints$(1) = "0"
|
|
realPoints$(2) = "0"
|
|
|
|
COLOR 0, 2
|
|
CLS
|
|
DO
|
|
SELECT CASE speed
|
|
CASE IS = 0
|
|
a = 37
|
|
b = 32
|
|
c = 16
|
|
IF serve = 1 THEN d = 32 ELSE d = rand(12) + 25
|
|
IF serve = 1 THEN y = 36 ELSE y = 17
|
|
z = 41
|
|
END SELECT
|
|
total = 0
|
|
totals = 0
|
|
moveAmount = 0
|
|
tt = 0
|
|
t = 0
|
|
noOutChance = 0
|
|
|
|
COLOR 0, 2
|
|
CLS
|
|
FOR i = 1 TO 2
|
|
LOCATE 1 + i, 2
|
|
COLOR 7, 1
|
|
PRINT " "
|
|
LOCATE 1 + i, 2
|
|
COLOR 7, 1
|
|
IF i = 1 AND serve = 1 THEN PRINT surname$; " *"
|
|
IF i = 1 AND serve = 2 THEN PRINT surname$
|
|
IF i = 2 AND serve = 1 THEN PRINT surname$(opponent);
|
|
IF i = 2 AND serve = 2 THEN PRINT surname$(opponent); " *"
|
|
LOCATE 1 + i, 20
|
|
COLOR 7, 3
|
|
PRINT " "
|
|
LOCATE 1 + i, 21
|
|
COLOR 7, 3
|
|
PRINT realPoints$(i)
|
|
LOCATE 1 + i, 24
|
|
COLOR 7, 4
|
|
PRINT " "
|
|
COLOR 7, 4
|
|
LOCATE 1 + i, 24
|
|
PRINT games(i)
|
|
LOCATE 1 + i, 28
|
|
COLOR 7, 6
|
|
PRINT " "
|
|
COLOR 7, 6
|
|
LOCATE 1 + i, 28
|
|
PRINT sets(i)
|
|
IF i = 1 THEN j = 2 ELSE j = 1
|
|
SELECT CASE realPoints$(i)
|
|
CASE IS = "A"
|
|
LOCATE 1 + i, 32
|
|
COLOR 7, 6
|
|
PRINT "ADVANTAGE"
|
|
CASE IS = "40"
|
|
LOCATE 1 + i, 32
|
|
COLOR 7, 6
|
|
IF realPoints$(j) <> "40" AND realPoints$(j) <> "A" AND serve = i THEN PRINT "GAME POINT"
|
|
IF realPoints$(j) <> "40" AND realPoints$(j) <> "A" AND serve <> i THEN PRINT "BREAK POINT"
|
|
LOCATE 1 + i, 32
|
|
IF realPoints$(j) <> "40" AND realPoints$(j) <> "A" AND gamesToWin - games(i) = 1 AND setsToWin - sets(i) = 1 THEN PRINT "MATCH POINT"
|
|
LOCATE 1 + i, 32
|
|
IF realPoints$(j) <> "40" AND realPoints$(j) <> "A" AND gamesToWin - games(i) = 1 AND setsToWin - sets(i) <> 1 THEN PRINT " "
|
|
LOCATE 1 + i, 32
|
|
IF realPoints$(j) <> "40" AND realPoints$(j) <> "A" AND gamesToWin - games(i) = 1 AND setsToWin - sets(i) <> 1 THEN PRINT "SET POINT "
|
|
END SELECT
|
|
NEXT i
|
|
|
|
winner = 0
|
|
ttt = TIMER
|
|
DO
|
|
|
|
FOR i = 1 TO 17
|
|
IF b + i > 0 AND b + i < 81 THEN LOCATE a, b + i
|
|
COLOR userColour, 2
|
|
IF b + i > 0 AND b + i < 81 THEN PRINT CHR$(223)
|
|
NEXT i
|
|
FOR i = 1 TO 17
|
|
IF d + i > 0 AND d + i < 81 THEN LOCATE c, d + i
|
|
COLOR opponentColour, 2
|
|
IF d + i > 0 AND d + i < 81 THEN PRINT CHR$(220)
|
|
NEXT i
|
|
LOCATE y, z
|
|
COLOR 10, 2
|
|
PRINT CHR$(111)
|
|
|
|
zz = 0
|
|
DO
|
|
SELECT CASE INKEY$
|
|
CASE IS = l$
|
|
zz = 1
|
|
FOR i = 1 TO 17
|
|
IF b + i > 0 AND b + i < 81 THEN LOCATE a, b + i
|
|
COLOR 6, 2
|
|
IF b + i > 0 AND b + i < 81 THEN PRINT " "
|
|
NEXT i
|
|
b = b - 1
|
|
CASE IS = r$
|
|
zz = 1
|
|
FOR i = 1 TO 17
|
|
IF b + i > 0 AND b + i < 81 THEN LOCATE a, b + i
|
|
COLOR 6, 2
|
|
IF b + i > 0 AND b + i < 81 THEN PRINT " "
|
|
NEXT i
|
|
b = b + 1
|
|
CASE IS = CHR$(13)
|
|
IF speed <> 0 THEN GOTO 80
|
|
IF y < b - 4 THEN GOTO 80
|
|
IF y > b + 12 THEN GOTO 80
|
|
IF serve = 1 AND speed = 0 THEN direction = 1
|
|
IF serve = 1 AND speed = 0 THEN serveHit = 1
|
|
IF serve = 1 AND speed = 0 THEN speed = 10
|
|
longHit = rand(12 - accuracy(opponent))
|
|
SELECT CASE longHit
|
|
CASE IS = 1
|
|
IF d > 28 THEN sideHit = 1 ELSE sideHit = 2
|
|
290 IF sideHit = 1 THEN e = rand(3) + 0 ELSE e = rand(3) + 14
|
|
IF e = 1 OR e = 17 THEN GOTO 290
|
|
CASE ELSE
|
|
e = rand(17)
|
|
END SELECT
|
|
|
|
ballHit = b - z + 9
|
|
directionlr = 1
|
|
FOR i = 1 TO 8
|
|
IF ballHit = -i THEN directionlr = 2
|
|
IF ballHit = -i THEN ballHit = i
|
|
NEXT i
|
|
IF ballHit = 0 THEN changeAmount = 100 ELSE changeAmount = 9 - ballHit
|
|
80 END SELECT
|
|
|
|
IF speed = 0 THEN GOTO 40
|
|
moveAmount = (15 - speed) / 200
|
|
moveAmount = INT(moveAmount * 1000) / 1000
|
|
SELECT CASE TIMER
|
|
CASE IS >= t + moveAmount
|
|
zz = 1
|
|
COLOR 2, 2
|
|
LOCATE y, z
|
|
PRINT " "
|
|
IF direction = 1 THEN y = y - 1 ELSE y = y + 1
|
|
t = TIMER
|
|
totals = totals + 1
|
|
END SELECT
|
|
|
|
IF zz = 1 THEN GOTO 140
|
|
SELECT CASE totals
|
|
CASE IS >= changeAmount
|
|
zz = 1
|
|
COLOR 2, 2
|
|
LOCATE y, z
|
|
PRINT " "
|
|
IF directionlr = 1 THEN z = z - 1 ELSE z = z + 1
|
|
IF ballHit = 8 AND directionlr = 1 AND serveHit <> 1 THEN z = z - 1
|
|
IF ballHit = 8 AND directionlr = 2 AND serveHit <> 1 THEN z = z + 1
|
|
totals = 0
|
|
END SELECT
|
|
|
|
IF zz = 1 THEN GOTO 140
|
|
40 IF serve = 1 AND speed = 0 THEN GOTO 140
|
|
fatigue = INT(TIMER - ttt)
|
|
IF fatigue > 40 THEN fatigue = 40
|
|
opponentMove = rand(speed(opponent) + fatigue)
|
|
SELECT CASE opponentMove
|
|
CASE IS = 1
|
|
zz = 1
|
|
IF speed <> 0 THEN GOTO 100
|
|
IF tt > 0 THEN GOTO 110
|
|
tt = TIMER
|
|
110 IF TIMER - tt < 1.5 THEN GOTO 100
|
|
direction = 2
|
|
speed = 10
|
|
ballHit = d - z + 9
|
|
serveHit = 1
|
|
serveNow = 1
|
|
100 IF speed = 0 THEN GOTO 120
|
|
FOR i = 1 TO 17
|
|
IF d + i > 0 AND d + i < 81 THEN LOCATE c, d + i
|
|
COLOR 2, 2
|
|
IF d + i > 0 AND d + i < 81 AND d + e <> z THEN PRINT " "
|
|
NEXT i
|
|
SELECT CASE d + e
|
|
CASE IS < z
|
|
d = d + 1
|
|
CASE IS > z
|
|
d = d - 1
|
|
END SELECT
|
|
120 END SELECT
|
|
140 LOOP UNTIL zz = 1
|
|
|
|
90 IF y = c + 1 AND z <= d + 17 AND z >= d + 1 THEN hit2 = 1 ELSE hit2 = 0
|
|
IF y = a - 1 AND z <= b + 17 AND z >= b + 1 THEN hit1 = 1 ELSE hit1 = 0
|
|
|
|
SELECT CASE hit1
|
|
CASE IS = 1
|
|
serveHit = 0
|
|
longHit = rand(12 - accuracy(opponent))
|
|
SELECT CASE longHit
|
|
CASE IS = 1
|
|
IF d > 28 THEN sideHit = 1 ELSE sideHit = 2
|
|
280 IF sideHit = 1 THEN e = rand(4) + 0 ELSE e = rand(4) + 13
|
|
IF e = 1 AND d < 50 AND d > 30 THEN GOTO 280
|
|
IF e = 17 AND d < 50 AND d > 30 THEN GOTO 280
|
|
CASE ELSE
|
|
e = rand(17)
|
|
END SELECT
|
|
END SELECT
|
|
|
|
SELECT CASE hit2
|
|
CASE IS = 1
|
|
IF serveNow = 0 THEN serveHit = 0
|
|
ballHit = d - z + 9
|
|
direction = 2
|
|
IF speed <> 0 THEN speed = power(opponent)
|
|
END SELECT
|
|
SELECT CASE hit1
|
|
CASE IS = 1
|
|
ballHit = b - z + 9
|
|
direction = 1
|
|
IF speed <> 0 THEN speed = 10
|
|
END SELECT
|
|
serveNow = 0
|
|
|
|
IF hit2 = 0 AND hit1 = 0 THEN GOTO 50
|
|
directionlr = 1
|
|
FOR i = 1 TO 8
|
|
IF ballHit = -i THEN directionlr = 2
|
|
IF ballHit = -i THEN ballHit = i
|
|
NEXT i
|
|
|
|
50 IF ballHit = 0 THEN changeAmount = 100 ELSE changeAmount = 9 - ballHit
|
|
IF b < -12 THEN b = -12
|
|
IF b > 75 THEN b = 75
|
|
IF d < -12 THEN d = -12
|
|
IF d > 75 THEN d = 75
|
|
IF y < 6 THEN y = 6
|
|
IF y > 47 THEN y = 47
|
|
IF z < 1 THEN z = 1
|
|
IF z > 80 THEN z = 80
|
|
|
|
IF winner > 0 THEN GOTO 160
|
|
finish = 0
|
|
IF y = 15 THEN winner = 1
|
|
IF y = 15 AND serveHit <> 1 THEN winners(1) = winners(1) + 1
|
|
IF y = 15 AND serveHit = 1 THEN aces(1) = aces(1) + 1
|
|
IF y = 38 THEN winner = 2
|
|
IF y = 38 AND serveHit <> 1 THEN winners(2) = winners(2) + 1
|
|
IF y = 38 AND serveHit = 1 THEN aces(2) = aces(2) + 1
|
|
IF y = 15 THEN noOutChance = 1
|
|
IF y = 38 THEN noOutChance = 1
|
|
IF z <= 1 AND direction = 1 THEN winner = 2
|
|
IF z <= 1 AND direction = 1 AND serveHit <> 1 THEN errors(1) = errors(1) + 1
|
|
IF z <= 1 AND direction = 1 AND serveHit = 1 THEN faults(1) = faults(1) + 1
|
|
IF z <= 1 AND direction = 2 THEN winner = 1
|
|
IF z <= 1 AND direction = 2 AND serveHit <> 1 THEN errors(2) = errors(2) + 1
|
|
IF z <= 1 AND direction = 2 AND serveHit = 1 THEN faults(2) = faults(2) + 1
|
|
IF z >= 80 AND direction = 1 THEN winner = 2
|
|
IF z >= 80 AND direction = 1 AND serveHit <> 1 THEN errors(1) = errors(1) + 1
|
|
IF z >= 80 AND direction = 1 AND serveHit = 1 THEN faults(1) = faults(1) + 1
|
|
IF z >= 80 AND direction = 2 THEN winner = 1
|
|
IF z >= 80 AND direction = 2 AND serveHit <> 1 THEN errors(2) = errors(2) + 1
|
|
IF z >= 80 AND direction = 2 AND serveHit = 1 THEN faults(2) = faults(2) + 1
|
|
160 IF y = 6 THEN finish = 1
|
|
IF y = 47 THEN finish = 2
|
|
IF z <= 1 AND direction = 1 THEN finish = 2
|
|
IF z <= 1 AND direction = 2 THEN finish = 1
|
|
IF z >= 80 AND direction = 1 THEN finish = 2
|
|
IF z >= 80 AND direction = 2 THEN finish = 1
|
|
IF noOutChance = 1 THEN GOTO 240
|
|
SELECT CASE winner
|
|
CASE IS > 0
|
|
LOCATE 24, 38
|
|
COLOR 15, 2
|
|
PRINT "OUT!"
|
|
FOR t = 1 TO 180000
|
|
NEXT t
|
|
END SELECT
|
|
240 SELECT CASE y
|
|
CASE IS <= 15
|
|
LOCATE 24, 38
|
|
COLOR 15, 2
|
|
IF serveHit = 1 THEN PRINT "ACE!"
|
|
CASE IS >= 38
|
|
LOCATE 24, 38
|
|
COLOR 15, 2
|
|
IF serveHit = 1 THEN PRINT "ACE!"
|
|
END SELECT
|
|
LOOP UNTIL finish <> 0
|
|
|
|
points(winner) = points(winner) + 1
|
|
SELECT CASE points(winner)
|
|
CASE IS = 4
|
|
IF winner = 1 THEN loser = 2 ELSE loser = 1
|
|
SELECT CASE points(loser)
|
|
CASE IS = 4
|
|
points(winner) = 3
|
|
points(loser) = 3
|
|
CASE IS < 3
|
|
points(winner) = 5
|
|
END SELECT
|
|
END SELECT
|
|
|
|
FOR i = 1 TO 2
|
|
SELECT CASE points(i)
|
|
CASE IS = 0
|
|
realPoints$(i) = "0"
|
|
CASE IS = 1
|
|
realPoints$(i) = "15"
|
|
CASE IS = 2
|
|
realPoints$(i) = "30"
|
|
CASE IS = 3
|
|
realPoints$(i) = "40"
|
|
CASE IS = 4
|
|
realPoints$(i) = "A"
|
|
CASE IS = 5
|
|
points(1) = 0
|
|
points(2) = 0
|
|
realPoints$(1) = "0"
|
|
realPoints$(2) = "0"
|
|
games(i) = games(i) + 1
|
|
IF serve = 1 THEN serve = 2 ELSE serve = 1
|
|
END SELECT
|
|
IF games(i) = gamesToWin THEN sets(i) = sets(i) + 1
|
|
IF games(i) = gamesToWin THEN games(1) = 0
|
|
IF games(i) = gamesToWin THEN games(2) = 0
|
|
NEXT i
|
|
speed = 0
|
|
LOOP UNTIL sets(1) = 1 OR sets(2) = setsToWin
|
|
|
|
COLOR 0, 2
|
|
CLS
|
|
FOR i = 1 TO 2
|
|
LOCATE 1 + i, 2
|
|
COLOR 7, 1
|
|
PRINT " "
|
|
LOCATE 1 + i, 2
|
|
COLOR 7, 1
|
|
IF i = 1 AND serve = 1 THEN PRINT surname$; " *"
|
|
IF i = 1 AND serve = 2 THEN PRINT surname$
|
|
IF i = 2 AND serve = 1 THEN PRINT surname$(opponent);
|
|
IF i = 2 AND serve = 2 THEN PRINT surname$(opponent); " *"
|
|
LOCATE 1 + i, 20
|
|
COLOR 7, 3
|
|
PRINT " "
|
|
LOCATE 1 + i, 21
|
|
COLOR 7, 3
|
|
PRINT realPoints$(i)
|
|
LOCATE 1 + i, 24
|
|
COLOR 7, 4
|
|
PRINT " "
|
|
COLOR 7, 4
|
|
LOCATE 1 + i, 24
|
|
PRINT games(i)
|
|
LOCATE 1 + i, 28
|
|
COLOR 7, 6
|
|
PRINT " "
|
|
COLOR 7, 6
|
|
LOCATE 1 + i, 28
|
|
PRINT sets(i)
|
|
NEXT i
|
|
COLOR 15, 2
|
|
LOCATE 30, 20
|
|
SELECT CASE sets(1)
|
|
CASE IS > sets(2)
|
|
IF challenge = 1 THEN cCompleted(challenge) = 1
|
|
PRINT forename$; " "; surname$; " BEAT "; forename$(opponent); " "; surname$(opponent); " "; sets(1); "-"; sets(2)
|
|
CASE ELSE
|
|
PRINT forename$(opponent); " "; surname$(opponent); " BEAT "; forename$; " "; surname$; " "; sets(2); "-"; sets(1)
|
|
END SELECT
|
|
COLOR 7, 2
|
|
LOCATE 34, 20
|
|
PRINT "PRESS RETURN TO VIEW THE MATCH STATISTICS"
|
|
DO
|
|
LOOP UNTIL INKEY$ = CHR$(13)
|
|
|
|
COLOR 15, 2
|
|
CLS
|
|
FOR i = 1 TO 2
|
|
LOCATE 1 + i, 2
|
|
COLOR 7, 1
|
|
PRINT " "
|
|
LOCATE 1 + i, 2
|
|
COLOR 7, 1
|
|
IF i = 1 AND serve = 1 THEN PRINT surname$; " *"
|
|
IF i = 1 AND serve = 2 THEN PRINT surname$
|
|
IF i = 2 AND serve = 1 THEN PRINT surname$(opponent);
|
|
IF i = 2 AND serve = 2 THEN PRINT surname$(opponent); " *"
|
|
LOCATE 1 + i, 20
|
|
COLOR 7, 3
|
|
PRINT " "
|
|
LOCATE 1 + i, 21
|
|
COLOR 7, 3
|
|
PRINT realPoints$(i)
|
|
LOCATE 1 + i, 24
|
|
COLOR 7, 4
|
|
PRINT " "
|
|
COLOR 7, 4
|
|
LOCATE 1 + i, 24
|
|
PRINT games(i)
|
|
LOCATE 1 + i, 28
|
|
COLOR 7, 6
|
|
PRINT " "
|
|
COLOR 7, 6
|
|
LOCATE 1 + i, 28
|
|
PRINT sets(i)
|
|
NEXT i
|
|
|
|
COLOR 15, 2
|
|
LOCATE 28, 20
|
|
PRINT surname$
|
|
LOCATE 28, 48
|
|
PRINT surname$(opponent)
|
|
LOCATE 30, 33
|
|
PRINT "TOTAL SETS"
|
|
LOCATE 32, 32
|
|
PRINT "TOTAL POINTS"
|
|
LOCATE 34, 36
|
|
PRINT "ACES"
|
|
LOCATE 36, 34
|
|
PRINT "WINNERS"
|
|
LOCATE 38, 30
|
|
PRINT "SERVICE FAULTS"
|
|
LOCATE 40, 30
|
|
PRINT "UNFORCED ERRORS"
|
|
COLOR 7, 2
|
|
LOCATE 30, 25
|
|
PRINT sets(1)
|
|
LOCATE 30, 47
|
|
PRINT sets(2)
|
|
LOCATE 32, 25
|
|
PRINT aces(1) + winners(1) + faults(2) + errors(2)
|
|
LOCATE 32, 47
|
|
PRINT aces(2) + winners(2) + faults(1) + errors(1)
|
|
LOCATE 34, 25
|
|
PRINT aces(1)
|
|
LOCATE 34, 47
|
|
PRINT aces(2)
|
|
LOCATE 36, 25
|
|
PRINT winners(1)
|
|
LOCATE 36, 47
|
|
PRINT winners(2)
|
|
LOCATE 38, 25
|
|
PRINT faults(1)
|
|
LOCATE 38, 47
|
|
PRINT faults(2)
|
|
LOCATE 40, 25
|
|
PRINT errors(1)
|
|
LOCATE 40, 47
|
|
PRINT errors(2)
|
|
DO
|
|
LOOP UNTIL INKEY$ = CHR$(13)
|
|
COLOR 15, 2
|
|
CLS
|
|
IF challenge > 0 THEN gamesToWin = oGamesToWin
|
|
IF challenge > 0 THEN setsToWin = oSetsToWin
|
|
IF challenge > 0 THEN forename$ = oForename$
|
|
IF challenge > 0 THEN surname$ = oSurname$
|
|
END SUB
|
|
|
|
SUB matchDayMenu
|
|
560 os = 1
|
|
COLOR 15, 2
|
|
CLS
|
|
550 LOCATE 16, 24
|
|
COLOR 15, 2
|
|
PRINT "MATCH DAY"
|
|
LOCATE 20, 24
|
|
PRINT forename$; " "; surname$; " V "; forename$(opponent); " "; surname$(opponent)
|
|
LOCATE 22, 24
|
|
PRINT "First to "; gamesToWin; " games"
|
|
LOCATE 24, 24
|
|
IF setsToWin = 1 THEN PRINT "First to 1 set" ELSE PRINT "First to "; setsToWin; " sets"
|
|
LOCATE 30, 24
|
|
IF os = 1 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
PRINT "MATCH OPTIONS"
|
|
LOCATE 32, 24
|
|
IF os = 2 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
PRINT "GO TO MATCH"
|
|
|
|
540 SELECT CASE INKEY$
|
|
CASE IS = u$
|
|
os = os - 1
|
|
IF os < 1 THEN os = 2
|
|
GOTO 550
|
|
CASE IS = d$
|
|
os = os + 1
|
|
IF os > 2 THEN os = 1
|
|
GOTO 550
|
|
CASE IS = CHR$(13)
|
|
CASE ELSE
|
|
GOTO 540
|
|
END SELECT
|
|
|
|
SELECT CASE os
|
|
CASE IS = 1
|
|
CALL options
|
|
GOTO 560
|
|
CASE IS = 2
|
|
CALL matchDay
|
|
END SELECT
|
|
END SUB
|
|
|
|
SUB options
|
|
COLOR 15, 2
|
|
os = 1
|
|
230 COLOR 15, 2
|
|
CLS
|
|
IF gamesToWin2 = 1 THEN gamesToWin = 3 ELSE gamesToWin = 6
|
|
COLOR 15, 2
|
|
LOCATE 16, 32
|
|
PRINT "OPTIONS"
|
|
IF os = 1 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
LOCATE 20, 32
|
|
PRINT "GAMES IN A SET : FIRST TO "; gamesToWin
|
|
IF os = 2 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
LOCATE 22, 32
|
|
PRINT "SETS IN A MATCH : FIRST TO "; setsToWin
|
|
IF os = 3 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
LOCATE 24, 32
|
|
PRINT "USER'S RACKET : "; colour$(userColour)
|
|
IF os = 4 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
LOCATE 26, 32
|
|
PRINT "OPPONENT'S RACKET: "; colour$(opponentColour)
|
|
IF os = 5 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
LOCATE 28, 32
|
|
PRINT "RETURN TO MATCH MENU"
|
|
|
|
220 SELECT CASE INKEY$
|
|
CASE IS = u$
|
|
os = os - 1
|
|
IF os < 1 THEN os = 5
|
|
GOTO 230
|
|
CASE IS = d$
|
|
os = os + 1
|
|
IF os > 5 THEN os = 1
|
|
GOTO 230
|
|
CASE IS = l$
|
|
IF os = 1 THEN gamesToWin2 = gamesToWin2 - 1
|
|
IF os = 2 THEN setsToWin = setsToWin - 1
|
|
IF gamesToWin2 < 1 THEN gamesToWin2 = 2
|
|
IF setsToWin < 1 THEN setsToWin = 3
|
|
IF os = 3 THEN userColour = userColour - 1
|
|
IF userColour < 3 THEN userColour = 15
|
|
IF os = 4 THEN opponentColour = opponentColour - 1
|
|
IF opponentColour < 3 THEN opponentColour = 15
|
|
GOTO 230
|
|
CASE IS = r$
|
|
IF os = 1 THEN gamesToWin2 = gamesToWin2 + 1
|
|
IF os = 2 THEN setsToWin = setsToWin + 1
|
|
IF gamesToWin2 > 2 THEN gamesToWin2 = 1
|
|
IF setsToWin > 3 THEN setsToWin = 1
|
|
IF os = 3 THEN userColour = userColour + 1
|
|
IF userColour > 15 THEN userColour = 3
|
|
IF os = 4 THEN opponentColour = opponentColour + 1
|
|
IF opponentColour > 15 THEN opponentColour = 3
|
|
GOTO 230
|
|
CASE IS = CHR$(13)
|
|
IF os <> 5 THEN GOTO 220
|
|
CASE ELSE
|
|
GOTO 220
|
|
END SELECT
|
|
COLOR 15, 2
|
|
CLS
|
|
END SUB
|
|
|
|
SUB preMatchDay
|
|
os = 1
|
|
COLOR 15, 2
|
|
CLS
|
|
200 COLOR 15, 2
|
|
LOCATE 16, 24
|
|
PRINT "SELECT YOUR OPPONENT"
|
|
COLOR 7, 2
|
|
LOCATE 20, 24
|
|
PRINT CHR$(29); " "; forename$(os); " "; surname$(os); " "; CHR$(29); " "
|
|
LOCATE 24, 24
|
|
COLOR 15, 2
|
|
PRINT "SPEED:"
|
|
LOCATE 26, 24
|
|
COLOR 15, 2
|
|
PRINT "POWER:"
|
|
LOCATE 28, 24
|
|
COLOR 15, 2
|
|
PRINT "ACCURACY:"
|
|
FOR i = 1 TO 10
|
|
LOCATE 24, i + 34
|
|
COLOR 4, 2
|
|
IF i <= speedRating(os) THEN PRINT CHR$(219) ELSE PRINT " "
|
|
LOCATE 26, i + 34
|
|
COLOR 5, 2
|
|
IF i <= power(os) THEN PRINT CHR$(219) ELSE PRINT " "
|
|
LOCATE 28, i + 34
|
|
COLOR 6, 2
|
|
IF i <= accuracy(os) THEN PRINT CHR$(219) ELSE PRINT " "
|
|
NEXT i
|
|
|
|
190 SELECT CASE INKEY$
|
|
CASE IS = l$
|
|
os = os - 1
|
|
IF os < 1 THEN os = 31
|
|
GOTO 200
|
|
CASE IS = r$
|
|
os = os + 1
|
|
IF os > 31 THEN os = 1
|
|
GOTO 200
|
|
CASE IS = CHR$(13)
|
|
CASE ELSE
|
|
GOTO 190
|
|
END SELECT
|
|
|
|
opponent = os
|
|
CALL matchDayMenu
|
|
END SUB
|
|
|
|
FUNCTION rand (c)
|
|
RANDOMIZE TIMER
|
|
rand = INT(c * RND(1)) + 1
|
|
END FUNCTION
|
|
|
|
SUB targetPractice
|
|
430 a = 37
|
|
b = 32
|
|
score = 0
|
|
w = 6
|
|
SELECT CASE target
|
|
CASE IS > 4
|
|
location = rand(2)
|
|
IF location = 1 THEN x = rand(16) ELSE x = rand(16) + 55
|
|
CASE ELSE
|
|
x = rand(68)
|
|
END SELECT
|
|
y = 36
|
|
z = 40
|
|
t = 0
|
|
alreadyAdded = 0
|
|
hitTarget = 0
|
|
totals = 0
|
|
speed = 0
|
|
direction = 1
|
|
|
|
COLOR 15, 2
|
|
CLS
|
|
|
|
LOCATE 16, 24
|
|
PRINT "TARGET PRACTICE"
|
|
COLOR 7, 2
|
|
LOCATE 20, 24
|
|
PRINT "There are 10 targets to hit, each one slightly"
|
|
LOCATE 21, 24
|
|
PRINT "smaller than the last. Every time you hit the"
|
|
LOCATE 22, 24
|
|
PRINT "back wall, hit the ball out, or miss the ball,"
|
|
LOCATE 23, 24
|
|
PRINT "your score will increase by 1 point. The lower"
|
|
LOCATE 24, 24
|
|
PRINT "your score at the end, the better. Shown next"
|
|
LOCATE 25, 24
|
|
PRINT "to your name are firstly, the amount of targets"
|
|
LOCATE 26, 24
|
|
PRINT "you've hit so far, followed by your points."
|
|
LOCATE 27, 24
|
|
PRINT "Remember to keep your points low!"
|
|
COLOR 15, 2
|
|
LOCATE 35, 24
|
|
PRINT "PRESS RETURN TO BEGIN TARGET PRACTICE"
|
|
DO
|
|
LOOP UNTIL INKEY$ = CHR$(13)
|
|
|
|
score = 0
|
|
FOR target = 1 TO 10
|
|
w = 6
|
|
SELECT CASE target
|
|
CASE IS > 4
|
|
location = rand(2)
|
|
IF location = 1 THEN x = rand(16) ELSE x = rand(16) + 55
|
|
CASE ELSE
|
|
x = rand(68)
|
|
END SELECT
|
|
|
|
alreadyAdded = 0
|
|
hitTarget = 0
|
|
IF y = w THEN y = y + 2
|
|
IF y - w = 1 THEN y = y + 1
|
|
COLOR 15, 2
|
|
CLS
|
|
FOR i = 2 TO 20
|
|
COLOR 1, 15
|
|
LOCATE 2, i
|
|
PRINT CHR$(219)
|
|
NEXT i
|
|
COLOR 15, 1
|
|
LOCATE 2, 2
|
|
PRINT surname$
|
|
|
|
DO
|
|
LOCATE 2, 21
|
|
COLOR 15, 4
|
|
PRINT target - 1
|
|
LOCATE 2, 24
|
|
COLOR 15, 5
|
|
PRINT " SCORE "; score
|
|
|
|
FOR i = 1 TO 11 - target
|
|
LOCATE w, x + i
|
|
COLOR target + 2, 2
|
|
PRINT CHR$(219)
|
|
NEXT i
|
|
|
|
FOR i = 1 TO 17
|
|
COLOR userColour, 2
|
|
IF b + i > 0 AND b + i < 81 THEN LOCATE a, b + i
|
|
COLOR 6, 2
|
|
IF b + i > 0 AND b + i < 81 THEN PRINT CHR$(223)
|
|
NEXT i
|
|
|
|
LOCATE y, z
|
|
COLOR 10, 2
|
|
PRINT "o"
|
|
|
|
SELECT CASE INKEY$
|
|
CASE IS = l$
|
|
FOR i = 1 TO 17
|
|
IF b + i > 0 AND b + i < 81 THEN LOCATE a, b + i
|
|
COLOR 6, 2
|
|
IF b + i > 0 AND b + i < 81 THEN PRINT " "
|
|
NEXT i
|
|
b = b - 1
|
|
CASE IS = r$
|
|
FOR i = 1 TO 17
|
|
IF b + i > 0 AND b + i < 81 THEN LOCATE a, b + i
|
|
COLOR 6, 2
|
|
IF b + i > 0 AND b + i < 81 THEN PRINT " "
|
|
NEXT i
|
|
b = b + 1
|
|
CASE IS = CHR$(13)
|
|
IF y < b - 3 THEN GOTO 330
|
|
IF y > b + 13 THEN GOTO 330
|
|
IF speed <> 0 THEN GOTO 330
|
|
speed = 10
|
|
ballHit = b - z + 9
|
|
directionlr = 1
|
|
FOR i = 1 TO 8
|
|
IF ballHit = -i THEN directionlr = 2
|
|
IF ballHit = -i THEN ballHit = i
|
|
NEXT i
|
|
330 END SELECT
|
|
|
|
IF speed = 0 THEN GOTO 320
|
|
moveAmount = (15 - speed) / 200
|
|
moveAmount = INT(moveAmount * 1000) / 1000
|
|
SELECT CASE TIMER
|
|
CASE IS >= t + moveAmount
|
|
COLOR 2, 2
|
|
LOCATE y, z
|
|
PRINT " "
|
|
IF direction = 1 THEN y = y - 1 ELSE y = y + 1
|
|
t = TIMER
|
|
totals = totals + 1
|
|
END SELECT
|
|
|
|
SELECT CASE totals
|
|
CASE IS >= changeAmount
|
|
COLOR 2, 2
|
|
LOCATE y, z
|
|
PRINT " "
|
|
IF directionlr = 1 THEN z = z - 1 ELSE z = z + 1
|
|
IF ballHit = 8 AND directionlr = 1 AND serveHit <> 1 THEN z = z - 1
|
|
IF ballHit = 8 AND directionlr = 2 AND serveHit <> 1 THEN z = z + 1
|
|
totals = 0
|
|
END SELECT
|
|
|
|
hit1 = 0
|
|
IF y = a - 1 AND z <= b + 17 AND z >= b + 1 THEN hit1 = 1 ELSE hit1 = 0
|
|
SELECT CASE hit1
|
|
CASE IS = 1
|
|
ballHit = b - z + 9
|
|
directionlr = 1
|
|
direction = 1
|
|
FOR i = 1 TO 8
|
|
IF ballHit = -i THEN directionlr = 2
|
|
IF ballHit = -i THEN ballHit = i
|
|
NEXT i
|
|
END SELECT
|
|
320 IF ballHit = 0 THEN changeAmount = 100 ELSE changeAmount = 9 - ballHit
|
|
IF b < -12 THEN b = -12
|
|
IF b > 75 THEN b = 75
|
|
IF d < -12 THEN d = -12
|
|
IF d > 75 THEN d = 75
|
|
IF y < 1 THEN y = 1
|
|
IF y > 47 THEN y = 47
|
|
IF z < 1 THEN z = 1
|
|
IF z > 80 THEN z = 80
|
|
IF y = 2 THEN direction = 2
|
|
IF y = 2 AND alreadyAdded = 0 THEN score = score + 1
|
|
IF y = 2 AND alreadyAdded = 0 THEN alreadyAdded = 1
|
|
IF y = 3 THEN alreadyAdded = 0
|
|
outOfBounds = 0
|
|
IF y > 42 THEN outOfBounds = 1
|
|
IF z < 2 THEN outOfBounds = 1
|
|
IF z > 79 THEN outOfBounds = 1
|
|
|
|
FOR i = 1 TO 11 - target
|
|
IF y = w + 1 AND z = x + i THEN hitTarget = 1
|
|
IF y = w AND z = x + i THEN hitTarget = 1
|
|
NEXT i
|
|
IF hitTarget = 1 THEN direction = 2
|
|
|
|
SELECT CASE outOfBounds
|
|
CASE IS = 1
|
|
score = score + 1
|
|
speed = 0
|
|
a = 37
|
|
b = 32
|
|
y = 36
|
|
z = 40
|
|
t = 0
|
|
totals = 0
|
|
speed = 0
|
|
direction = 1
|
|
alreadyAdded = 0
|
|
COLOR 15, 2
|
|
CLS
|
|
FOR i = 2 TO 20
|
|
COLOR 1, 15
|
|
LOCATE 2, i
|
|
PRINT CHR$(219)
|
|
NEXT i
|
|
COLOR 15, 1
|
|
LOCATE 2, 2
|
|
PRINT surname$
|
|
END SELECT
|
|
LOOP UNTIL hitTarget = 1
|
|
NEXT target
|
|
|
|
COLOR 15, 2
|
|
CLS
|
|
FOR i = 2 TO 20
|
|
COLOR 1, 15
|
|
LOCATE 2, i
|
|
PRINT CHR$(219)
|
|
NEXT i
|
|
COLOR 15, 1
|
|
LOCATE 2, 2
|
|
PRINT surname$
|
|
LOCATE 2, 21
|
|
COLOR 15, 4
|
|
PRINT target - 1
|
|
LOCATE 2, 25
|
|
COLOR 15, 3
|
|
PRINT " SCORE "; score
|
|
|
|
COLOR 15, 2
|
|
LOCATE 16, 24
|
|
SELECT CASE score
|
|
CASE IS < 10
|
|
PRINT "THAT WAS AN UNBELIEVEABLE EFFORT! WELL PLAYED!"
|
|
CASE 10 TO 18
|
|
PRINT "WELL DONE! THAT WAS AN EXCELLENT PERFORMANCE."
|
|
CASE 19 TO 26
|
|
PRINT "VERY IMPRESSIVE! YOU SHOULD BE PLEASED WITH THAT SCORE."
|
|
CASE 27 TO 35
|
|
PRINT "GOOD SCORE, BUT STILL A LOT OF IMPROVEMENT TO BE MADE."
|
|
CASE 36 TO 42
|
|
PRINT "NOT A BAD SCORE, BUT YOU CAN DO MUCH BETTER."
|
|
CASE 43 TO 50
|
|
PRINT "BY NO MEANS IMPRESSIVE. TRY AGAIN."
|
|
CASE 51 TO 56
|
|
PRINT "HAVE YOU FORGOTTEN THAT THE IDEA IS TO GET A LOW SCORE?"
|
|
CASE 57 TO 62
|
|
PRINT "THAT WAS ABSOLUTELY DREADFUL. ENOUGH SAID."
|
|
CASE IS > 62
|
|
PRINT "THAT WAS SHOCKING. HAVE YOU EVER PLAYED THIS GAME BEFORE?"
|
|
END SELECT
|
|
|
|
LOCATE 20, 24
|
|
PRINT "YOUR SCORE:"
|
|
COLOR 7, 2
|
|
LOCATE 20, 36
|
|
PRINT score
|
|
LOCATE 28, 24
|
|
PRINT "PRESS RETURN TO GO BACK TO THE MAIN MENU"
|
|
LOCATE 30, 24
|
|
PRINT "PRESS SPACE TO TRY TARGET PRACTICE AGAIN"
|
|
420 SELECT CASE INKEY$
|
|
CASE IS = CHR$(13)
|
|
CASE IS = CHR$(32)
|
|
GOTO 430
|
|
CASE ELSE
|
|
GOTO 420
|
|
END SELECT
|
|
END SUB
|
|
|
|
SUB tournament
|
|
forename$(32) = forename$
|
|
surname$(32) = surname$
|
|
|
|
FOR i = 1 TO 32
|
|
in(i) = 1
|
|
flag(i) = 0
|
|
NEXT i
|
|
|
|
FOR roundNumber = 1 TO 5
|
|
SELECT CASE roundNumber
|
|
CASE IS = 1
|
|
entrants = 32
|
|
CASE IS = 2
|
|
entrants = 16
|
|
CASE IS = 3
|
|
entrants = 8
|
|
CASE IS = 4
|
|
entrants = 4
|
|
CASE IS = 5
|
|
entrants = 2
|
|
END SELECT
|
|
|
|
FOR i = 1 TO 32
|
|
flag(i) = 0
|
|
NEXT i
|
|
|
|
FOR i = 1 TO entrants
|
|
DO
|
|
tournamentPlayer(i) = rand(32)
|
|
LOOP UNTIL flag(tournamentPlayer(i)) = 0 AND in(tournamentPlayer(i)) = 1
|
|
flag(tournamentPlayer(i)) = 1
|
|
NEXT i
|
|
|
|
userIn = 0
|
|
COLOR 15, 2
|
|
CLS
|
|
LOCATE 6, 5
|
|
IF roundNumber = 5 THEN PRINT "THE FINAL:" ELSE PRINT round$(roundNumber); " FIXUTES:"
|
|
FOR i = 1 TO 32
|
|
FOR j = 1 TO entrants
|
|
IF tournamentPlayer(j) = 32 OR tournamentPlayer(j + 1) = 32 THEN COLOR 15, 2 ELSE COLOR 7, 2
|
|
IF tournamentPlayer(j) = 32 OR tournamentPlayer(j + 1) = 32 THEN userIn = 1
|
|
LOCATE j + 10, 5
|
|
IF tournamentPlayer(j) = i THEN PRINT forename$(i); " "; surname$(i)
|
|
LOCATE j + 10, 40
|
|
IF tournamentPlayer(j + 1) = i THEN PRINT forename$(i); " "; surname$(i)
|
|
LOCATE j + 10, 32
|
|
PRINT "V"
|
|
j = j + 1
|
|
NEXT j
|
|
NEXT i
|
|
COLOR 15, 2
|
|
LOCATE 44, 5
|
|
IF userIn = 1 THEN PRINT "PRESS RETURN TO GO TO YOUR NEXT MATCH" ELSE PRINT "YOU ARE OUT OF THE TOURNAMENT. PRESS RETURN TO SKIP TO THE NEXT ROUND"
|
|
DO
|
|
LOOP UNTIL INKEY$ = CHR$(13)
|
|
|
|
userDone = 0
|
|
FOR j = 1 TO entrants
|
|
IF tournamentPlayer(j) = 32 OR tournamentPlayer(j + 1) = 32 THEN userMatch = 1 ELSE userMatch = 0
|
|
IF userMatch = 1 THEN userDone = userDone + 1
|
|
SELECT CASE userMatch
|
|
CASE IS = 1
|
|
IF userDone > 1 THEN GOTO 270
|
|
IF tournamentPlayer(j) = 32 THEN opponent = tournamentPlayer(j + 1) ELSE opponent = tournamentPlayer(j)
|
|
CALL matchDayMenu
|
|
IF winner = 1 THEN in(opponent) = 0 ELSE in(32) = 0
|
|
CASE ELSE
|
|
270 totalRating = speedRating(tournamentPlayer(j)) + power(tournamentPlayer(j)) + accuracy(tournamentPlayer(j)) + speedRating(tournamentPlayer(j + 1)) + power(tournamentPlayer(j + 1)) + accuracy(tournamentPlayer(j + 1))
|
|
randTR = rand(totalRating)
|
|
SELECT CASE randTR
|
|
CASE IS <= speedRating(tournamentPlayer(j)) + power(tournamentPlayer(j)) + accuracy(tournamentPlayer(j))
|
|
in(tournamentPlayer(j + 1)) = 0
|
|
CASE ELSE
|
|
in(tournamentPlayer(j)) = 0
|
|
END SELECT
|
|
END SELECT
|
|
j = j + 1
|
|
NEXT j
|
|
NEXT roundNumber
|
|
|
|
COLOR 7, 2
|
|
CLS
|
|
FOR i = 34 TO 44
|
|
LOCATE 6, i
|
|
PRINT CHR$(219)
|
|
NEXT i
|
|
LOCATE 7, 34
|
|
PRINT CHR$(219); CHR$(219)
|
|
LOCATE 7, 43
|
|
PRINT CHR$(219); CHR$(219)
|
|
LOCATE 8, 35
|
|
PRINT CHR$(219); CHR$(219); CHR$(219)
|
|
LOCATE 8, 41
|
|
PRINT CHR$(219); CHR$(219); CHR$(219)
|
|
FOR i = 37 TO 41
|
|
LOCATE 9, i
|
|
PRINT CHR$(219)
|
|
NEXT i
|
|
|
|
FOR j = 10 TO 20
|
|
FOR i = 36 TO 42
|
|
LOCATE j, i
|
|
PRINT CHR$(219)
|
|
NEXT i
|
|
NEXT j
|
|
|
|
COLOR 7, 0
|
|
FOR i = 35 TO 43
|
|
LOCATE 21, i
|
|
IF i > 36 AND i < 42 THEN PRINT CHR$(196) ELSE PRINT " "
|
|
NEXT i
|
|
FOR i = 34 TO 44
|
|
LOCATE 22, i
|
|
IF i > 35 AND i < 43 THEN PRINT CHR$(196) ELSE PRINT " "
|
|
NEXT i
|
|
FOR i = 33 TO 45
|
|
LOCATE 23, i
|
|
IF i > 34 AND i < 44 THEN PRINT CHR$(196) ELSE PRINT " "
|
|
NEXT i
|
|
|
|
COLOR 15, 2
|
|
LOCATE 30, 20
|
|
PRINT "TOURNAMENT WINNER:"
|
|
COLOR 7, 2
|
|
LOCATE 30, 40
|
|
FOR i = 1 TO 32
|
|
IF in(i) = 1 THEN PRINT forename$(i); " "; surname$(i)
|
|
NEXT i
|
|
LOCATE 34, 20
|
|
PRINT "PRESS RETURN TO GO BACK TO THE MAIN MENU"
|
|
DO
|
|
LOOP UNTIL INKEY$ = CHR$(13)
|
|
COLOR 15, 2
|
|
CLS
|
|
END SUB
|
|
|
|
SUB training
|
|
os = 1
|
|
COLOR 15, 2
|
|
CLS
|
|
310 COLOR 15, 2
|
|
LOCATE 16, 32
|
|
PRINT "SELECT TRAINING TYPE"
|
|
LOCATE 20, 32
|
|
IF os = 1 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
PRINT "TARGET PRACTICE"
|
|
LOCATE 22, 32
|
|
IF os = 2 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
PRINT "BACK WALL RALLY"
|
|
LOCATE 24, 32
|
|
IF os = 3 THEN COLOR 2, 7 ELSE COLOR 7, 2
|
|
PRINT "RETURN TO MAIN MENU"
|
|
|
|
300 SELECT CASE INKEY$
|
|
CASE IS = u$
|
|
os = os - 1
|
|
IF os < 1 THEN os = 3
|
|
GOTO 310
|
|
CASE IS = d$
|
|
os = os + 1
|
|
IF os > 3 THEN os = 1
|
|
GOTO 310
|
|
CASE IS = CHR$(13)
|
|
CASE ELSE
|
|
GOTO 300
|
|
END SELECT
|
|
|
|
SELECT CASE os
|
|
CASE IS = 1
|
|
CALL targetPractice
|
|
CASE IS = 2
|
|
CALL backWallRally
|
|
CASE IS = 3
|
|
END SELECT
|
|
|
|
COLOR 15, 2
|
|
CLS
|
|
END SUB
|
|
|
|
SUB worldRankings
|
|
COLOR 15, 2
|
|
CLS
|
|
LOCATE 2, 5
|
|
PRINT forename$(32); " "; surname$(32); " "; day; " "; month$(month); " "; year
|
|
LOCATE 5, 5
|
|
PRINT "WORLD RANKINGS:"
|
|
LOCATE 9, 5
|
|
PRINT "RANK"
|
|
LOCATE 9, 12
|
|
PRINT "PLAYER"
|
|
LOCATE 9, 38
|
|
PRINT "RANK POINTS"
|
|
FOR i = 1 TO 32
|
|
IF i = 32 THEN COLOR 15, 2 ELSE COLOR 7, 2
|
|
LOCATE rank(i) + 10, 4
|
|
PRINT rank(i)
|
|
LOCATE rank(i) + 10, 12
|
|
PRINT forename$(i); " "; surname$(i)
|
|
LOCATE rank(i) + 10, 37
|
|
PRINT arp(i)
|
|
NEXT i
|
|
DO
|
|
LOOP UNTIL INKEY$ = CHR$(13)
|
|
COLOR 15, 2
|
|
CLS
|
|
END SUB
|
|
|