|
|
DataMuseum.dkPresents historical artifacts from the history of: MIKADOS |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about MIKADOS Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 3808 (0xee0)
Notes: Mikados TextFile, Mikados_K
Names: »ASG«
└─⟦ec8c1e0b0⟧ Bits:30007442 8" floppy ( MIKPROG vol. 1-3, MIKREL vol. 1-3, PCSE 4.7.80 vol 1-3, GL.SYS )
└─⟦this⟧ »ASG«
PROGRAM ASG;
(*************************************************)
(* *)
(* A S G = ANOTHER STUPID GAME *)
(* *)
(* TWO PLAYERS COMPETE ON A CRT TERMINAL. *)
(* BY USING TWO SETS OF CRT CONTROL KEYS THEY *)
(* CONTROL ONE CONSTANTLY MOVING CURSOR EACH. *)
(* THE FIRST PLAYER WHOSE CURSOR ENTERS A *)
(* FIELD THAT HAS PREVIOUSLY BEEN ACCESSED, *)
(* LOOSES *)
(* THE CURSOR CONTROLS ARE: *)
(* FUNCTION PLAYER 1 PLAYER2 *)
(* UP W I *)
(* LEFT A J *)
(* RIGHT S K *)
(* DOWN Z M *)
(*************************************RM-790725***)
CONST MAXROW = 24;
MAXCOL = 79;
IOCHANNEL = 96 ; (*ON SPC/1 TERMINAL PORT; USE 96, 98, 100, 102
FOR MULTI-USER SYSTEM TERMINAL 1, 2, 3, 4 *)
VAR FREESQUARE: ARRAY(1..MAXCOL,1..MAXROW) OF BOOLEAN;
X1, Y1, X2, Y2, X1DELTA, Y1DELTA, X2DELTA, Y2DELTA: INTEGER;
ASCORE, BSCORE: INTEGER;
DELAYTIME: INTEGER;
GAMEOVER: BOOLEAN;
PROCEDURE INITIALIZE;
VAR X,Y: INTEGER;
BEGIN
FOR X:= 1 TO MAXCOL DO
FOR Y:= 1 TO MAXROW DO
IF (X IN (.1,MAXCOL.)) OR (Y IN (.1,MAXROW.)) THEN
BEGIN
FREESQUARE(X,Y) := FALSE;
GOTOXY(X,Y);
WRITE('*')
END
ELSE FREESQUARE(X,Y) := TRUE;
X1 := 4; Y1 := 12; X1DELTA := 1; Y1DELTA := 0;
X2 := MAXCOL-3; Y2 := 13; X2DELTA := -1; Y2DELTA := 0;
DELAYTIME := 20;
END (*INITIALIZE*);
BEGIN
ASCORE := 0; BSCORE := 0;
REPEAT
BEGIN
CLEARSCREEN;
GOTOXY( 10, 4 );
WRITE('CURRENT SCORE: PLAYER 1: ',ASCORE,'; PLAYER 2: ',BSCORE);
GOTOXY( 10, 10 );
WRITE('PRESS "RETURN" TO START A NEW GAME, "ESC" TO TERMINATE');
READLN;
IF NOT EOF THEN
BEGIN
CLEARSCREEN;
INITIALIZE;
GAMEOVER := FALSE;
REPEAT
BEGIN
DELAY( DELAYTIME );
CASE CHR( IN80(IOCHANNEL,127) ) OF
'A': BEGIN X1DELTA:=-1; Y1DELTA:=0 END;
'Z': BEGIN X1DELTA:=0; Y1DELTA:=1 END;
'W': BEGIN X1DELTA:=0; Y1DELTA:=-1 END;
'S': BEGIN X1DELTA:=1; Y1DELTA:=0 END;
'J': BEGIN X2DELTA:=-1; Y2DELTA:=0 END;
'M': BEGIN X2DELTA:=0; Y2DELTA:=1 END;
'I': BEGIN X2DELTA:=0; Y2DELTA:=-1 END;
'K': BEGIN X2DELTA:=1; Y2DELTA:=0 END;
END (*CASE IN80*);
X1 := X1 + X1DELTA; Y1 := Y1 + Y1DELTA;
X2 := X2 + X2DELTA; Y2 := Y2 + Y2DELTA;
IF NOT FREESQUARE(X1,Y1) THEN
BEGIN
GAMEOVER := TRUE;
BSCORE := BSCORE + 1
END
ELSE
BEGIN
GOTOXY( X1, Y1 );
WRITE( '1' );
FREESQUARE(X1,Y1) := FALSE;
IF NOT FREESQUARE(X2,Y2) THEN
BEGIN
GAMEOVER := TRUE;
ASCORE := ASCORE + 1;
END
ELSE
BEGIN
GOTOXY( X2, Y2 );
WRITE( '2' );
FREESQUARE(X2,Y2) := FALSE;
END;
END;
END (*REPEATSTATEMENT*);
UNTIL GAMEOVER;
END (*IF NOT EOF*);
END;
UNTIL EOF;
GOTOXY( 1, 23 );
WRITELN( 'GAME OVER' )
END.