예제 #1
0
        public TableLayout(PaintedTiles paintedTiles, int tileCountOnTable, int columnCount)
        {
            if (paintedTiles == null)
            {
                throw new ArgumentNullException("paintedTiles");
            }

            if (paintedTiles.Count < tileCountOnTable)
            {
                throw new ArgumentOutOfRangeException("tileCountOnTable", tileCountOnTable, "Number of places on the table must smaller or equal than number of available tiles (paintedTiles)!");
            }

            this.paintedTiles     = paintedTiles;
            this.tileCountOnTable = tileCountOnTable;
            this.columnCount      = columnCount;

            this.physicalLayout = this.BuildPhysicalLayout();

            // preallocating arrays to store available tiles at every single recursion level independently
            this.availableTilesInLevels = new int[this.tileCountOnTable][];
            for (int i = 0; i < this.tileCountOnTable; i++)
            {
                // number of available tiles = number of paintedTiles - already placed tiles on table at the level of recursion
                this.availableTilesInLevels[i] = new int[this.PaintedTileCount - i];
            }

            this.actualTileSequence  = new TileSequence(this.tileCountOnTable);
            this.resultTileSequences = new List <TileSequence>();
        }
예제 #2
0
        public PaintedTiles Create16()
        {
            var t      = new TileTemplate4X2();
            var result = new PaintedTiles
            {
                new PaintedTile(1, t, new[] { Color.Blue, Color.Green, Color.Red, Color.Yellow }),
                new PaintedTile(2, t, new[] { Color.Blue, Color.Green, Color.Yellow, Color.Red }),
                new PaintedTile(3, t, new[] { Color.Blue, Color.Red, Color.Green, Color.Yellow }),
                new PaintedTile(4, t, new[] { Color.Blue, Color.Red, Color.Yellow, Color.Green }),
                new PaintedTile(5, t, new[] { Color.Blue, Color.Yellow, Color.Red, Color.Green }),
                new PaintedTile(6, t, new[] { Color.Green, Color.Blue, Color.Yellow, Color.Red }),
                new PaintedTile(7, t, new[] { Color.Green, Color.Red, Color.Yellow, Color.Blue }),
                new PaintedTile(8, t, new[] { Color.Green, Color.Yellow, Color.Blue, Color.Red }),
                new PaintedTile(9, t, new[] { Color.Green, Color.Yellow, Color.Red, Color.Blue }),
                new PaintedTile(10, t, new[] { Color.Red, Color.Blue, Color.Green, Color.Yellow }),
                new PaintedTile(11, t, new[] { Color.Red, Color.Blue, Color.Yellow, Color.Green }),
                new PaintedTile(12, t, new[] { Color.Red, Color.Green, Color.Blue, Color.Yellow }),
                new PaintedTile(13, t, new[] { Color.Red, Color.Green, Color.Yellow, Color.Blue }),
                new PaintedTile(14, t, new[] { Color.Red, Color.Yellow, Color.Blue, Color.Green }),
                new PaintedTile(15, t, new[] { Color.Yellow, Color.Green, Color.Blue, Color.Red }),
                new PaintedTile(16, t, new[] { Color.Yellow, Color.Green, Color.Red, Color.Blue }),
            };

            return(result);
        }
예제 #3
0
        private int DrawPaintedTilesHeader(PaintedTiles t, int startX, int startY, int columnCount)
        {
            Font       font  = new Font(FontFamily.GenericSansSerif, 20);
            SolidBrush brush = new SolidBrush(Color.Black);

            this.graphics.DrawString(string.Format("{0} db választható kártya:", t.Count), font, brush, 10, 10);

            this.graphics.TranslateTransform(startX, startY);

            for (int i = 0; i < t.Count; i++)
            {
                int x = i % 5;
                int y = i / 5;
                this.graphics.ResetTransform();
                this.graphics.TranslateTransform(
                    startX + (t[i].TileTemplate.FrameRectangle.Width * x),
                    startY + (t[i].TileTemplate.FrameRectangle.Height * y));
                t[i].Rotation = Rotation.X000;
                t[i].DrawTile(this.graphics);
            }

            this.graphics.ResetTransform();

            int headerHeight = t[0].TileTemplate.FrameRectangle.Height * ((t.Count / columnCount) + 1);
            int endY         = startY + headerHeight;

            return(endY);
        }
