Tennis anyone?
Content
Image Gallery
Source Code
110 REM TENNIS by P.SPROSTON
125 BORDER 4: PAPER 4: INK 0: CLS
130 GO SUB 2000
200 PRINT AT 19,0;,,
210 INPUT "WHAT DO YOU WANT AS THE WINNING SCORE ";WS
215 IF WS<=0 THEN INPUT "DONT BE SILLY -- PRESS ENTER";Y$: GO TO 210
220 CLS : PLOT 40,144: DRAW 168,0: DRAW 0,-113: DRAW -168,0: DRAW 0,113: DRAW 0,-15: DRAW 168,0: DRAW 0,-83: DRAW -168,0: DRAW 42,0: DRAW 0,82: DRAW 0,-41
230 DRAW 82,0: DRAW 0,41: DRAW 0,-82: PLOT 123,152: DRAW 0,-129: DRAW 2,0: DRAW 0,129: DRAW -2,0
240 LET AP=0: LET BP=0
250 LET A=10: LET B=10: REM PS
255 LET AS=2: LET BS=2: REM SHOT
260 LET S=1+INT (RND*2)
270 IF S=1 THEN LET H=+.5
280 IF S=2 THEN LET H=-.5
300 REM CONTROL
310 GO SUB 400: REM MOVE A+B
330 IF S<>0 THEN GO SUB 7000: REM SERVE
340 GO TO 800
399 REM PRINT SCORE
400 PRINT AT 0,1;"Pts:";AP;AT 0,25;"Pts:";BP
410 IF AP>WS-1 OR BP>WS-1 THEN GO TO 9500
449 REM MOVE A
450 LET OA=A
460 LET A=A-(IN 65022)+(IN 63486)
462 IF A<2 THEN LET A=2
464 IF A>19 THEN LET A=19
465 LET AS=AS+(OA<A AND AS<3)-(OA>A AND AS>1)
469 PRINT AT OA+1,2;" ";AT OA,2;" ";AT OA-1,2;" "
470 IF AS=1 THEN PRINT AT A,2;"\b";AT A-1,2;"\a"
471 IF AS=2 THEN PRINT AT A,2;"\k"
472 IF AS=3 THEN PRINT AT A,2;"\c";AT A+1,2;"\d"
550 REM MOVE B
560 LET OB=B
570 LET B=B-(IN 49150)+(IN 61438)
572 IF B<2 THEN LET B=2
574 IF B>19 THEN LET B=19
575 LET BS=BS+(OB<B AND BS<3)-(OB>B AND BS>1)
578 PRINT AT OB+1,29;" ";AT OB,29;" ";AT OB-1,29;" "
580 IF BS=3 THEN PRINT AT B,29;"\c";AT B+1,29;"\d"
582 IF BS=2 THEN PRINT AT B,29;"\l"
584 IF BS=1 THEN PRINT AT B,29;"\b";AT B-1,29;"\a"
595 RETURN
600 IF S<>0 THEN GO SUB 7000: REM SERVE
790 REM MOVE BALL
800 PRINT OVER 1;AT INT BY,INT BX;"\f"
820 LET BX=BX+H
830 LET BY=BY+V
840 IF BY>18 OR BY<2 THEN LET BY=BY-V: LET V=V*-1
845 IF BX<26 AND BX>3 THEN GO TO 1000
850 IF BX>25 THEN GO TO 900
852 REM CHECK A
860 IF BX<0 THEN LET BP=BP+1: BEEP .03,0: LET AS=2: LET BS=2: LET S=2: GO TO 300
863 IF INT BY=A AND BX=2 THEN PRINT AT A-1,2;" ";AT A,2;" ";AT A+1,2;" ": LET BP=BP+1: LET S=2: PRINT AT A,1;"\g\h": BEEP .1,-10: FOR C=1 TO 100: NEXT C: PRINT AT A,1;" ": GO TO 300
866 IF A-1=INT BY AND BX=2 AND AS=1 THEN BEEP .03,20: GO TO 1100
869 IF A+1=INT BY AND BX=2 AND AS=3 THEN BEEP .03,20: GO TO 1100
890 GO TO 1000
895 REM CHECK B
900 IF BX>31 THEN LET AP=AP+1: BEEP .03,0: LET AS=2: LET BS=2: LET S=1: GO TO 1100
905 IF INT BY=B AND INT BX=29 THEN PRINT AT B-1,29;" ";AT B,29;" ";AT B+1,29;" ": LET AP=AP+1: LET S=1: PRINT AT B,29;"\i\j": BEEP .1,-10: FOR C=1 TO 100: NEXT C: PRINT AT B,29;" ": GO TO 300
910 IF B-1=INT BY AND BX=29 AND BS=1 THEN BEEP .03,25: GO TO 1200
915 IF B+1=INT BY AND BX=29 AND BS=3 THEN BEEP .03,25: GO TO 1200
1000 PRINT OVER 1;AT INT BY,INT BX;"\f"
1050 GO TO 300
1100 LET H=1: LET M=6+INT (RND*11)-A: LET V=M/26: GO TO 300
1200 LET H=-1: LET M=6+INT (RND*11)-B: LET V=M/26: GO TO 300
1900 REM SCREEN
2000 REM
2010 PRINT ''"\::\::\::\::\::\ \::\::\::\::\ \::\ \ \::\ \ \::\ \ \::\ \::\::\::\::\::\ \::\::\::\::\ \ \::\ \ \ \::\ \ \ \ \::\::\ \::\ \ \::\::\ \::\ \ \::\ \ \ \::\ \ \ \ \ \::\ \ \ \::\::\::\ \ \::\::\ \::\ \ \::\::\ \::\ \ \::\ \ \::\::\::\::"
2020 PRINT "\ \ \::\ \ \ \::\ \ \ \ \::\::\ \::\ \ \::\::\ \::\ \ \ \::\ \ \ \ \ \ \::\ \ \::\ \ \ \::\ \ \ \ \::\ \::\::\ \ \::\ \::\::\ \ \ \::\ \ \ \ \ \ \::\ \ \::\ \ \ \::\ \ \ \ \::\ \::\::\ \ \::\ \::\::\ \ \ \::\ \ \ \ \ \ \::\ \ \::\ \ \ \::\::\::\::\ \::\ \ \::\ \ \::\ \ \::\ \::\::\::\::\::\ \::\::\::\::"
2025 PLOT 0,0: DRAW 0,175: DRAW 255,0: DRAW 0,-175: DRAW -255,0
2030 CIRCLE 50,50,27
2040 PLOT 35,72: DRAW -10,-23,-4
2050 PLOT 74,40: DRAW -13,-15,1.3
2060 PLOT 255,90: DRAW -170,-90,1
2070 PLOT 255,75: DRAW -150,-75,1
2075 RESTORE 2090
2080 FOR i=1 TO 18: READ A
2085 READ B: READ C: READ D: PLOT A,B: DRAW C,D: NEXT i
2090 DATA 245,74,10,-7,230,73,25,-20,215,70,40,-35
2095 DATA 199,67,56,-49,185,63,70,-63
2100 DATA 172,56,63,-56,158,49,55,-49
2110 DATA 145,40,46,-40,132,30,36,-30
2120 DATA 122,20,24,-20,112,10,12,-10
2122 DATA 108,05,70,55,122,0,94,72
2124 DATA 144,0,96,74,166,0,89,68
2126 DATA 188,0,67,53,210,0,45,37
2130 DATA 233,0,22,20,252,0,3,3
2140 DATA 999
2150 PRINT #1;"PRESS ANY KEY": PAUSE 0: CLS : GO SUB 9000
6000 REM UDGs
6050 RESTORE 6050: FOR C=1 TO 11: READ A$: FOR V=0 TO 7: READ A: POKE USR A$+V,A: NEXT V: NEXT C
6054 DATA "A",0,56,108,84,108,56,16,A
6056 DATA "B",16,A,152,132,188,252,56,0
6058 DATA "C",0,56,127,121,65,48,16,A
6060 DATA "D",A,A,56,108,84,108,56,0
6064 DATA "F",A,A,A,16,56,16,0,A
6066 DATA "G",7,5,7,16,41,47,41,16
6068 DATA "H",0,192,90,148,16,240,143,97
6070 DATA "I",134,241,15,8,41,90,3,0
6072 DATA "J",8,148,244,148,8,224,160,224
6074 DATA "K",7,5,71,242,238,66,60,0
6076 DATA "L",A,60,66,119,79,226,160,224
6099 RETURN
7000 PRINT AT A-1,2;" ";AT A,2;" ";AT A+1,2;" "
7005 PRINT AT B-1,29;" ";AT B,29;" ";AT B+1,29;" "
7010 LET A=10: LET B=10: LET AS=2: LET BS=2
7015 GO SUB 400
7020 IF S=1 THEN LET H=1: LET BS=2: LET BX=3: LET BY=10: LET R=RND: IF R>.5 THEN LET V=6/26
7030 IF S=1 THEN IF R<=.5 THEN LET V=-6/26
7035 IF S=2 THEN LET H=-1: LET AS=2: LET BX=28: LET BY=10: LET R=RND: IF R>.5 THEN LET V=6/26
7040 IF R<=.5 THEN LET V=-6/26
7050 PRINT OVER 1;AT BY,BX;"\f"
7080 IF S=1 THEN PRINT AT 20,1; FLASH 1;"SERVICE-press Q": IF INKEY$<>"Q" AND INKEY$<>"q" THEN GO TO 7080
7090 IF S=2 THEN PRINT AT 20,16; FLASH 1;"SERVICE-press P": IF INKEY$<>"P" AND INKEY$<>"p" THEN GO TO 7090
7100 PRINT AT 20,0;,,
7110 LET S=0: RETURN
8990 REM INSTRUCTIONS
9000 PRINT AT 1,12;"TENNIS"
9010 PRINT TAB 5;"-By PHILLIP SPROSTON-"
9020 PRINT '" A GAME FOR TWO PLAYERS": PRINT '" HIT THE BALL WITH A FOREHAND OR BACKHAND": PRINT '" PLAYER ONE--LEFT"
9030 PRINT " KEYS 1-5=UP"'" A-G=DOWN"
9040 PRINT '" PLAYER TWO--RIGHT"'" KEYS 6-0=UP"'" H-ENTER=DOWN"
9045 PRINT '" MAKE SURE THE BALL DOES NOT HIT YOUR PLAYER OR YOU LOSE"
9050 PRINT AT 19,10;"PLEASE WAIT"
9060 RETURN
9400 REM WON
9500 CLS
9510 PRINT AT 5,4;"PLAYER ";
9520 IF AP>BP THEN PRINT "A";: LET X=AP-BP
9530 IF AP<BP THEN PRINT "B";: LET X=BP-AP
9540 IF X>1 THEN PRINT " WINS BY ";X;" POINTS"
9550 IF X=1 THEN PRINT " WINS BY ";X;" POINT"
9560 FOR C=-20 TO 22 STEP 2: BEEP .03,ABS C: NEXT C
9570 FOR C=1 TO 20: NEXT C: FOR C=1 TO 3: BEEP .2,-20: NEXT C: BEEP .6,-24
9600 PRINT ''''''" Q to QUIT or any other to PLAY"
9605 IF INKEY$<>"" THEN GO TO 9605
9610 PAUSE 0
9620 IF INKEY$="Q" OR INKEY$="q" THEN BORDER 7: PAPER 7: CLS : PRINT AT 10,8;"START THE TAPE": LOAD ""
9700 GO TO 200
9998 SAVE "Tennis" LINE 1
9999 VERIFY ""