1 ' BOXING SIMULATION W/ GRAPHICS 2 ' BY GEORGE DUNSAY <72325,614> 3 ' modified by Bill Chan <72737,2662> 4 ' and friends. 5 ' 6 ' This program may be duplicated if 7 ' lines 1 & 2 are retained. 8 ' 9 DEFSTRL,R,J,Q:DIMJ(101) 10 CLS:DR=1:CL=100:CR=CL:IR=CL:IL=CL:KR=1:KL=1 20 FORX=1TO6:READA1,A2,A3,A4:L(X)=CHR$(A1):R(X)=CHR$(A2):LD(X)=CHR$(A3):RD(X)=CHR$(A4):NEXTX 22 DATA232,232,234,233,235,236,237,238,239,239,239,239,239,239,239,239,237,238,238,237,225,226,227,228 23 FORX=1TO5:READN$(X):NEXTX:DATASlugger,Killer,Mauler,Duke,Champ 25 CLS:INPUT "How many players (1-2)";F1:IFF1<1ORF1>2THEN25 26 PRINT" ":INPUT"How many rounds (1-15)";F2:IFF2<1ORF2>15THEN26 27 PRINT" ":INPUT"Scoring: 1-Rounds 2-Ten Pt Must";F3:IF F3>2ORF3<1THEN27 28 PRINT" ":INPUT"Name of fighter #1";NL$:IFLEN(NL$)>10THENNL$=LEFT$(NL$,10) 29 IFF1=1GOTO40ELSEPRINT" ":INPUT"Name of fighter #2";NR$:IFLEN(NR$)>10THENNR$=LEFT$(NR$,10) 30 GOTO50 40 GOSUB1050:NR$=N$(INT(RND(1)*5)+1) 47 CLS:PRINT@55,"By the way....":PRINT@130,"Your opponent's name is":PRINT@217,NR$:GOSUB1000 50 CLS:PRINT@18,"Input your 50 moves":PRINT@0,"F=Forward":PRINT"R=Reverse":PRINT"D=Duck":PRINT"K=Block":PRINT"J=Jab" 52 PRINT"B=Body Punch":PRINT"H=Head Punch";:LINE(83,0)-(83,63):LINE(84,10)-(239,10) 54 PRINT@98,"Player #1":PRINT@138,NL$:PRINT@218,"Move #:" 56 FORX=1TO99STEP2:PRINT@226,(X+1)/2 60 GOSUB1010 62 IFQ="f"ORQ="r"ORQ="h"ORQ="b"ORQ="j"ORQ="k"ORQ="d"THENSOUND300,15ELSESOUND5000,20:GOTO60 63 IFX/2=INT(X/2)THEN72ELSEJ(X)=Q:NEXTX 66 PRINT@258,"That's 50 moves":GOSUB1040:PRINT@258," ":IFF1=1THENGOTO800 68 PRINT@98,"Player #2":PRINT@138," ":PRINT@138,NR$: 70 Q=INKEY$:FORX=2TO100STEP2:PRINT@226,X/2:GOTO60 72 J(X)=Q:NEXTX 74 PRINT@258,"That's 50 moves":GOSUB1040:Q=INKEY$ 95 CLS:PRINT@123,"Hit any key to start ROUND #";DR:GOSUB1010:GOTO900 100 FORZ=1TO100:Q=J(Z) 102 IFZ/2=INT(Z/2)THENGOTO150 104 IF(Q="j"ORQ="h"ORQ="b")AND(PR-PL>3)THENQ="f" 105 GOSUB948 106 IFQ="f"ANDPR-PL<4THENGOTO300 108 IFQ="r"ANDPL=13THENGOTO300 110 IF(Q="j"ANDCL=0)OR(Q="h"ANDCL<5)OR(Q="b"ANDCL<3)THENPRINT@294,"TIRED ";:GOSUB1004:TT=1:GOTO300 112 IFIL=<0THENGOTO400 115 IFQ="f"THENPL=PL+1:GOSUB200:GOTO300 120 IFQ="r"THENPL=PL-1:GOSUB210:GOTO300 122 IFQ="d"THENGOSUB250:GOTO300 124 IFQ="k"THENGOSUB260:GOTO300 125 IFQ="b"THENGOSUB220 130 IFQ="j"THENGOSUB230 135 IFQ="h"THENGOSUB240 140 ONVRGOSUB207,207,207,207,255,265 147 GOTO300 150 IF(Q="j"ORQ="h"ORQ="b")ANDPR-PL>3THENQ="f" 155 GOSUB948 156 IFQ="f"ANDPR-PL<4THENGOTO300 158 IFQ="r"ANDPR=26THENGOTO300 160 IF(Q="j"ANDCR=0)OR(Q="h"ANDCR<5)OR(Q="b"ANDCR<3)THENPRINT@294," TIRED";:GOSUB1004:TT=1:GOTO300 165 IFQ="f"THENPR=PR-1:GOSUB205:GOTO300 170 IFQ="r"THENPR=PR+1:GOSUB215:GOTO300 171 IFQ="d"THENGOSUB255:GOTO300 173 IFQ="k"THENGOSUB265:GOTO300 175 IFQ="b"THENGOSUB225 180 IFQ="j"THENGOSUB235 185 IFQ="h"THENGOSUB245 190 ONVLGOSUB202,202,202,202,250,260 199 GOTO300 200 FORX=1TO5:PRINT@PL-1+((X-1)*40)," "::NEXTX 202 FORX=1TO5:PRINT@PL+((X-1)*40),L(X);" ":NEXTX:PRINT@PL+81,L(6):VL=1:RETURN 205 FORX=1TO5:PRINT@PR+1+((X-1)*40)," "::NEXTX 207 FORX=1TO5:PRINT@PR-2+((X-1)*40)," ";R(X):NEXTX:PRINT@PR+79,R(6):VR=1:RETURN 210 FORX=1TO5:PRINT@PL+1+((X-1)*40)," ":NEXTX:PRINT@PL+82," ":GOTO202 215 FORX=1TO5:PRINT@PR-1+((X-1)*40)," ":NEXTX:PRINT@PR+78," ":GOTO207 220 GOSUB202:PRINT@PL+81,CHR$(231):PRINT@PL+82,CHR$(232):PRINT@PL+83,CHR$(234):GOSUB1003:VL=2 222 PRINT@PL+82,CHR$(226):PRINT@PL+81,CHR$(225):RETURN 225 GOSUB207:PRINT@PR+79,CHR$(231):PRINT@PR+78,CHR$(232):PRINT@PR+77,CHR$(233):GOSUB1003:VR=2 227 PRINT@PR+78,CHR$(225):PRINT@PR+79,CHR$(226):RETURN 230 GOSUB202:PRINT@PL+81,CHR$(231):IFVR<>6THENPRINT@PL+42,CHR$(232):PRINT@PL+82," ":IFVR<>5THENPRINT@PL+43,CHR$(234) 232 VL=3:GOSUB1004:PRINT@PL+81,CHR$(225):IFVR<>6THENPRINT@PL+42," ":PRINT@PL+43," ";:PRINT@PL+82,CHR$(226) 233 RETURN 235 GOSUB207:PRINT@PR+79,CHR$(231):IFVL<>6THENPRINT@PR+38,CHR$(232):PRINT@PR+78," ":IFVL<>5THENPRINT@PR+37,CHR$(233) 237 VR=3:GOSUB1004:PRINT@PR+79,CHR$(226):IFVL<>6THENPRINT@PR+38," ":PRINT@PR+78,CHR$(225):PRINT@PR+37,CHR$(235) 238 RETURN 240 GOSUB202:PRINT@PL+81,CHR$(231):IFVR<>6THENPRINT@PL+82," ";:PRINT@PL+42,CHR$(232):IFVR<>5THENPRINT@PL+43,CHR$(234) 242 GOSUB1003:VL=4:GOTO232 245 GOSUB207:PRINT@PR+79,CHR$(231):IFVL<>6THENPRINT@PR+38,CHR$(232):PRINT@PR+78," ":IFVL<>5THENPRINT@PR+37,CHR$(233) 247 GOSUB1003:VR=4:GOTO237 250 GOSUB202:PRINT@PL," ":PRINT@PL+40," ":PRINT@PL+80,CHR$(235):PRINT@PL+81," ":VL=5:RETURN 255 GOSUB207:PRINT@PR," ":PRINT@PR+40," ":PRINT@PR+80,CHR$(236):PRINT@PR+79," ":VR=5:RETURN 260 PRINT@PL,L(1):PRINT@PL+40,L(2):PRINT@PL+81,CHR$(231):PRINT@PL+41,CHR$(234):VL=6:RETURN 265 GOSUB207:PRINT@PR+79,CHR$(231):PRINT@PR+39,CHR$(233):VR=6:RETURN 300 TM=INT(180-(Z*1.8)):M=INT(TM/60):S=INT(TM-(60*M)):PRINT@270,M:PRINT@275,S; 310 IF(Q="d")OR(Q="k")OR(Q="r")OR(Q="f")THENC=1 311 IFQ="j"THENC=-1:GOTO325 313 IFQ="b"THENC=-3:GOTO330 315 IFQ="h"THENC=-5:GOTO335 320 GOTO380 325 IFJ(Z-1)="d"ORTT=1THENGOTO380 327 I=-1:GOTO380 330 IFJ(Z-1)="k"ORTT=1THENGOTO380 331 IFJ(Z-1)="d"THENI=-5:GOTO380 332 I=-3:GOTO380 335 IFJ(Z-1)="d"ORTT=1THENGOTO380 336 IFJ(Z-1)="k"THENI=-3:GOTO380 337 I=-5 380 IFZ/2<>INT(Z/2)THENCL=CL+C:IR=IR+I:GOSUB975:I1=I1+I:GOTO390 385 CR=CR+C:IL=IL+I:I2=I2+I:GOSUB970 386 'IFF1=1ANDI<0THENIL=IL-1:I2=I2-1 390 GOSUB1003:C=0:VA=0:I=0:TT=0:IFCL>100THENCL=100 391 IFCR>100THENCR=100 392 IFCL<0THENCL=0 393 IFCR<0THENCR=0 394 IFIR>100THENIR=100 395 IFIL>100THENIL=100 396 IFIL<0THENIL=0 397 IFIR<0THENIR=0 398 PRINT@86,CL;" ";:PRINT@114,CR;" ";:PRINT@126,IL;" ";:PRINT@154,IR;" ";:PRINT@295," "; 399 IFIL=0THENGOTO410ELSEIFIR=0GOTO450 400 NEXTZ:GOTO600 410 FORX=1TO5:PRINT@PL+((X-1)*40)," ";:NEXTX:IFPL<17THENPL=17 411 IR=IR+10:IFPL>23THENPL=23 412 FORX=1TO5:PRINT@PL+155+X,LD(X);:NEXTX:PRINT@PL+118,LD(6);:PR=26:GOSUB207:KL=KL+1:IL=10 414 Z=Z+6:IFZ>97THENZ=96 416 TM=INT(180-(Z*1.8)):PRINT@54,"He's DOWN":PRINT@253,"The REFS Count":PRINT@293," "; 418 GOSUB1050 420 FORX=1TO10:Y=INT((RND(1)*(5+KL))+1):CL=CL+1:CR=CR+1:IFCR>100THENCR=100 421 IFCL>100THENCL=100 422 IFY=1THENGOTO430ELSEPRINT@94,X; 423 GOSUB1002 424 NEXTX:Q="L":GOTO500 430 PRINT@54," He's UP!":GOSUB1003:CR=CR+5 432 PRINT@PL+156," ";:PRINT@PL+118," "::PRINT@94," "; 434 PRINT@54," ";:PRINT@253," ";:GOSUB202:GOTO400 450 FORX=1TO5:PRINT@PR+((X-1)*40)-3," ";:NEXTX:IFPR>22THENPR=22 451 IL=IL+10:IFPR<15THENPR=15 452 FORX=1TO5:PRINT@PR+159+X,RD(6-X);:NEXTX:PRINT@PR+122,RD(6):PL=13:GOSUB202:KR=KR+1:IR=10 454 Z=Z+6:IFZ>99THENZ=99 456 TM=INT(180-(Z*1.8)):PRINT@56,"He's DOWN":PRINT@253,"The REFS Count":PRINT@293," "; 458 GOSUB1050 460 FORX=1TO10:Y=INT((RND(1)*(5+KR))+1):CR=CR+1:CL=CL+1:IFCL>100THENCL=100 461 IFCR>100THENCR=100 462 IFY=1THENGOTO470ELSEPRINT@102,X; 463 GOSUB1002 464 NEXTX:Q="r":GOTO500 470 PRINT@56," He's UP!":GOSUB1003:CL=CL+5 472 PRINT@PR+160," ";:PRINT@PR+122," ":PRINT@102," "; 474 PRINT@56," ";:PRINT@253," ";:GOSUB207:GOTO400 500 CLS:PRINT@50,"The fight is OVER!" 502 IFQ="L"THENPRINT@140-((LEN(NR$)+14)/2),NR$; 504 IFQ="R"THENPRINT@140-((LEN(NL$)+14)/2),NL$; 505 PRINT" is the WINNER!" 506 FORX=1TO2000:NEXTX:MENU 600 FORX=1TO10:SOUND500,1:SOUND700,1:NEXTX:FORX=1TO5:PRINT@PL+((X-1)*40)," ";:PRINT@PR-2+((X-1)*40)," ";:NEXTX 602 PL=13:PR=26:KJ=1:GOSUB920:PRINT@PR+160,CHR$(144):KJ=0:PRINT@15,"Round Over";:GOSUB1000:I1=ABS(I1):I2=ABS(I2) 603 CLS:PRINT:PRINT"The Round Is OVER!":IFI1>I2THENPRINTNL$;" WON the Round":GOSUB1060 604 IFI2>I1THENPRINTNR$;" WON the Round":GOSUB1060 605 IFI1=I2THENPRINT"The round was a DRAW!":GOSUB1060 606 CL=CL+30:IFCL>100THENCL=100 608 CR=CR+30:IFCR>100THENCR=100 610 IL=IL+30:IR=IR+30:DR=DR+1:IFIR>100THENIR=100 611 IFIL>100THENIL=100 612 IFF3=2THENGOTO621 614 IFI1>I2THENWL=WL+1 615 IFI2>I1THENWR=WR+1 616 IFI1=I2THENWR=WR+.5:WL=WL+.5 617 IFDR>F2THEN700ELSEPRINT@120,"Name","Rds Won Condtn Injury" 618 PRINT@160,NL$:PRINT@175,"";:PRINTUSING"####";WL:PRINT@186,"";:PRINTUSING"####";CL:PRINT@195,"";:PRINTUSING"####";IL 619 PRINT@200,NR$:PRINT@215,"";:PRINTUSING"####";WR:PRINT@226,"";:PRINTUSING"####";CR:PRINT@235,"";:PRINTUSING"####";IR 620 GOTO650 621 IFI1>I2THENWL=WL+10:WR=WR+10-(INT(I1/10)-INT(I2/10)) 622 IFI2>I1THENWR=WR+10:WL=WL+10-(INT(I2/10)-INT(I1/10)) 626 IFI1=I2THENWR=WR+10:WL=WL+10 628 IFDR>F2THEN700ELSEPRINT@120,"Name","Points Condtn Injury":GOTO618 650 PRINT@240,"Coming up: Round";DR;" of";F2:PRINT@280,"";:Q=INKEY$ 652 GOSUB1010 654 IFIR>100THENIR=100 656 IFIL>100THENIL=100 657 I1=0:I2=0 658 GOTO50 700 PRINT:PRINT"The fight is OVER!":PRINT"It has gone the full";F2;" rounds.":GOSUB1060:IFF3=1THENGOTO720 702 PRINT" ":PRINT"Scoring by 10 point must system":PRINT"Name","Points":PRINTNL$,WL:PRINTNR$,WR 704 GOTO722 720 PRINT" ":PRINT"Scoring by rounds":PRINT"Name","Rds Won":PRINTNL$,WL:PRINTNR$,WR 722 PRINT" ":IFWR>WLTHENPRINTNR$;" is the WINNER!":GOTO740 724 IFWL>WRTHENPRINTNL$;" is the WINNER!":GOTO740 726 PRINT"It is a DRAW!" 740 GOTO506 800 CLS:PRINT" ":PRINT"The computer is now selecting":PRINT@90,"it's moves" 802 IF DR=1THENGOSUB1050:Y2=INT(RND(1)*3)+1:GOTO814 804 IFCR<35THENY2=3:GOTO814 806 IFIR<35THENY2=3:GOTO814 808 V=CR-CL+(2*(IR-IL)):IFV<0THENY2=3 810 IFV<20THENY2=2 812 IFV>19THENY2=1 813 IFCL<35THENY2=Y2-1:IFY2=0THENY2=1 814 PRINT" ":PRINTNR$;"'s Coach says be ";:IFY2=1THENPRINT"aggresive" 815 IFY2=2THENPRINT"Normal" 816 IFY2=3THENPRINT"Defensive" 818 PRINT" ":PRINT"One moment please........." 820 ONY2GOTO822,824,826 822 V1=48:V2=52:V3=80:V4=98:V5=96:GOTO830 824 V1=38:V2=44:V3=76:V4=86:V5=96:GOTO830 826 V1=32:V2=38:V3=60:V4=78:V5=96 830 GOSUB1050 832 FORX=2TO100STEP2:Y=INT(RND(1)*100)+1:IFY50THENJ(X)="k" 852 NEXTX:GOTO95 900 CLS:M=2:S=59:PL=13:PR=26:LINE(0,40)-(239,40):LINE(75,0)-(75,40):LINE(164,0)-(164,40):KR=KR-1:KL=KL-1:IFK<0THENKR=0 905 PRINT@1,NL$;:PRINT@29,NR$:PRINT@81,"Cdtn:";CL:PRINT@109,"Cdtn:";CR:PRINT@121,"Injr:";IL:PRINT@149,"Injr:";IR 910 PRINT@241,"Round:";DR:PRINT@269,"M";M:PRINT@274,"S";S;:IFKL<0THENKL=0 912 LINE(4,46)-(60,46):LINE(4,56)-(60,56):LINE(4,46)-(4,56):LINE(60,46)-(60,56) 913 LINE(170,46)-(234,46):LINE(170,56)-(234,56):LINE(170,46)-(170,56):LINE(234,46)-(234,56) 915 FORX=80TO160STEP6:LINE(X,41)-(X,42):NEXTX 920 GOSUB1020:GOSUB1030 922 PRINT@PL+121,CHR$(227):PRINT@PR+119,CHR$(228):PRINT@PL+161,L(5):PRINT@PR+159,R(5):PRINT@PL+160,CHR$(144) 923 IFKJ=1THENRETURN 924 PRINT@PR+160,CHR$(144):GOSUB1000:GOSUB1040:GOSUB210:GOSUB215:GOTO100 948 IFZ/2=INT(Z/2)THENPRINT@261," ";ELSEPRINT@254," "; 949 PRINT@294," "; 950 IFQ="h"THENQ1="Head ":VA=1 951 IFQ="j"THENQ1="Jab ":VA=1 952 IFQ="b"THENQ1="Body ":VA=1 953 IFQ="f"THENQ1="Frwd " 954 IFQ="r"THENQ1="Revrs" 955 IFQ="d"THENQ1="Duck " 956 IFQ="k"THENQ1="Block" 957 IFZ/2=INT(Z/2)THENGOTO959 958 PRINT@254,Q1;" ";:RETURN 959 PRINT@254," ";Q1;:RETURN 970 IFTT=1ORVA<>1THENRETURN 971 IFI<0THENPRINT@301,"HIT!";ELSEPRINT@301,"MISS"; 972 RETURN 975 IFTT=1ORVA<>1THENRETURN 976 IFI<0THENPRINT@294,"HIT!";ELSEPRINT@294,"MISS"; 977 RETURN 1000 X1=X1+500 1001 X1=X1+300 1002 X1=X1+100 1003 X1=X1+70 1004 X1=X1+30 1005 FORXX=1TOX1:NEXTXX:X1=0:RETURN 1010 Q=INKEY$:IFQ=""THEN1010ELSERETURN 1020 FORX=1TO5:PRINT@PL+((X-1)*40),L(X):NEXTX:PRINT@PL+81,L(6):RETURN 1030 FORX=1TO5:PRINT@PR+((X-1)*40),R(X):NEXTX:PRINT@PR+79,R(6):RETURN 1040 FORX=1TO10:SOUND500,1:SOUND700,1:NEXTX:RETURN 1050 Y=VAL(RIGHT$(TIME$,2)):FORX=1TOY:Y1=RND(1):NEXTX:RETURN 1060 FORAV=0TO1400:NEXT:RETURN