Division One   (Model A)


This time around you're a soccer manager whose overall proficiency will be judged at the end of a season. There are details of matches played and goals scored, points awarded, games remaining and a constantly changing league table. The computer will calculate the results according to the relative strengths of the teams, whether the game was played at home or away, and so on.

If things are going badly it could be that you'll have to intervene at the touchline, changing players' positions and generally backseat booting. Is it going to be championship or relegation? It's up to you and the lads. And the DATA statements which can be messed around with if you feel that we've been biased one way or another.

   10 REM BBC VERSION ************
   20 REM DIVISION ONE.....WALWYN
   30 ON EROR GOTO 2660
   40 P5=0 : PL=0
   50 MODE 7 : VDU 14,23,1,0;0;0;0;
   60 PROCinstructions
   70 J=0
   80 DIM TZ(15,15),T$(15),TA(15),TM(15),TD(1
5),TT(15),TP(15),TF(15)
   90 DIM D(1,9),XS(1,6),YS(1,6),X(1,6),Y(1,6
),S(1,6)
  100 FOR I=1 TO 15 : READ T$(I),TA(I),TM(I),
TD(I) : NEXT I
  110 DATA "LIVERPOOL",9,6,6,"MAN UTD",8,5,6,
"IPSWICH",6,7,6,"ARSENAL",7,6,6
  120 DATA "STHMPTON",8,5,5,"A VILLA",6,6,5,"
NOTTM F",9,5,5,"SWANSEA",5,6,5
  130 DATA "WOLVES",5,5,5,"CRYSTAL P",5,6,5,"
TOTTENHAM",8,4,6,"NORWICH",4,5,4
  140 DATA "COVENTRY",4,4,4,"LEEDS",4,3,4,"W 
BROM",8,3,4
  150 FOR X=0 TO 1 : FOR Y=0 TO 9 : D(X,Y)=Y+
128-X*128 : NEXT Y : NEXT X
  160 FOR J=1 TO 6 : READ XS(0,J),YS(0,J) : N
EXT
  170 FOR J=1 TO 6 : READ XS(1,J),YS(1,J) : N
EXT
  180 DATA 4,17,9,12,9,22,16,10,16,16,16,23
  190 DATA 35,17,31,12,31,22,24,10,24,16,24,2
3
  200 PROCstart
  210 PROCdecision
  220 END
  230  
  240 DEF PROCplaygame
  250 R=0 : Q=0 : TI=TIME
  260 MV=0 : U=0 : ZZ=0
  270 *FX4,1
  280 CLS : PROCpitch
  290 FOR I=0 TO 1 : FOR J=1 TO 6 : X(I,J)=XS
(I,J):Y(I,J)=YS(I,J)
  300 NEXT J : NEXT I
  310 FOR I=0 TO 1 : FOR J=1 TO 6
  320     PRINT TAB(X(I,J),Y(I,J)); : VDU 145
+4*I,64+J,151
  330 NEXT J : NEXT I
  340 X2=0:Y2=0:X=0:Y=0:X1=21:Y1=17
  350 I=0:J=1:W=0:MM=0:MP=0
  360 ZZ$="A"
  370 K=INKEY(3):Z$=CHR$(K):REPEAT:A%=INKEY(0
):UNTIL A%=-1
  380 IF K=-1 THEN X=0:Y=0:MP=0:GOTO 470
  390 IF INSTR("ABCDEF",Z$) THEN ZZ$=Z$:GOTO 
470
  400 W=1 :I=0:PQ=ASC(ZZ$)-64:IF K=MP THEN W=
RND(S(I,PQ))
  410 J=PQ:MP=K:IF J<0 OR J>6 THEN ZZ$="A" : 
J=1
  420 IF Z$=CHR$(&8B) THEN Y=-1 : X=0 : GOTO4
60
  430 IF Z$=CHR$(&8A) THEN Y=1 : X=0 : GOTO46
0
  440 IF Z$=CHR$(&89) THEN Y=0 : X=1 : GOTO46
0
  450 IF Z$=CHR$(&88) THEN Y=0 : X=-1 : GOTO4