예제 #4
0
        public TableLayout(PaintedTiles paintedTiles, int tileCountOnTable, int columnCount)
        {
            if (paintedTiles == null)
            {
                throw new ArgumentNullException("paintedTiles");
            }

            if (paintedTiles.Count < tileCountOnTable)
            {
                throw new ArgumentOutOfRangeException("tileCountOnTable", tileCountOnTable, "Number of places on the table must smaller or equal than number of available tiles (paintedTiles)!");
            }

            this.paintedTiles = paintedTiles;
            this.tileCountOnTable = tileCountOnTable;
            this.columnCount = columnCount;

            this.physicalLayout = this.BuildPhysicalLayout();

            // preallocating arrays to store available tiles at every single recursion level independently
            this.availableTilesInLevels = new int[this.tileCountOnTable][];
            for (int i = 0; i < this.tileCountOnTable; i++)
            {
                // number of available tiles = number of paintedTiles - already placed tiles on table at the level of recursion
                this.availableTilesInLevels[i] = new int[this.PaintedTileCount - i];
            }

            this.actualTileSequence = new TileSequence(this.tileCountOnTable);
            this.resultTileSequences = new List<TileSequence>();
        }
예제 #5
0
        public void Run()
        {
            intComputer.Start();
            while (intComputer.Status == ComputerStatus.Running || intComputer.Status == ComputerStatus.Waiting)
            {
                if (intComputer.Status == ComputerStatus.Waiting)
                {
                    var color = intComputer.DumpFullOutput();
                    if (PaintedTiles.ContainsKey($"{currentX};{currentY}"))
                    {
                        PaintedTiles[$"{currentX};{currentY}"] = (int)color[0];
                    }
                    else
                    {
                        PaintedTiles.Add($"{currentX};{currentY}", (int)color[0]);
                    }
                    MoveRobot((int)color[1]);
                    if (PaintedTiles.ContainsKey($"{currentX};{currentY}"))
                    {
                        intComputer.setInput(PaintedTiles[$"{currentX};{currentY}"]);
                    }
                    else
                    {
                        intComputer.setInput(0);
                    }
                    intComputer.Start();
                }
            }

            for (var i = 20; i > -20; i--)
            {
                for (var j = -50; j < 50; j++)
                {
                    if (PaintedTiles.ContainsKey($"{j};{i}") && PaintedTiles[$"{j};{i}"] == 1)
                    {
                        Console.Write("#");
                    }
                    else
                    {
                        Console.Write(" ");
                    }
                }
                Console.WriteLine("");
            }
        }
