blob: 7ca337b46b6c45e2229b68d83f4031220613d037 [file] [log] [blame]
(* Copyright (C) 2014 Free Software Foundation, Inc. *)
(* This file is part of GNU Modula-2.
GNU Modula-2 is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2, or (at your option) any later
version.
GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
with gm2; see the file COPYING. If not, write to the Free Software
Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *)
MODULE simplelarge ;
FROM STextIO IMPORT WriteString, WriteLn, WriteChar, ReadToken, SkipLine ;
FROM SWholeIO IMPORT WriteCard, WriteInt ;
FROM WholeStr IMPORT StrToCard, ConvResults ;
FROM SYSTEM IMPORT CARDINAL8 ;
FROM libc IMPORT printf ;
CONST
BoardX = 16 ;
BoardY = 16 ;
BoardSize = BoardX * BoardY ;
TYPE
Squares = [0..BoardSize-1] ;
SoS = SET OF Squares ;
Colour = (Blue, Red, Green, White) ;
VAR
homeBase: ARRAY [MIN(Colour)..MAX(Colour)] OF SoS ;
PROCEDURE dumpSet (c: Colour) ;
VAR
n: CARDINAL ;
BEGIN
printf ("inside dumpSet (%d)\n", ORD(c)) ;
printf (" : 0 2 4 6 8 a c e \n") ;
FOR n := MIN(Squares) TO MAX(Squares) DO
IF n MOD 16 = 0
THEN
printf ("\nrow %2d: ", n DIV 16)
END ;
IF n IN homeBase[c]
THEN
printf ("1")
ELSE
printf ("0")
END
END ;
printf ("\n")
END dumpSet ;
(*
assert -
*)
PROCEDURE assert (b: BOOLEAN) ;
BEGIN
IF NOT b
THEN
WriteString('assert failed') ; WriteLn ;
HALT
END
END assert ;
BEGIN
homeBase[Red] := SoS {} ;
dumpSet(Red) ;
homeBase[Blue] := SoS {0, 1, 2, 3,
16, 17, 18, 19,
32, 33, 34,
48, 49} ;
dumpSet(Blue) ;
assert (0 IN homeBase[Blue]) ;
assert (1 IN homeBase[Blue]) ;
assert (2 IN homeBase[Blue]) ;
assert (3 IN homeBase[Blue]) ;
(*
homeBase[Red] := SoS {255-0, 255-1, 255-2, 255-3,
255-16, 255-17, 255-18, 255-19,
255-32, 255-33, 255-34,
255-48, 255-49} ;
*)
homeBase[Blue] := homeBase[Blue] + SoS {4, 20, 35, 50, 65, 64} ;
dumpSet(Blue) ;
dumpSet(Red) ;
assert (homeBase[Red] = SoS {}) ;
(*
homeBase[Red] := homeBase[Red] + SoS {255-4, 255-20, 255-35, 255-50, 255-65, 255-64} ;
*)
assert (0 IN homeBase[Blue]) ;
assert (1 IN homeBase[Blue]) ;
assert (2 IN homeBase[Blue]) ;
assert (3 IN homeBase[Blue]) ;
assert (4 IN homeBase[Blue]) ;
assert (NOT (5 IN homeBase[Blue])) ;
assert (NOT (6 IN homeBase[Blue])) ;
assert (homeBase[Red] = SoS {})
END simplelarge.
(*
* Local variables:
* compile-command: "gm2 -g -fiso simplelarge.mod"
* End:
*)