60
  460 I=0
  470 L=0 : REPEAT : L=L+1 : PROCplayer
  480 UNTIL L>=W OR MM
  490 IF MM THEN MM=0:X2=RND(2)-1:Y2=RND(3)-1
:GOTO630
  500 VDU 26,9,9,&86 : PRINT"      ";Q;" ";T$
(Q%);" V ";T$(R%);" ";R
  510 VDU 10,9,9,&86 : PRINT ,(TIME-TI) DIV 6
000;":";((TIME-TI)MOD 6000) DIV 100;" ";
  520 IF TIME-TI>18050 THEN PRINT TAB(10,3);C
HR$(135);"TIME'S UP...";CHR$(132);: ENDPROC
  530 PRINTTAB(3,1);CHR$(135);"     PLAYER TO
 REPOSITION=";CHR$(136);ZZ$
  540 REM OPPONENT MOVE
  550 W=1 : I=1 : V=RND(6) : IF V=VM THEN W=R
ND(S(I,MV))
  560 I=1 : J=V : MV=J : Y=SGN(Y1-Y(I,J))
  570 IF V=1 AND RND(2)>1 THEN Y=SGN(14-Y(I,J
)):X=W=1:GOTO590
  580 X=SGN(X1-X(I,J))
  590 L=0 : REPEAT : L=L+1 : PROCplayer
  600 UNTIL L=6 OR MM
  610 IF MM THEN MM=0 : X2=1-RND(2) : Y2=2-RN
D(3) : GOTO 630
  620 U=RND(TA(N)*VJ)
  630 L=0 : REPEAT : L=L+1 : PROCball
  640 UNTIL L>=U OR ZZ
  650 IF ZZ THEN ZZ=0 : T=TIME : REPEAT UNTIL
 TIME>T+300 : GOTO 280
  660 GOTO 370
  670  
  680 DEF PROCstart
  690 REM START PROCEDURE AND TEAM SET UP
  700 CLS : FOR I=&7C00 TO &8000 STEP &28: !I
=&20819D86 : NEXT
  710 FOR I=0 TO 1 : PRINT TAB(7,I);CHR$(141)
;"DIVISION ONE" : NEXT
  720 FOR I=1 TO 15
  730   PRINT TAB(4,I+2);I,T$(I)
  740 NEXT I
  750 REPEAT
  760   PRINT TAB(4,20);SPC(30);TAB(4,20);
  770   INPUT"YOUR CHOICE OF TEAM ",M
  780 UNTIL 0<M AND M<16
  790 CLS
  800 ENDPROC
  810  
  820 DEF PROCdecision
  830 REM MATCH DECISION
  840 PROCdisplay
  850 P=0
  860 INPUT"HOW MANY AUTO RESULTS (0=MANUAL) 
",P1 : IF P1=0 THEN 880
  870 FOR P=1 TO P1
  880   IF PL=210 THEN PROCdisplay : PRINT"TH
AT'S THE END OF THE SEASON":END
  890   REPEAT :Q%=RND(15) : R%=RND(15)
  900   UNTIL Q%<>R% AND TZ(Q%,R%)=0
  910   TZ(Q%,R%)=1 : PL=PL+1
  920   PRINT"_______________________________
_________"
  930   PRINT"MATCH #";PL;".";
  940   PRINT" ";T$(Q%)" HOME TO ";T$(R%)
  950   IF Q%=M OR R%=M THEN 1000
  960   IF P>0 THEN 1110
  970   VDU 9,9,9 : PRINT"PRESS ANY KEY"
  980   A$=GET$
  990   GOTO 1110
 1000   PRINT"   DO YOU WISH TO PLAY?(Y/N)"
 1010   A$=GET$
 1020   IF A$<>"Y" THEN 1110
 1030   REM SET UP ME TO PLAY
 1040   IF Q%=M THEN J=R%:VM=2:VJ=1 ELSE J=Q%
