|
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 - download
Length: 3808 (0xee0) Notes: Mikados TextFile, Mikados_K Names: »ASG«
└─⟦89d8689a3⟧ Bits:30003591 MIKADOS Pascal compiler (01.02.1982 E) └─ ⟦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 = 226; (* SPC/1 TERMINAL PORT. MODIFY AS REQUIRED *) 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.