예제 #6
0
        public PaintedTiles Create25()
        {
            var t = new TileTemplate4X2();

            // Coloring from http://www.dotsphinx.com/media/games/rubik/tangle/img/tangle.gif
            var result = new PaintedTiles
            {
                new PaintedTile(1, t, new[] { Color.Blue, Color.Green, Color.Red, Color.Yellow }),
                new PaintedTile(2, t, new[] { Color.Blue, Color.Green, Color.Yellow, Color.Red }),
                new PaintedTile(3, t, new[] { Color.Blue, Color.Red, Color.Green, Color.Yellow }),
                new PaintedTile(4, t, new[] { Color.Blue, Color.Red, Color.Yellow, Color.Green }),
                new PaintedTile(5, t, new[] { Color.Blue, Color.Yellow, Color.Green, Color.Red }),
                new PaintedTile(6, t, new[] { Color.Blue, Color.Yellow, Color.Red, Color.Green }),

                new PaintedTile(7, t, new[] { Color.Green, Color.Blue, Color.Yellow, Color.Red }),
                new PaintedTile(8, t, new[] { Color.Green, Color.Blue, Color.Red, Color.Yellow }),
                new PaintedTile(9, t, new[] { Color.Green, Color.Red, Color.Yellow, Color.Blue }),    // These items are the same
                new PaintedTile(10, t, new[] { Color.Green, Color.Red, Color.Yellow, Color.Blue }),   // These items are the same
                new PaintedTile(11, t, new[] { Color.Green, Color.Red, Color.Blue, Color.Yellow }),
                new PaintedTile(12, t, new[] { Color.Green, Color.Yellow, Color.Blue, Color.Red }),
                new PaintedTile(13, t, new[] { Color.Green, Color.Yellow, Color.Red, Color.Blue }),

                new PaintedTile(14, t, new[] { Color.Red, Color.Blue, Color.Green, Color.Yellow }),
                new PaintedTile(15, t, new[] { Color.Red, Color.Blue, Color.Yellow, Color.Green }),
                new PaintedTile(16, t, new[] { Color.Red, Color.Green, Color.Blue, Color.Yellow }),
                new PaintedTile(17, t, new[] { Color.Red, Color.Green, Color.Yellow, Color.Blue }),
                new PaintedTile(18, t, new[] { Color.Red, Color.Yellow, Color.Blue, Color.Green }),
                new PaintedTile(19, t, new[] { Color.Red, Color.Yellow, Color.Green, Color.Blue }),

                new PaintedTile(20, t, new[] { Color.Yellow, Color.Green, Color.Blue, Color.Red }),
                new PaintedTile(21, t, new[] { Color.Yellow, Color.Green, Color.Red, Color.Blue }),
                new PaintedTile(22, t, new[] { Color.Yellow, Color.Blue, Color.Green, Color.Red }),
                new PaintedTile(23, t, new[] { Color.Yellow, Color.Blue, Color.Red, Color.Green }),
                new PaintedTile(24, t, new[] { Color.Yellow, Color.Red, Color.Green, Color.Blue }),
                new PaintedTile(25, t, new[] { Color.Yellow, Color.Red, Color.Blue, Color.Green })
            };

            return(result);
        }
예제 #7
0
        public PaintedTiles Create25()
        {
            var t = new TileTemplate4X2();

            // Coloring from http://www.dotsphinx.com/media/games/rubik/tangle/img/tangle.gif
            var result = new PaintedTiles
            {
                new PaintedTile(1, t, new[] { Color.Blue, Color.Green, Color.Red, Color.Yellow }),
                new PaintedTile(2, t, new[] { Color.Blue, Color.Green, Color.Yellow, Color.Red }),
                new PaintedTile(3, t, new[] { Color.Blue, Color.Red, Color.Green, Color.Yellow }),
                new PaintedTile(4, t, new[] { Color.Blue, Color.Red, Color.Yellow, Color.Green }),
                new PaintedTile(5, t, new[] { Color.Blue, Color.Yellow, Color.Green, Color.Red }),
                new PaintedTile(6, t, new[] { Color.Blue, Color.Yellow, Color.Red, Color.Green }),

                new PaintedTile(7, t, new[] { Color.Green, Color.Blue, Color.Yellow, Color.Red }),
                new PaintedTile(8, t, new[] { Color.Green, Color.Blue, Color.Red, Color.Yellow }),
                new PaintedTile(9, t, new[] { Color.Green, Color.Red, Color.Yellow, Color.Blue }),    // These items are the same
                new PaintedTile(10, t, new[] { Color.Green, Color.Red, Color.Yellow, Color.Blue }),   // These items are the same
                new PaintedTile(11, t, new[] { Color.Green, Color.Red, Color.Blue, Color.Yellow }),
                new PaintedTile(12, t, new[] { Color.Green, Color.Yellow, Color.Blue, Color.Red }),
                new PaintedTile(13, t, new[] { Color.Green, Color.Yellow, Color.Red, Color.Blue }),

                new PaintedTile(14, t, new[] { Color.Red, Color.Blue, Color.Green, Color.Yellow }),
                new PaintedTile(15, t, new[] { Color.Red, Color.Blue, Color.Yellow, Color.Green }),
                new PaintedTile(16, t, new[] { Color.Red, Color.Green, Color.Blue, Color.Yellow }),
                new PaintedTile(17, t, new[] { Color.Red, Color.Green, Color.Yellow, Color.Blue }),
                new PaintedTile(18, t, new[] { Color.Red, Color.Yellow, Color.Blue, Color.Green }),
                new PaintedTile(19, t, new[] { Color.Red, Color.Yellow, Color.Green, Color.Blue }),

                new PaintedTile(20, t, new[] { Color.Yellow, Color.Green, Color.Blue, Color.Red }),
                new PaintedTile(21, t, new[] { Color.Yellow, Color.Green, Color.Red, Color.Blue }),
                new PaintedTile(22, t, new[] { Color.Yellow, Color.Blue, Color.Green, Color.Red }),
                new PaintedTile(23, t, new[] { Color.Yellow, Color.Blue, Color.Red, Color.Green }),
                new PaintedTile(24, t, new[] { Color.Yellow, Color.Red, Color.Green, Color.Blue }),
                new PaintedTile(25, t, new[] { Color.Yellow, Color.Red, Color.Blue, Color.Green })
            };
            return result;
        }