:VJ=2:VM=1
 1050   N=J
 1060   S(1,1)=TD(J)*VJ:S(1,2)=TM(J)*VJ:S(1,3
)=TM(J)*VJ
 1070   S(1,4)=TD(J)*VJ:S(1,5)=TM(J)*VJ:S(1,6
)=TA(J)*VJ
 1080   S(0,1)=TD(M)*VM:S(0,2)=TM(M)*VM:S(0,3
)=TM(M)*VM
 1090   S(0,4)=TA(M)*VM:S(0,5)=TA(M)*VM:S(0,6
)=TA(M)*VM
 1100   PROCplaygame : GOTO 1330
 1110    
 1120   REM MATCH DECIDED
 1130   S%=RND(20) : T%=RND(20) : U%=RND(20)
 1140   S=0:T=0:U=0
 1150   Q=TA(Q%)-TM(R%)+S%-TD(R%)+U%/2.5
 1160   R=TA(R%)-TM(Q%)+T%-TD(Q%)
 1170   Q=Q DIV 5 : R=R DIV 5
 1180   IF Q<1 THEN Q=0
 1190   IF R<1 THEN R=0
 1200   PRINTT$(Q%);"...";Q;" ";T$(R%);"...";
R
 1210   TP(Q%)=TP(Q%)+1 : TP(R%)=TP(R%)+1 : T
F(Q%)=TF(Q%)+Q : TF(R%)=TF(R%)+R
 1220   IF Q>R THEN TT(Q%)=TT(Q%)+3
 1230   IF Q<R THEN TT(R%)=TT(R%)+3
 1240   IF R=Q THEN TT(Q%)=TT(Q%)+1 : TT(R%)=
TT(R%)+1
 1250   IF TT(Q%)>P5 THEN P5=TT(Q%)
 1260   IF TT(R%)>P5 THEN P5=TT(R%)
 1270   IF P=0 THEN 1290
 1280 NEXT P
 1290 PRINT"    PRESS ANY KEY WHEN READY";
 1300 A$=GET$
 1310 GOTO820
 1320  
 1330 T=TIME:REPEAT UNTIL TIME>T+300
 1340 CLS : FOR I=&7C00 TO &8000 STEP &28: !I
=&20202081 : NEXT
 1350 PRINT TAB(4,0);"IF YOU HAD LET ME DECID
E THE MATCH,"
 1360 PRINT TAB(4,1);"THE SCORE WOULD HAVE BE
EN....."
 1370 QQ=TA(Q%)-TM(R%)+S%-TD(R%)+U%/2.5
 1380 RR=TA(R%)-TM(Q%)+T%-TD(Q%)
 1390 QQ=QQ DIV 5:RR=RR DIV 5
 1400 IF QQ<1 THEN QQ=0
 1410 IF RR<1 THEN RR=0
 1420 PRINT T$(Q%);"...";QQ;" ";T$(R%);"...";
RR
 1430 IF Q=QQ AND R=RR THEN VDU 9,9,9,10 : PR
INT"WHICH IS EXACTLY RIGHT!" : GOTO 1210
 1440 VDU 10,&87,&9D,&81 : PRINT "PRESS ANY K
EY TO CONTINUE" : *FX15,1
 1450 A$=GET$
 1460 VDU 10,9,9,9 : PRINT"... BUT AS IT IS, 
THE SCORE IS..."
 1470 GOTO1200
 1480  
 1490  
 1500 DEF PROCdisplay
 1510 REM TABLE DISPLAY
 1520 CLS : FOR I=&7C00 TO &7ED0 STEP &28: !I
=&20849D86 : NEXT
 1530 PRINT TAB(4,0);"TEAM       P   F   PTS 
";CHR$(129);"MATCHES LEFT"
 1540 PRINT TAB(3,1);"__________ ___ ___ ____
_";CHR$(129);"TO PLAY ";210-PL
 1550 FOR J=P5+1 TO 0 STEP -1
 1560   FOR I=1 TO 15
 1570     IF TT(I)<>J THEN 1600
 1580     IF I=M THEN VDU &84,9,&86 ELSE VDU 
9,9,9
 1590     PRINT T$(I);TAB(12);TP(I);TAB(16);T
F(I);TAB(20);TT(I)
 1600   NEXT I
 1610 NEXT J
 1620 VDU 13,10,&84,9,&86
 1630 ENDPROC
 1640  
 1650 DEF PROCpitch
 1660 FORI%=&7C00TO &7C00+120 STEP 40 : !I%=&
20849D84 : NEXT
 1670 FORI%=&7C00+160 TO &7C00+200 STEP 40 : 
