home *** CD-ROM | disk | FTP | other *** search
- PROGRAM BOWLFRI;
-
- { KEEPS RECORD ON HOW BRUCE BOWLS ON FRIDAY LEAGUE }
- { STARTED 9/8/90 }
- { REVISED FOR 2 PEOPLE ON 8/17/91 }
-
-
- CONST
- MAXIMUM=60;
- MAXPEOPLE=5;
- MAXGAMES=3;
-
- VAR
-
-
- NAME : ARRAY[1..MAXPEOPLE] OF STRING[19];
- GAME : ARRAY[1..MAXPEOPLE,1..MAXIMUM,1..MAXGAMES] OF INTEGER;
- AVERAGE,SERIES : ARRAY[1..MAXPEOPLE,1..MAXIMUM] OF INTEGER;
- CONT,PEOPLE,X,Y,DELAY,TT,CODE,GG,S,J : INTEGER;
- TOTALPINS,ENTRIES,HIGHGAME,HIGHSERIES,HIGHAVERAGE : ARRAY[1..MAXPEOPLE] OF INTEGER;
- AVG : REAL;
- FILENAME : TEXT;
- UPDATE,TEST : STRING[19];
- PAUSE,ASK : CHAR;
-
- PROCEDURE HIGHS;
- BEGIN
- FOR X:=1 TO PEOPLE DO BEGIN TT:=50;
- FOR J:=1 TO ENTRIES[X] DO BEGIN
- FOR S:=1 TO MAXGAMES DO BEGIN
- IF GAME[X,J,S]>TT THEN BEGIN HIGHGAME[X]:=GAME[X,J,S]; TT:=HIGHGAME[X]; END;
- END;
- END;
- END;
- FOR X:=1 TO PEOPLE DO BEGIN TT:=50;
- FOR J:=1 TO ENTRIES[X] DO BEGIN
- IF SERIES[X,J]>TT THEN BEGIN HIGHSERIES[X]:=SERIES[X,J]; TT:=HIGHSERIES[X]; END;
- END;
- END;
- FOR X:=1 TO PEOPLE DO BEGIN TT:=50;
- FOR J:=1 TO ENTRIES[X] DO BEGIN
- IF AVERAGE[X,J]>TT THEN BEGIN HIGHAVERAGE[X]:=AVERAGE[X,J]; TT:=HIGHAVERAGE[X]; END;
- END;
- END;
- END;
-
- PROCEDURE CLEAR_VARIABLES;
- BEGIN
- FOR J:=1 TO MAXPEOPLE DO BEGIN
- HIGHGAME[J]:=0; HIGHSERIES[J]:=0; HIGHAVERAGE[J]:=0; ENTRIES[J]:=0; NAME[J]:=(' ');
- TOTALPINS[J]:=0;
- FOR X:=1 TO MAXIMUM DO BEGIN
- AVERAGE[J,X]:=0; SERIES[J,X]:=0;
- FOR S:=1 TO MAXGAMES DO BEGIN
- GAME[J,X,S]:=0;
- END; END; END;
- X:=0; Y:=0; DELAY:=0; TT:=0; CODE:=0; CONT:=0; UPDATE:=(' ');
- GG:=0; S:=0; J:=0; AVG:=0; TEST:=(' '); PEOPLE:=0;
- END;
-
- PROCEDURE DISPLAY;
- BEGIN
- CONT:=0;
- REPEAT
- CONT:=CONT+1; HIRES; HIRESCOLOR(BLUE); J:=0; DRAW(10,5,10,81,1);
- REPEAT
- J:=J+32; DRAW(10+J,5,10+J,81,1);
- UNTIL J>600;
- DRAW(10,50,617,50,1); DRAW(10,35,617,35,1); DRAW(10,20,617,20,1); DRAW(10,5,617,5,1);
- DRAW(10,81,617,81,1); DRAW(10,68,617,68,1); DRAW(10,66,617,66,1); DRAW(10,52,617,52,1);
- DRAW(10,109,10,185,1); J:=0;
- REPEAT
- J:=J+32; DRAW(10+J,109,10+J,185,1);
- UNTIL J>600;
- DRAW(10,139,617,139,1); DRAW(10,124,617,124,1); DRAW(10,109,617,109,1);
- DRAW(10,170,617,170,1); DRAW(10,156,617,156,1); DRAW(10,154,617,154,1);
- DRAW(10,185,617,185,1); DRAW(10,172,617,172,1); X:=3; Y:=0; GG:=0; TOTALPINS[CONT]:=0;
- FOR J:=1 TO ENTRIES[CONT] DO
- BEGIN
- IF J<20 THEN BEGIN
- IF J>1 THEN BEGIN X:=X+4; Y:=0; END;
- IF J=1 THEN BEGIN X:=3; Y:=0; END;
- FOR S:=1 TO 3 DO
- BEGIN
- GG:=GG+1; Y:=Y+2; GOTOXY(X,Y); WRITE(GAME[CONT,J,S]);
- END;
- SERIES[CONT,J]:=GAME[CONT,J,1]+GAME[CONT,J,2]+GAME[CONT,J,3]; TOTALPINS[CONT]:=TOTALPINS[CONT]+SERIES[CONT,J];
- GOTOXY(X,Y+2); WRITE(SERIES[CONT,J]);
- AVG:=TOTALPINS[CONT]/GG; STR(AVG,TEST); TEST:=COPY(TEST,3,4); DELETE(TEST,2,1);
- VAL(TEST,AVERAGE[CONT,J],CODE); GOTOXY(X,Y+4); WRITE(AVERAGE[CONT,J]);
- END;
- IF J>19 THEN BEGIN
- IF J>20 THEN BEGIN X:=X+4; Y:=13; END;
- IF J=20 THEN BEGIN X:=3; Y:=13; END;
- FOR S:=1 TO 3 DO
- BEGIN
- GG:=GG+1; Y:=Y+2; GOTOXY(X,Y); WRITE(GAME[CONT,J,S]);
- END;
- SERIES[CONT,J]:=GAME[CONT,J,1]+GAME[CONT,J,2]+GAME[CONT,J,3]; TOTALPINS[CONT]:=TOTALPINS[CONT]+SERIES[CONT,J];
- GOTOXY(X,Y+2); WRITE(SERIES[CONT,J]);
- AVG:=TOTALPINS[CONT]/GG; STR(AVG,TEST); TEST:=COPY(TEST,3,4); DELETE(TEST,2,1);
- VAL(TEST,AVERAGE[CONT,J],CODE); GOTOXY(X,Y+4); WRITE(AVERAGE[CONT,J]);
- END;
- END;
- HIGHS;
- GOTOXY(3,12); WRITE('HIGH GAME: ',HIGHGAME[CONT]); GOTOXY(29,12); WRITE('HIGH AVERAGE: ',HIGHAVERAGE[CONT]);
- GOTOXY(58,12); WRITE('HIGH SERIES: ',HIGHSERIES[CONT]);
- GOTOXY(18,25); WRITE('DISPLAYING INFORMATION FOR <<',NAME[CONT],'>>');
- READLN(PAUSE);
- UNTIL CONT=PEOPLE;
- END;
-
- PROCEDURE GET_INFO;
- BEGIN
- ASSIGN(FILENAME,'BOWLAVE.DIR'); RESET(FILENAME); READLN(FILENAME,PEOPLE);
- FOR X:=1 TO PEOPLE DO BEGIN READLN(FILENAME,ENTRIES[X]);
- READLN(FILENAME,NAME[X]);
- FOR J:=1 TO ENTRIES[X] DO BEGIN
- FOR S:=1 TO 3 DO BEGIN READLN(FILENAME,GAME[X,J,S]); END;
- END; END;
- CLOSE(FILENAME);
- END;
-
- PROCEDURE ADD;
- BEGIN
- CLRSCR; FOR J:=1 TO PEOPLE DO BEGIN WRITELN; WRITELN(NAME[J]); END; WRITELN;
- WRITE('ENTER THE PERSONS NAME TO UPDATE OR ENTER "ALL" TO UPDATE EVERYONES: ');
- READLN(UPDATE);
- CONT:=0;
- REPEAT
- CONT:=CONT+1; CLRSCR;
- IF (UPDATE='ALL') OR (UPDATE=NAME[CONT]) THEN BEGIN
- FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
- WRITE(CHR(201)); FOR J:=1 TO (28+LENGTH(NAME[CONT])) DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(187));
- FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
- WRITE(CHR(186)); WRITE(' ADDING GAMES BOWLED. . . ',NAME[CONT],' '); WRITELN(CHR(186));
- FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
- WRITE(CHR(200)); FOR J:=1 TO (28+LENGTH(NAME[CONT])) DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(188));
- WRITELN; WRITELN;
- TEXTCOLOR(RED); FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
- WRITE(CHR(201)); FOR J:=1 TO 28 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(187));
- FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
- WRITE(CHR(186)); WRITE(' ENTER FIRST GAME: '); WRITELN(CHR(186));
- FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
- WRITE(CHR(186)); WRITE(' ENTER SECOND GAME: '); WRITELN(CHR(186));
- FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
- WRITE(CHR(186)); WRITE(' ENTER THIRD GAME: '); WRITELN(CHR(186));
- FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
- WRITE(CHR(200)); FOR J:=1 TO 28 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(188));
- ENTRIES[CONT]:=ENTRIES[CONT]+1;
- GOTOXY(37,7); BUFLEN:=3; READLN(GAME[CONT,ENTRIES[CONT],1]);
- GOTOXY(37,8); BUFLEN:=3; READLN(GAME[CONT,ENTRIES[CONT],2]);
- GOTOXY(37,9); BUFLEN:=3; READLN(GAME[CONT,ENTRIES[CONT],3]);
- SERIES[CONT,ENTRIES[CONT]]:=GAME[CONT,ENTRIES[CONT],1]+GAME[CONT,ENTRIES[CONT],2]+GAME[CONT,ENTRIES[CONT],3];
- TOTALPINS[CONT]:=TOTALPINS[CONT]+SERIES[CONT,J];
- END;
- UNTIL CONT=PEOPLE;
- END;
-
- PROCEDURE SAVE;
- BEGIN
- ASSIGN(FILENAME,'BOWLAVE.DIR'); REWRITE(FILENAME); WRITELN(FILENAME,PEOPLE);
- FOR X:=1 TO PEOPLE DO BEGIN WRITELN(FILENAME,ENTRIES[X]);
- WRITELN(FILENAME,NAME[X]);
- FOR J:=1 TO ENTRIES[X] DO BEGIN
- FOR S:=1 TO 3 DO BEGIN WRITELN(FILENAME,GAME[X,J,S]); END;
- END; END;
- CLOSE(FILENAME);
- END;
-
- PROCEDURE ERASE2;
- BEGIN
- CLRSCR; WRITE(' DO YOU REALLY WANT TO ERASE ALL THE INFO SAVED TO THE FILE (Y/N):'); READ(KBD,PAUSE);
- IF (PAUSE='Y') OR (PAUSE='y') THEN BEGIN
- ASSIGN(FILENAME,'BOWLAVE.DIR'); REWRITE(FILENAME); WRITELN(FILENAME,'0');
- CLOSE(FILENAME);
- CLEAR_VARIABLES;
- WRITELN; WRITE('ENTER THE NUMBER OF PERSONS TO SET-UP FOR (1-',MAXPEOPLE,'): '); READ(KBD,PAUSE);
- VAL(PAUSE,PEOPLE,CODE);
- FOR X:=1 TO PEOPLE DO BEGIN
- WRITELN; WRITE('ENTER THE NAME OF PERSON NUMBER ',X,': '); READLN(NAME[X]);
- END;
- CLRSCR; WRITELN(' YOUR PROGRAM HAS NOW BEEN SET-UP FOR ',PEOPLE,' PERSON(S) WITH THE FOLLOWING NAMES');
- FOR X:=1 TO PEOPLE DO BEGIN WRITELN; WRITELN(NAME[X]); END;
- WRITELN; WRITE(' HIT <RETURN> TO GO BACK TO THE MAIN MENU '); READ(KBD,PAUSE);
- END;
- END;
-
- PROCEDURE ENDING;
- BEGIN
- CLRSCR; WRITE(' IF YOU FORGOT TO UPDATE YOUR INFO YOU CAN DO IT NOW, SAVE (Y/N): ');
- READ(KBD,PAUSE);
- IF (PAUSE='Y') OR (PAUSE='y') THEN BEGIN
- SAVE; WRITELN; WRITELN(' YOUR INFO HAS BEEN UPDATED, GOOD BOWLING.'); WRITELN; WRITELN;
- END;
- END;
-
- BEGIN
- CLRSCR; CLEAR_VARIABLES; GET_INFO;
- REPEAT
- CLRSCR; TEXTMODE; FOR J:=1 TO 18 DO BEGIN WRITE(' '); END;
- WRITE(CHR(201)); FOR J:=1 TO 25 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(187));
- FOR J:=1 TO 18 DO BEGIN WRITE(' '); END;
- WRITE(CHR(186)); WRITE(' BOWLING INFORMATION '); WRITELN(CHR(186));
- FOR J:=1 TO 18 DO BEGIN WRITE(' '); END;
- WRITE(CHR(200)); FOR J:=1 TO 25 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(188));
- GOTOXY(1,23); WRITE('THIS PROGRAM HAS BEEN SET-UP FOR ');
- FOR J:=1 TO PEOPLE DO BEGIN
- IF J=PEOPLE THEN BEGIN WRITE(' ',NAME[J]); END;
- IF J<PEOPLE THEN BEGIN WRITE(' ',NAME[J],','); END; END;
- GOTOXY(1,6); TEXTCOLOR(RED);
- FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
- WRITE(CHR(213)); FOR J:=1 TO 32 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(184));
- FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
- WRITE(CHR(179)); WRITE(' 1. ADD NEW GAMES '); WRITELN(CHR(179));
- FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
- WRITE(CHR(179)); WRITE(' 2. DISPLAY SCORES & AVERAGES '); WRITELN(CHR(179));
- FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
- WRITE(CHR(179)); WRITE(' 3. SAVE '); WRITELN(CHR(179));
- FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
- WRITE(CHR(179)); WRITE(' 8. ERASE ALL INFO FROM FILE '); WRITELN(CHR(179));
- FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
- WRITE(CHR(179)); WRITE(' 9. QUIT '); WRITELN(CHR(179));
- FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
- WRITE(CHR(212)); FOR J:=1 TO 32 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(190)); WRITELN;
- FOR J:=1 TO 21 DO BEGIN WRITE(' '); END;
- WRITE(CHR(201)); FOR J:=1 TO 18 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(187));
- FOR J:=1 TO 21 DO BEGIN WRITE(' '); END;
- WRITE(CHR(186)); WRITE(' ENTER NUMBER: '); WRITELN(CHR(186));
- FOR J:=1 TO 21 DO BEGIN WRITE(' '); END;
- WRITE(CHR(200)); FOR J:=1 TO 18 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(188));
- TEXTCOLOR(WHITE); GOTOXY(38,15); READ(KBD,ASK); WRITE(ASK);
- IF ASK='1' THEN BEGIN ADD; END;
- IF ASK='2' THEN BEGIN DISPLAY; END;
- IF ASK='3' THEN BEGIN SAVE; END;
- IF ASK='8' THEN BEGIN ERASE2; END;
- UNTIL ASK='9';
- CLRSCR; ENDING;
- END.