예제 #8
0
 public PaintedTiles Create16()
 {
     var t = new TileTemplate4X2();
     var result = new PaintedTiles
     {
         new PaintedTile(1, t, new[] { Color.Blue, Color.Green, Color.Red, Color.Yellow }),
         new PaintedTile(2, t, new[] { Color.Blue, Color.Green, Color.Yellow, Color.Red }),
         new PaintedTile(3, t, new[] { Color.Blue, Color.Red, Color.Green, Color.Yellow }),
         new PaintedTile(4, t, new[] { Color.Blue, Color.Red, Color.Yellow, Color.Green }),
         new PaintedTile(5, t, new[] { Color.Blue, Color.Yellow, Color.Red, Color.Green }),
         new PaintedTile(6, t, new[] { Color.Green, Color.Blue, Color.Yellow, Color.Red }),
         new PaintedTile(7, t, new[] { Color.Green, Color.Red, Color.Yellow, Color.Blue }),
         new PaintedTile(8, t, new[] { Color.Green, Color.Yellow, Color.Blue, Color.Red }),
         new PaintedTile(9, t, new[] { Color.Green, Color.Yellow, Color.Red, Color.Blue }),
         new PaintedTile(10, t, new[] { Color.Red, Color.Blue, Color.Green, Color.Yellow }),
         new PaintedTile(11, t, new[] { Color.Red, Color.Blue, Color.Yellow, Color.Green }),
         new PaintedTile(12, t, new[] { Color.Red, Color.Green, Color.Blue, Color.Yellow }),
         new PaintedTile(13, t, new[] { Color.Red, Color.Green, Color.Yellow, Color.Blue }),
         new PaintedTile(14, t, new[] { Color.Red, Color.Yellow, Color.Blue, Color.Green }),
         new PaintedTile(15, t, new[] { Color.Yellow, Color.Green, Color.Blue, Color.Red }),
         new PaintedTile(16, t, new[] { Color.Yellow, Color.Green, Color.Red, Color.Blue }),
     };
     return result;
 }
예제 #9
0
파일: GameTest.cs 프로젝트: gnagypal/tangle
        private int DrawPaintedTilesHeader(PaintedTiles t, int startX, int startY, int columnCount)
        {
            Font font = new Font(FontFamily.GenericSansSerif, 20);
            SolidBrush brush = new SolidBrush(Color.Black);
            this.graphics.DrawString(string.Format("{0} db választható kártya:", t.Count), font, brush, 10, 10);

            this.graphics.TranslateTransform(startX, startY);

            for (int i = 0; i < t.Count; i++)
            {
                int x = i % 5;
                int y = i / 5;
                this.graphics.ResetTransform();
                this.graphics.TranslateTransform(
                    startX + (t[i].TileTemplate.FrameRectangle.Width * x),
                    startY + (t[i].TileTemplate.FrameRectangle.Height * y));
                t[i].Rotation = Rotation.X000;
                t[i].DrawTile(this.graphics);
            }

            this.graphics.ResetTransform();

            int headerHeight = t[0].TileTemplate.FrameRectangle.Height * ((t.Count / columnCount) + 1);
            int endY = startY + headerHeight;
            return endY;
        }