!I%=&9A939D85 : NEXT
 1680 FORI%=&7C00+240 TO &7C00+280 STEP 40 : 
!I%=&8D819D87 : NEXT
 1690 FORI%=&7C00+320 TO &8000 STEP 40 : !I%=
&20979D82 : NEXT
 1700 PRINT TAB(4,4);:FORI=1TO35:VDU RND(32)+
96:NEXT
 1710 PRINT TAB(4,5);:FORI=1TO35:VDU RND(32)+
96:NEXT
 1720 FOR I=6TO 7:PRINT TAB(8,I);"PERSONAL CO
MPUTER NEWS GAMES":NEXT
 1730 FORI=10 TO 23:PRINT TAB(3,I);"j";TAB(38
,I);"5";:NEXT
 1740 PRINT TAB(3,9);CHR$(128);"ppppppppppppp
ppppppppppppppppppppp";CHR$(128)
 1750 PRINTTAB(3,24);CHR$(128);"`````````````
`````````````````````";CHR$(128);
 1760 FORI=15 TO 18:PRINT TAB(3,I);"5";TAB(38
,I);"j";:NEXT
 1770 RESTORE 1780:FOR B=&7C91 TO &7C9F : REA
D J:?B=J:NEXT
 1780 DATA &47,&52,65,80,&48,&49,&43,&53,32,&
42,89,32,&42,&4A,74
 1790 ENDPROC
 1800  
 1810 DEF PROCplayer
 1820 A=X(I,J)+Y(I,J)*40 : US=&7C00
 1830 A%=!(US+A) AND &7FFFF :A%=A%*&100
 1840 REPEAT A%=A% DIV &100 :UNTIL A% AND &FF
=42 OR A%=0 : IF A% THEN 2190
 1850 PRINT TAB(X(I,J),Y(I,J));"   ";
 1860 IF (!(US+A+X+Y*40) AND &FFFFFF) <>&2020
20 THEN 1880
 1870 X(I,J)=X(I,J)+X : Y(I,J)=Y(I,J)+Y
 1880 PRINT TAB(X(I,J),Y(I,J)); : VDU 145+4*I
,64+J,151
 1890 ENDPROC
 1900  
 1910 DEF PROCball
 1920 K=?(US+X1+X2+(Y1+Y2)*40)
 1930 IF K=32 THEN 2010
 1940 IF K=ASC("5") AND X1<19 THEN 2060
 1950 IF K=ASC("j") AND X1>19 THEN 2060
 1960 IF K=ASC("5") OR K=ASC("j") THEN X2=-X2
: GOTO1920
 1970 IF K=ASC("p") OR K=ASC("`") THEN Y2=-Y2
: GOTO1920
 1980 IF K=128 THEN X2=-X2: Y2=-Y2: GOTO 1920
 1990 S%=2-RND(3) : T%=RND(2)-1 :IF T%=0 THEN
 X2=-X2:Y2=S% : GOTO 1920
 2000 Y2=-Y2 : X2=S% : GOTO 1920
 2010 ?(US+X1+Y1*40)=32
 2020 X1=X1+X2:Y1=Y1+Y2
 2030 ?(US+X1+Y1*40)=42
 2040 ENDPROC
 2050  
 2060 REM GOAL
 2070 ?(US+X1+Y1*40)=32
 2080 X1=X1+X2:Y1=Y1+Y2
 2090 ?(US+X1+Y1*40)=42
 2100 FORK9=4 TO 34 : PRINT TAB(K9,2);" GOAL!
": SOUND 1,-10,K9*4,1 : NEXT
 2110 FORK9=34 TO 4 STEP -1 : PRINT TAB(K9,2)
;"GOAL! ":SOUND 1,-10,K9*4,1 : NEXT
 2120 IF X1<19 AND M=Q% THEN R=R+1
 2130 IF X1>19 AND M=Q% THEN Q=Q+1
 2140 IF X1<19 AND M=R% THEN Q=Q+1
 2150 IF X1>19 AND M=R% THEN R=R+1
 2160 ZZ=1
 2170 ENDPROC
 2180  
 2190 U=RND(S(I,J)*2):MM=1 : ENDPROC
 2200 DEF PROCinstructions
 2210 CLS : PRINT TAB(9);CHR$(129);"DIVISION 
