From 59e7a713126b0d763aacf68d6e32095ec407625a Mon Sep 17 00:00:00 2001
From: Floris <f.k.h.vandezande@students.uu.nl>
Date: Tue, 10 Dec 2024 11:57:33 +0100
Subject: [PATCH] update

---
 PuzzlePlayer/PuzzlePlayer.cs |  2 +-
 PuzzlePlayer/Skyscrapers.cs  | 38 ++++++++++++++++++++++++++++--------
 2 files changed, 31 insertions(+), 9 deletions(-)

diff --git a/PuzzlePlayer/PuzzlePlayer.cs b/PuzzlePlayer/PuzzlePlayer.cs
index ac27d0e..b1d6742 100644
--- a/PuzzlePlayer/PuzzlePlayer.cs
+++ b/PuzzlePlayer/PuzzlePlayer.cs
@@ -10,7 +10,7 @@ namespace PuzzlePlayer_Namespace
     {
         internal static void Main(string[] args)
         {
-            Application.Run(new PuzzleForm(new Skyscrapers()));
+            Application.Run(new PuzzleForm(new Skyscrapers(6)));
         }
     }
 
diff --git a/PuzzlePlayer/Skyscrapers.cs b/PuzzlePlayer/Skyscrapers.cs
index c3b6351..cb24eea 100644
--- a/PuzzlePlayer/Skyscrapers.cs
+++ b/PuzzlePlayer/Skyscrapers.cs
@@ -2,11 +2,13 @@
 using System.Collections.Generic;
 using System.Drawing;
 using System.Drawing.Text;
+using System.IO;
 using System.Linq;
 using System.Security.Cryptography.Xml;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
+using System.Windows.Forms.Design;
 
 namespace PuzzlePlayer_Namespace
 {
@@ -16,14 +18,18 @@ namespace PuzzlePlayer_Namespace
         public string[,] candidateState;
         public Skyscrapers(int boardSize = 6)
         {
-            boardState = GetClearBoard(boardSize);
-            lastGeneratedBoard = GetClearBoard(boardSize);
-            candidateState = new string[boardSize, boardSize];
+            boardState = GetClearBoard(boardSize + 2);
+            lastGeneratedBoard = GetClearBoard(boardSize + 2);
+            candidateState = new string[boardSize + 2, boardSize + 2];
             description = "lol";
             drawFactor = 1;
             candidateState[1, 1] = "123";
             candidateState[2, 3] = "1734";
             candidateState[4, 4] = "123456789";
+            boardState[1, 1] = 1;
+            boardState[2, 2] = 2;
+            boardState[3, 3] = 3;
+            boardState[4, 4] = 4;
         }
         public override void Draw(Graphics gr, Rectangle r)
         {
@@ -90,13 +96,29 @@ namespace PuzzlePlayer_Namespace
 
         public override void Generate()
         {
-            int[] remaining = new int[boardState.GetLength(0)];
-            for (int i = 0; i < remaining.Length; i++)
-                remaining[i] = i + 1;
-            for (int i = 0; i < boardState.GetLength(0); i++)
+            boardState = GetClearBoard(boardState.GetLength(0));
+            candidateState = new string[boardState.GetLength(0), boardState.GetLength(1)];
+            Random random = new Random();
+            void RandomFillLine(int direction)
             {
-
+                List<int> options = new List<int>();
+                for (int i = 0; i < boardState.GetLength(0) - 2; i++)
+                    options.Add(i + 1);
+                int deficit = 0;
+                if (boardState[1, 1] != emptySpace)
+                {
+                    options.Remove(boardState[1, 1]);
+                    deficit++;
+                }
+                for (int i = deficit; i < boardState.GetLength(0) - 2; i++)
+                {
+                    int index = random.Next(options.Count);
+                    boardState[1 + i * (1 - direction), 1 + i * direction] = options[index];
+                    options.RemoveAt(index);
+                }
             }
+            RandomFillLine(0);
+            RandomFillLine(1);
             return;
         }
 
-- 
GitLab