コード例 #1
0
        public LeftHook(string binaryStringValue, int height)
        {
            this.height            = height * 4;
            this.binaryStringValue = binaryStringValue;

            signal    = Signals.Nth;
            NorthGlue = GlueFactory.LeftHook();
            SouthGlue = GlueFactory.PreReadLeft(signal);
        }
コード例 #2
0
ファイル: PreReaderLeft.cs プロジェクト: LoganWithers/Tiles
        private void SetUp()
        {
            var id = Guid.NewGuid();

            for (var i = 0; i < height; i++)
            {
                var tile = Tile(i);

                tile.North = i == 0 ? GlueFactory.PreReadLeft(signal) : G(id);

                id = Guid.NewGuid();

                if (i + 1 == height)
                {
                    tile.Up    = G(id);
                    tile.South = GlueFactory.RightTurn();
                }
                else
                {
                    tile.South = G(id);
                }

                tiles.Add(tile);
            }

            var leftZ1 = Tile(height);

            leftZ1.Down = G(id);
            id          = Guid.NewGuid();

            leftZ1.East = G(id);

            var rightZ1 = Tile(height + 1);

            rightZ1.West = leftZ1.East;
            rightZ1.East = GlueFactory.Reader(signal);
            tiles.Add(leftZ1);
            tiles.Add(rightZ1);
        }
コード例 #3
0
        private void Setup()
        {
            tiles.AddRange(new [] { bottomRightZ0, bottomRightZ1, bottomMiddle });
            bottomRightZ0.North = GlueFactory.LeftWall;

            bottomRightZ0.Up   = Bind(bottomRightZ0, bottomRightZ1);
            bottomRightZ1.Down = bottomRightZ0.Up;

            bottomRightZ1.West = Bind(bottomRightZ1, bottomMiddle);
            bottomMiddle.East  = bottomRightZ1.West;
            bottomMiddle.North = Bind(0, 1);

            var height = bits * 4;

            for (var i = 0; i <= height; i++)
            {
                var tile = Tile(i);
                tile.North = Bind(i, i + 1);
                tile.South = Bind(i - 1, i);
                tiles.Add(tile);
            }

            var lastAdded = tiles.Last();

            lastAdded.North = Bind(lastAdded, topMiddle);
            topMiddle.South = lastAdded.North;

            tiles.Add(topMiddle);

            topMiddle.West = Bind(topMiddle, topLeft);
            topLeft.East   = topMiddle.West;

            tiles.Add(topLeft);


            // 2n + 2 start north and south
            var leftSideHeight = height * 2 + 4;

            var id = Guid.NewGuid();

            topLeft.Down = new Glue(id.ToString());

            for (var i = 0; i < leftSideHeight; i++)
            {
                var tile = Tile("LeftSide", i);
                tiles.Add(tile);

                tile.South = new Glue(id.ToString());
                id         = Guid.NewGuid();
                tile.North = new Glue(id.ToString());

                if (i == 0)
                {
                    tile.Up    = tile.South;
                    tile.South = new Glue();
                }

                if (i + 1 == leftSideHeight)
                {
                    tile.East  = tile.North;
                    tile.North = new Glue();
                }
            }

            var rightSideHeight = height + 2;

            for (var i = 0; i < rightSideHeight; i++)
            {
                var tile = Tile("RightSide", i);
                tiles.Add(tile);

                tile.North = new Glue(id.ToString());
                id         = Guid.NewGuid();
                tile.South = new Glue(id.ToString());


                if (i == 0)
                {
                    tile.West  = tile.North;
                    tile.North = new Glue();
                }

                if (i + 1 == rightSideHeight)
                {
                    tile.South = GlueFactory.PreReadLeft(Signals.First);
                }
            }
        }