ONE"
 2220 PRINT'"YOU WILL BE ASKED TO CHOOSE A TE
AM TO"
 2230 PRINT"LEAD THROUGHOUT ONE SEASON."
 2240 PRINT"  THERE ARE 210 MATCHES IN ALL _"
 2250 PRINT"AND EACH TEAM PLAYS 28 MATCHES SI
NCE"
 2260 PRINT"EVERYONE PLAYS EVERYONE TWICE - H
OME &"
 2270 PRINT"AWAY. YOU CAN EITHER PLAY A MATCH
 OR"
 2280 PRINT"LET THE MACHINE CALCULATE THE RES
ULT."
 2290 PRINT'"  WHEN THE NUMBER OF AUTOMATIC R
ESULTS"
 2300 PRINT"IS ENDED, A LEAGUE TABLE IS DRAWN
."
 2310 PRINT'"AS THE FIXTURES PROGRESS, YOU WI
LL SEE"
 2320 PRINT"HOW MANY GAMES EACH TEAM HAS PLAY
ED,"
 2330 PRINT"HOW MANY GOALS EACH TEAM HAS SCOR
ED,"
 2340 PRINT"AND HOW MANY POINTS FOR EACH TEAM
."
 2350 PRINT"(3 FOR A WIN, 1 FOR A DRAW)"
 2360 PRINT'"N.B. WHEN YOU GET NEAR THE END O
F THE"
 2370 PRINT"SEASON, THERE MAY BE A SLIGHT PAU
SE"
 2380 PRINT"BETWEEN MATCHES AS THE COMPUTER H
UNTS"
 2390 PRINT"FOR THE NEXT FIXTURE."
 2400 PRINTSPC(9);CHR$(130);CHR$(136);"PRESS 
ANY KEY";
 2410 A$=GET$
 2420 CLS : PRINT"IF YOU DECIDE TO PLAY A MAT
CH"
 2430 PRINT"THEN YOU MAY REPOSITION YOUR TEAM
 AS"
 2440 PRINT"THEY PLAY. ONLY SIX FOOTBALLERS A
RE"
 2450 PRINT"SHOWN IN EACH TEAM (LETTERS A-F).
"
 2460 PRINT"YOUR TEAM ALWAYS PLAYS FROM LEFT 
TO"
 2470 PRINT"RIGHT IN THE 'DARK STRIP'."
 2480 PRINT'"YOU MAY RE-POSITION PLAYERS ANY 
TIME IN"
 2490 PRINT"THE GAME BUT YOU HAVE NO CONTROL 
OVER"
 2500 PRINT"WHERE THEY KICK THE BALL! THIS DE
PENDS"
 2510 PRINT"UPON THE VARIOUS STRENGTHS OF ATT
ACK"
 2520 PRINT"AND DEFENCE. IT IS QUITE USUAL FO
R"
 2530 PRINT"A TEAM TO SCORE AN 'OWN GOAL'....
"
 2540 PRINT'"THE BALL MOVES FURTHER AND FASTE
R WHEN"
 2550 PRINT"THE MATCH IS 'AWAY' FROM HOME."
 2560 PRINT'"THE DURATION OF EACH MATCH IS 3 
MINS."
 2570 PRINT"HOLD DOWN THE LETTER OF YOUR PLAY
ER"
 2580 PRINT"AND WAIT FOR THE LETTER TO BE DIS
PLAYED"
 2590 PRINT"NEXT TO THE";CHR$(132);CHR$(157);
CHR$(135);"PLAYER TO REPOSITION="
 2600 PRINT"THEN PRESS THE CURSOR KEYS FOR MO
VING"
 2610 PRINT"UP, DOWN, LEFT AND RIGHT."
 2620 PRINT"HOLD THE KEY DOWN FOR RANDOM MULT
I-MOVE.";
 2630 PRINTSPC(9);CHR$(130);CHR$(136);"PRESS 
ANY KEY";
 2640 A$=GET$
 2650 ENDPROC
 2660 *FX4,0
 2670 REPORT : PRINT " at line ";ERL : END