|
|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 2560 (0xa00)
Types: TextFile
Names: »SCORE.PAS«
└─⟦08ea08c61⟧ Bits:30003924 PolyPascal programmer
└─⟦this⟧ »SCORE.PAS«
└─⟦09235ab48⟧ Bits:30003065 Demoprogrammer K-Z til Pascal bog
└─⟦this⟧ »SCORE.PAS«
└─⟦092727b26⟧ Bits:30005927 Demoprogrammer til Pascal bog (Jet-80)
└─⟦this⟧ »SCORE.PAS«
PROGRAM score;
TYPE
scoretype = RECORD
points : INTEGER;
navn : STRING(.30.);
END;
scorefiltype = FILE OF scoretype;
VAR
score : scoretype;
scorefil : scorefiltype;
ch : CHAR;
PROCEDURE opret;
VAR
i : INTEGER;
BEGIN (* opret *)
ASSIGN(scorefil, 'HISCORE.DAT');
REWRITE(scorefil);
WITH score DO
BEGIN
points := 0;
navn := 'NN';
END;
FOR i := 1 TO 5 DO
WRITE(scorefil, score);
CLOSE(scorefil)
END; (* opret *)
PROCEDURE update(score : scoretype);
TYPE
listetype = ARRAY(.1 .. 6.) OF scoretype;
VAR
liste : listetype;
byt : scoretype;
i : INTEGER;
BEGIN (* update *)
ASSIGN(scorefil, 'HISCORE.DAT');
RESET(scorefil);
FOR i := 1 TO 5 DO
READ(scorefil, liste(.i.));
CLOSE(scorefil);
liste(.6.) := score;
i := 6;
WHILE i > 1 DO
BEGIN
IF liste(.i.).points > liste(.i - 1.).points
THEN
BEGIN
byt := liste(.i.);
liste(.i.) := liste(.i - 1.);
liste(.i - 1.) := byt;
END;
i := i - 1;
END;
REWRITE(scorefil);
FOR i := 1 TO 5 DO
WRITE(scorefil, liste(.i.));
CLOSE(scorefil);
END; (* update *)
PROCEDURE laes;
VAR
i : INTEGER;
score : scoretype;
BEGIN (* laes *)
ASSIGN(scorefil, 'HISCORE.DAT');
RESET(scorefil);
FOR i := 1 TO 5 DO
BEGIN
READ(scorefil, score);
WRITELN(score.points : 4, ' ', score.navn);
END;
CLOSE(scorefil);
END; (* laes *)
BEGIN (* score *)
WRITE(CLRHOM);
WRITE('Skal highscore-listen oprettes (j/n): ');
REPEAT
READ(KBD, ch);
UNTIL (ch = 'j') OR (ch = 'n');
WRITELN;
IF ch = 'j' THEN opret;
WRITE('Navn: (0 stopper): '); READLN(score.navn);
WHILE score.navn <> '0' DO
BEGIN
WRITE('Points : '); READLN(score.points);
update(score);
WRITE('Navn: (0 stopper): '); READLN(score.navn);
END;
WRITE('Skal highscore-listen læses (j/n): ');
REPEAT
READ(KBD, ch);
UNTIL (ch = 'j') OR (ch = 'n');
WRITELN;
IF ch = 'j'
THEN laes;
END. (* score *)
«eof»