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>(); }
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); }
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); }
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>(); }
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(""); } }
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); }
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; }
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; }
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; }