From 93017e17f039b0906db3f080d5ebcf21025709be Mon Sep 17 00:00:00 2001 From: RubenSchoonbaert <121669330+RubenSchoonbaert@users.noreply.github.com> Date: Sun, 22 Dec 2024 17:20:31 +0100 Subject: [PATCH] Add files via upload --- Maze-WPF/Doolhof.sln | 43 ++ Maze-WPF/Logic/BinaryTreeAlgoritm.cs | 245 ++++++++++++ Maze-WPF/Logic/DepthFirstAlgoritm.cs | 321 +++++++++++++++ Maze-WPF/Logic/Logic.csproj | 13 + Maze-WPF/Logic/PhysicsEngine.cs | 155 ++++++++ Maze-WPF/Logic/StaticMazeGenerator.cs | 92 +++++ Maze-WPF/Logic/WallsCreationAlgoritm.cs | 373 ++++++++++++++++++ Maze-WPF/Logic/bin/Debug/net7.0/Global.dll | Bin 0 -> 6656 bytes Maze-WPF/Logic/bin/Debug/net7.0/Global.pdb | Bin 0 -> 11812 bytes .../Logic/bin/Debug/net7.0/Logic.deps.json | 36 ++ Maze-WPF/Logic/bin/Debug/net7.0/Logic.dll | Bin 0 -> 23552 bytes Maze-WPF/Logic/bin/Debug/net7.0/Logic.pdb | Bin 0 -> 20604 bytes .../obj/Debug/net7.0/Logic.AssemblyInfo.cs | 23 ++ .../net7.0/Logic.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 11 + .../obj/Debug/net7.0/Logic.GlobalUsings.g.cs | 8 + .../Logic/obj/Debug/net7.0/Logic.assets.cache | Bin 0 -> 152 bytes .../Logic.csproj.AssemblyReference.cache | Bin 0 -> 93857 bytes .../Logic.csproj.BuildWithSkipAnalyzers | 0 .../Debug/net7.0/Logic.csproj.CopyComplete | 0 .../Logic.csproj.CoreCompileInputs.cache | 1 + .../net7.0/Logic.csproj.FileListAbsolute.txt | 15 + Maze-WPF/Logic/obj/Debug/net7.0/Logic.dll | Bin 0 -> 23552 bytes Maze-WPF/Logic/obj/Debug/net7.0/Logic.pdb | Bin 0 -> 20604 bytes Maze-WPF/Logic/obj/Debug/net7.0/ref/Logic.dll | Bin 0 -> 6144 bytes .../Logic/obj/Debug/net7.0/refint/Logic.dll | Bin 0 -> 6144 bytes .../Logic/obj/Logic.csproj.nuget.dgspec.json | 122 ++++++ Maze-WPF/Logic/obj/Logic.csproj.nuget.g.props | 15 + .../Logic/obj/Logic.csproj.nuget.g.targets | 2 + Maze-WPF/Logic/obj/project.assets.json | 91 +++++ Maze-WPF/Logic/obj/project.nuget.cache | 8 + 31 files changed, 1575 insertions(+) create mode 100644 Maze-WPF/Doolhof.sln create mode 100644 Maze-WPF/Logic/BinaryTreeAlgoritm.cs create mode 100644 Maze-WPF/Logic/DepthFirstAlgoritm.cs create mode 100644 Maze-WPF/Logic/Logic.csproj create mode 100644 Maze-WPF/Logic/PhysicsEngine.cs create mode 100644 Maze-WPF/Logic/StaticMazeGenerator.cs create mode 100644 Maze-WPF/Logic/WallsCreationAlgoritm.cs create mode 100644 Maze-WPF/Logic/bin/Debug/net7.0/Global.dll create mode 100644 Maze-WPF/Logic/bin/Debug/net7.0/Global.pdb create mode 100644 Maze-WPF/Logic/bin/Debug/net7.0/Logic.deps.json create mode 100644 Maze-WPF/Logic/bin/Debug/net7.0/Logic.dll create mode 100644 Maze-WPF/Logic/bin/Debug/net7.0/Logic.pdb create mode 100644 Maze-WPF/Logic/obj/Debug/net7.0/Logic.AssemblyInfo.cs create mode 100644 Maze-WPF/Logic/obj/Debug/net7.0/Logic.AssemblyInfoInputs.cache create mode 100644 Maze-WPF/Logic/obj/Debug/net7.0/Logic.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 Maze-WPF/Logic/obj/Debug/net7.0/Logic.GlobalUsings.g.cs create mode 100644 Maze-WPF/Logic/obj/Debug/net7.0/Logic.assets.cache create mode 100644 Maze-WPF/Logic/obj/Debug/net7.0/Logic.csproj.AssemblyReference.cache create mode 100644 Maze-WPF/Logic/obj/Debug/net7.0/Logic.csproj.BuildWithSkipAnalyzers create mode 100644 Maze-WPF/Logic/obj/Debug/net7.0/Logic.csproj.CopyComplete create mode 100644 Maze-WPF/Logic/obj/Debug/net7.0/Logic.csproj.CoreCompileInputs.cache create mode 100644 Maze-WPF/Logic/obj/Debug/net7.0/Logic.csproj.FileListAbsolute.txt create mode 100644 Maze-WPF/Logic/obj/Debug/net7.0/Logic.dll create mode 100644 Maze-WPF/Logic/obj/Debug/net7.0/Logic.pdb create mode 100644 Maze-WPF/Logic/obj/Debug/net7.0/ref/Logic.dll create mode 100644 Maze-WPF/Logic/obj/Debug/net7.0/refint/Logic.dll create mode 100644 Maze-WPF/Logic/obj/Logic.csproj.nuget.dgspec.json create mode 100644 Maze-WPF/Logic/obj/Logic.csproj.nuget.g.props create mode 100644 Maze-WPF/Logic/obj/Logic.csproj.nuget.g.targets create mode 100644 Maze-WPF/Logic/obj/project.assets.json create mode 100644 Maze-WPF/Logic/obj/project.nuget.cache diff --git a/Maze-WPF/Doolhof.sln b/Maze-WPF/Doolhof.sln new file mode 100644 index 0000000..d0be179 --- /dev/null +++ b/Maze-WPF/Doolhof.sln @@ -0,0 +1,43 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33424.131 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf_2D", "Doolhof\Wpf_2D.csproj", "{D47F7DEA-1854-4C5B-A652-DDDF08285F6A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Global", "Logica\Global.csproj", "{3890B9BB-6647-4796-AAEE-76CF0A50FD3D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Logic", "Logic\Logic.csproj", "{59C74047-8A4A-4968-B064-CD6DBF338F3D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wpf_3D", "Wpf_3D\Wpf_3D.csproj", "{D35B6C66-9D23-4F3A-853C-15550B4C0D1E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D47F7DEA-1854-4C5B-A652-DDDF08285F6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D47F7DEA-1854-4C5B-A652-DDDF08285F6A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D47F7DEA-1854-4C5B-A652-DDDF08285F6A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D47F7DEA-1854-4C5B-A652-DDDF08285F6A}.Release|Any CPU.Build.0 = Release|Any CPU + {3890B9BB-6647-4796-AAEE-76CF0A50FD3D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3890B9BB-6647-4796-AAEE-76CF0A50FD3D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3890B9BB-6647-4796-AAEE-76CF0A50FD3D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3890B9BB-6647-4796-AAEE-76CF0A50FD3D}.Release|Any CPU.Build.0 = Release|Any CPU + {59C74047-8A4A-4968-B064-CD6DBF338F3D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {59C74047-8A4A-4968-B064-CD6DBF338F3D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {59C74047-8A4A-4968-B064-CD6DBF338F3D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {59C74047-8A4A-4968-B064-CD6DBF338F3D}.Release|Any CPU.Build.0 = Release|Any CPU + {D35B6C66-9D23-4F3A-853C-15550B4C0D1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D35B6C66-9D23-4F3A-853C-15550B4C0D1E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D35B6C66-9D23-4F3A-853C-15550B4C0D1E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D35B6C66-9D23-4F3A-853C-15550B4C0D1E}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {AE57EF3C-8877-450E-B4C8-E0C5DA2ADBF2} + EndGlobalSection +EndGlobal diff --git a/Maze-WPF/Logic/BinaryTreeAlgoritm.cs b/Maze-WPF/Logic/BinaryTreeAlgoritm.cs new file mode 100644 index 0000000..8125c91 --- /dev/null +++ b/Maze-WPF/Logic/BinaryTreeAlgoritm.cs @@ -0,0 +1,245 @@ +using Global; +using Logica; +using System.Drawing; + +namespace Logic { + public class BinaryTreeAlgoritm { + public Maze maze; + private bool isDone = false; + private static readonly Random random = new Random(); + private List oldVisitedCells = new List(); + private List newVisitedCells = new List(); + private Cell stop; + private Cell start; + + public BinaryTreeAlgoritm(Maze maze) { + this.maze = maze; + } + + public void Generate() { + while (!isDone) { + SetAllWalls(); + GenerateCells(100); + GenerateBorder(); + start = CalculateStartStop(1); + stop = CalculateStartStop(maze.length - 2); + SolveMaze(start); + } + if (isDone) { + SetWalls(); + } + } + + /// + /// Generate Maze cel by cel + /// + /// + private void GenerateCells(int placepercentage) { + for (int y = 0; y < maze.height; y++) { + for (int x = 0; x < maze.length; x++) { + if (y % 2 == 0 && x % 2 == 0) { + FillCell(x, y); + } + else { + if (GetRandomNumber(placepercentage) >= 49) { + if (x < maze.length - 1) { + FillCell(x + 1, y); + } + } + else { + if (y < maze.height - 1) { + FillCell(x, y + 1); + } + } + } + + + } + } + } + + private void SetAllWalls() { + foreach (Cell cell in maze.cels) { + maze.cels[cell.x, cell.y].isWall = true; + } + } + + /// + /// Return a random number + /// + /// + /// + private int GetRandomNumber(int placepercentage) { + int randomInt = random.Next(placepercentage); + return randomInt; + } + + + /// + /// Mark cell as visited and color it + /// + /// + /// + private void FillCell(int x, int y) { + maze.cels[x, y].color = Color.Black; + maze.cels[x, y].isWall = false; + } + + + + /// + /// Generate borders + /// + private void GenerateBorder() { + for (int i = 0; i < maze.length; i++) { + maze.cels[i, 0].color = Color.Red; + maze.cels[i, 0].isWall = true; + maze.cels[i, maze.length - 1].color = Color.Red; + maze.cels[i, maze.length - 1].isWall = true; + } + + for (int j = 0; j < maze.height - 1; j++) { + maze.cels[0, j].color = Color.Red; + maze.cels[0, j].isWall = true; + maze.cels[maze.height - 1, j].color = Color.Red; + maze.cels[maze.height - 1, j].isWall = true; + } + } + + /// + /// Find a usable cell in a row for the start or the stop of the maze. + /// + /// + private Cell CalculateStartStop(int x) { + Cell cel = new Cell(); + if (x >= 0 && x < maze.length) { + for (int i = 0; i < maze.length; i++) { + Random random = new Random(); + int randomY = random.Next(0, maze.length); + if (maze.cels[x, randomY].color == Color.Black) { + if (x == 1) { + maze.ball = new Ball(); + maze.ball.SetLocation(x, randomY); + } + else { + maze.cels[x, randomY].color = Color.Blue; + } + maze.cels[x, randomY].visited = true; + maze.cels[x, randomY].isWall = false; + cel.setLocation(x, randomY); + cel.id = maze.cels[x, randomY].id; + break; + } + } + } + return cel; + } + + + /// + /// Solve the maze with an algoritm to see if its solvable + /// + /// + private void SolveMaze(Cell start) { + bool solved = false; + oldVisitedCells.Add(start); + while (!solved && !isDone) { + solved = true; + foreach (Cell cell in oldVisitedCells.ToList()) { + if (FillInAvailableNeighbours(cell.x, cell.y)) { + if (!(cell.color == Color.Red)) { + solved = false; + + } + } + } + oldVisitedCells = newVisitedCells.ToList(); + newVisitedCells.Clear(); + + } + + } + + /// + /// See if the neighbouring cells are available + /// + /// + /// + /// + private bool FillInAvailableNeighbours(int x, int y) { + bool isOk = false; + if (!IsVisited(x + 1, y)) { + SetVisited(x + 1, y); + isOk = true; + } + if (!IsVisited(x - 1, y)) { + SetVisited(x - 1, y); + isOk = true; + } + if (!IsVisited(x, y + 1)) { + SetVisited(x, y + 1); + isOk = true; + } + if (!IsVisited(x, y - 1)) { + SetVisited(x, y - 1); + isOk = true; + } + + return (isOk); + + } + + /// + /// Return if the cell has been visited + /// + /// + /// + /// + private bool IsVisited(int x, int y) { + if (maze.cels[x, y].id == stop.id) { + isDone = true; + } + if (x >= 0 && x < maze.length && y >= 0 && y < maze.height) { + if (maze.cels[x, y].isWall == false) { + return maze.cels[x, y].visited; + } + else return true; + } + else if (x == -1 || y == -1 || x == maze.length || y == maze.height) { + return true; + } + else { + return true; + } + } + + /// + /// Set the cell as visited to prevent index array errors + /// + /// + /// + private void SetVisited(int x, int y) { + Cell cell = maze.cels[x, y]; + cell.setLocation(x, y); + if (cell.isWall == false && cell.visited == false) { + cell.visited = true; + newVisitedCells.Add(cell); + } + + } + + /// + /// Not too proud of this fix + /// + private void SetWalls() { + for (int x = 0; x < maze.length; x++) { + for (int y = 0; y < maze.height; y++) { + if (maze.cels[x, y].color == Color.Red) { + maze.cels[x, y].isWall = true; + } + } + } + + } + } +} diff --git a/Maze-WPF/Logic/DepthFirstAlgoritm.cs b/Maze-WPF/Logic/DepthFirstAlgoritm.cs new file mode 100644 index 0000000..11f7511 --- /dev/null +++ b/Maze-WPF/Logic/DepthFirstAlgoritm.cs @@ -0,0 +1,321 @@ +using Global; +using Logica; +using System.Drawing; + +namespace Logic { + + public class DepthFirstAlgoritm { + public Maze maze; + public bool isDone = false; + private static readonly Random random = new Random(); + private int x; + private int y; + private int attempts = 0; + private bool goodStep; + private int startcellId; + public DepthFirstAlgoritm(Maze maze) { + this.maze = maze; + x = 0; + y = 0; + } + + /// + /// Generate the maze. + /// + public void Generate() { + maze.length--; + maze.height--; + CalculateIdStartCell(); + while (isDone == false) { + SetStep(); + } + CalculateStartStop(1); + CalculateStartStop(maze.length - 1); + maze.height++; + maze.length++; + GenerateBorder(); + SetWalls(); + } + + /// + /// Set a step in a random direction. If there are too many unsuccesfull attempts it will force a step + /// + private void SetStep() { + goodStep = false; + attempts = 0; + while (goodStep == false && isDone == false) { + goodStep = false; + int tempX = x; + int tempY = y; + if (attempts > 5) { + ForceStep(); + break; + } + else { + Direction direction = GenerateRandomMovement(); + switch (direction) { + case Direction.up: tempY = y - 1; break; + case Direction.down: tempY = y + 1; break; + case Direction.right: tempX = x + 1; break; + case Direction.left: tempX = x - 1; break; + } + if (tempY >= 1 && tempX >= 1 && tempX < maze.length && tempY < maze.height) { + if (CheckStepInvalid(tempX, tempY) || CheckNeighbours(x, y, tempX, tempY)) { + attempts = attempts + 1; + } + else { + x = tempX; + y = tempY; + maze.cels[x, y].SetVisited(true); + maze.cels[x, y].color = Color.Red; + goodStep = true; + } + } + else { + attempts = attempts + 1; + } + } + } + + } + + /// + /// will force check every direction for a good step. + /// + private void ForceStep() { + if (CheckStepInvalid((x + 1), y) == false && CheckNeighbours(x, y, x + 1, y) == false) { + goodStep = true; + x++; + } + else if (CheckStepInvalid((x - 1), y) == false && CheckNeighbours(x, y, x - 1, y) == false) { + goodStep = true; + x--; + } + else if (CheckStepInvalid(x, (y + 1)) == false && CheckNeighbours(x, y, x, y + 1) == false) { + goodStep = true; + y++; + } + else if (CheckStepInvalid(x, (y - 1)) == false && CheckNeighbours(x, y, x, y - 1) == false) { + goodStep = true; + y--; + } + if (goodStep) { + maze.cels[x, y].SetVisited(true); + maze.cels[x, y].color = Color.Red; + attempts = 0; + } + if (goodStep == false) { + BacktrackStep(); + } + } + + /// + /// Backstep in a random direction untill a good step has been found + /// if the step is back to the startcell then the maze is done. + /// + private void BacktrackStep() { + int tempY = y; + int tempX = x; + maze.cels[x, y].isBacktracked = true; + Direction[] directions = Enum.GetValues(typeof(Direction)) + .Cast() + .OrderBy(_ => Guid.NewGuid()) + .ToArray(); + //Random order + foreach (Direction direction in directions) { + switch (direction) { + case Direction.up: tempY = y - 1; break; + case Direction.down: tempY = y + 1; break; + case Direction.right: tempX = x + 1; break; + case Direction.left: tempX = x - 1; break; + } + if (IsVisited(tempX, tempY) == true) { + y = tempY; + x = tempX; + maze.cels[x, y].color = Color.Black; + break; + } + } + if (maze.cels[x, y].id == startcellId) { + isDone = true; + } + + } + + + /// + /// Check if a cell has a neighbouring cell that has been visited + /// + /// + /// + /// + /// + /// + private bool CheckNeighbours(int x1, int y1, int x2, int y2) { + bool notOk = false; + + // Check adjacent neighbors + if (IsVisited(x2 + 1, y2) && x2 + 1 != x1) { + notOk = true; + } + else if (IsVisited(x2 - 1, y2) && x2 - 1 != x1) { + notOk = true; + } + else if (IsVisited(x2, y2 + 1) && y2 + 1 != y1) { + notOk = true; + } + else if (IsVisited(x2, y2 - 1) && y2 - 1 != y1) { + notOk = true; + } + + // Check diagonal neighbors + if (IsVisited(x2 + 1, y2 + 1) && x2 + 1 != x1 && y2 + 1 != y1) { + notOk = true; + } + else if (IsVisited(x2 - 1, y2 - 1) && x2 - 1 != x1 && y2 - 1 != y1) { + notOk = true; + } + else if (IsVisited(x2 + 1, y2 - 1) && x2 + 1 != x1 && y2 - 1 != y1) { + notOk = true; + } + else if (IsVisited(x2 - 1, y2 + 1) && x2 - 1 != x1 && y2 + 1 != y1) { + notOk = true; + } + + return notOk; + } + + + + /// + /// Check if a cell has been visited to prevent array out of bounds errors + /// + /// + /// + /// + private bool IsVisited(int x, int y) { + if (x >= 1 && x < maze.length && y >= 1 && y < maze.height) { + return maze.cels[x, y].visited; + } + else if (x == 0 || y == 0 || x == maze.length || y == maze.height) { + return false; + //wall, so can ignore + } + else { + return true; + } + } + + /// + /// Generate a random direction + /// + /// + /// + private Direction GenerateRandomMovement() { + int randomNumber = random.Next(1, 5); + switch (randomNumber) { + case 1: + return Direction.up; + case 2: + return Direction.down; + case 3: + return Direction.left; + case 4: + return Direction.right; + default: + throw new InvalidOperationException("Invalid random number generated."); + } + } + + /// + /// Pick random cell at the left side to generate the maze from + /// + private void CalculateIdStartCell() { + y = random.Next(1, maze.height - 1); + x = random.Next(1, maze.length - 1); + startcellId = maze.cels[x, y].id; + maze.cels[x, y].SetVisited(true); + } + + /// + /// Find a usable cell in a row for the start or the stop of the maze. + /// + /// + private void CalculateStartStop(int x) { + if (x >= 1 && x < maze.length) { + for (int i = 1; i < maze.length; i++) { + Random random = new Random(); + int randomY = random.Next(0, maze.length); + if (maze.cels[x, randomY].color == Color.Black) { + if (x == 1) { + maze.ball = new Ball(); + maze.ball.SetLocation(x, randomY); + } + else { + maze.cels[x, randomY].color = Color.Blue; + Cell endCell = new Cell(); + endCell.setLocation(x, randomY); + maze.endCell = endCell; + } + break; + } + } + } + } + + + public void GenerateBorder() { + int width = maze.length; + int height = maze.height; + + for (int x = 0; x < width; x++) { + for (int y = 0; y < height; y++) { + if (x == 0 || x == width - 1 || y == 0 || y == height - 1) { + maze.cels[x, y].isWall = true; + } + } + } + } + + + + /// + /// Check if a step is invalid + /// + /// + /// + /// + private bool CheckStepInvalid(int x, int y) { + bool isInvalid = true; + if (x >= 1 && x < maze.length && y >= 1 && y < maze.height) { + if (x < maze.length && x >= 1 && isInvalid != false) { + isInvalid = false; + } + if (y < maze.height && y >= 1 && isInvalid != false) { + isInvalid = false; + } + if (IsVisited(x, y) == true) { + isInvalid = true; + } + + } + return isInvalid; + } + + + /// + /// Not too proud of this fix + /// + private void SetWalls() { + for (int x = 0; x < maze.length; x++) { + for (int y = 0; y < maze.height; y++) { + if (maze.cels[x, y].color == Color.Red) { + maze.cels[x, y].isWall = true; + } + } + } + + } + + } +} \ No newline at end of file diff --git a/Maze-WPF/Logic/Logic.csproj b/Maze-WPF/Logic/Logic.csproj new file mode 100644 index 0000000..4c1a418 --- /dev/null +++ b/Maze-WPF/Logic/Logic.csproj @@ -0,0 +1,13 @@ + + + + net7.0 + enable + enable + + + + + + + diff --git a/Maze-WPF/Logic/PhysicsEngine.cs b/Maze-WPF/Logic/PhysicsEngine.cs new file mode 100644 index 0000000..df68593 --- /dev/null +++ b/Maze-WPF/Logic/PhysicsEngine.cs @@ -0,0 +1,155 @@ +using Global; +using Logica; + +namespace Logic { + public class PhysicsEngine { + public Ball ball { get; set; } + + private Maze maze; + private double timeInterval = 0.1; //(100ms) + public bool isFinished = false; + double Dv = 0; + double Dh = 0; + private double elasticity = 0.5; + + + public PhysicsEngine(Ball ball, Maze maze) { + this.ball = ball; + this.maze = maze; + } + + + /// + /// Checks for collisions on both axis + /// + /// + /// + public void CheckForCollision(double x, double y) { + CheckXAxis(x); + CheckYAxis(y); + } + + /// + /// Check the x axis for collisions + /// + /// + internal void CheckXAxis(double x) { + double arrayX = x - 0.5; + bool directionCheck = ball.x > x; // true for left, false for right + + bool axisCheck = false; + + for (double i = -ball.size; i <= ball.size; i += 0.1) { + double checkX = directionCheck ? arrayX - ball.size : arrayX + ball.size; + double checkY = ball.y - 0.5 + i; + + if (maze.cels[RoundToNearest(checkX), RoundToNearest(checkY)].isWall) { + axisCheck = true; + break; + } + } + + if (!axisCheck) { + ball.x = x; + } + else { + Dv = -Dv * elasticity; + } + } + + + + + /// + /// Check if the y axis collides with the edge + /// + /// + internal void CheckYAxis(double y) { + double arrayY = y - 0.5; + bool directionCheck = ball.y > y; // true for up, false for down + + bool axisCheck = false; + + for (double i = -ball.size; i <= ball.size; i += 0.1) { + double checkX = ball.x - 0.5 + i; + double checkY = directionCheck ? arrayY - ball.size : arrayY + ball.size; + + if (maze.cels[RoundToNearest(checkX), RoundToNearest(checkY)].isWall) { + axisCheck = true; + break; + } + } + + if (!axisCheck) { + ball.y = y; + } + else { + Dh = -Dh * elasticity; + } + } + + + + + + /// + /// Check if the ball is in the end cell. + /// + /// + internal bool CheckFinished() { + double tolerance = 0.5; // Adjust the tolerance as needed + + if (Math.Abs(ball.x - maze.endCell.x) < tolerance && Math.Abs(ball.y - maze.endCell.y) < tolerance) { + return true; + } + else { + return false; + } + } + + + + //round double to the nearest integer + public int RoundToNearest(double value) { + return (int)Math.Ceiling(value); + } + + /// + /// Calculate angle to x and y forces + /// + /// + /// + /// + public Ball CalculateAngleMovement(double vertR, double horzR) { + double radianAngleX = vertR * (Math.PI / 180); + double radianAngleY = horzR * (Math.PI / 180); + + double aX = 9.81 * Math.Sin(radianAngleX); + double aY = 9.81 * Math.Sin(radianAngleY); + Dh += (1.0 / 2.0) * aX * Math.Pow(timeInterval, 2); + Dv += (1.0 / 2.0) * aY * Math.Pow(timeInterval, 2); + + AddFriction(); + double nextX = ball.x + Dv; + double nextY = ball.y - Dh; + CheckForCollision(nextX, nextY); + if (CheckFinished()) { + isFinished = true; + } + else { + isFinished = false; + } + return ball; + } + + /// + /// Add friction the the ball + /// + private void AddFriction() { + double friction = 0.15; + Dv *= (1.0 - friction * timeInterval); + Dh *= (1.0 - friction * timeInterval); + } + + } +} diff --git a/Maze-WPF/Logic/StaticMazeGenerator.cs b/Maze-WPF/Logic/StaticMazeGenerator.cs new file mode 100644 index 0000000..3901f4f --- /dev/null +++ b/Maze-WPF/Logic/StaticMazeGenerator.cs @@ -0,0 +1,92 @@ +using Global; +using Logica; +using System.Drawing; + +namespace Logic { + public class StaticMazeGenerator { + public Maze maze; + + public StaticMazeGenerator() { + maze = new Maze(20, 20); + maze.GenerateGrid(Color.Black); + GenerateStaticMaze(); + } + + /// + /// First set the border of the maze. + /// Then call the GenerateWallls() methode to fill in the rest of the maze + /// &set the start and end cell. + /// + public void GenerateStaticMaze() { + for (int x = 0; x < maze.length; x++) { + maze.cels[x, 0].isWall = true; + maze.cels[x, maze.height - 1].isWall = true; + maze.cels[x, 0].color = Color.Red; + maze.cels[x, maze.height - 1].color = Color.Red; + } + for (int y = 0; y < maze.height; y++) { + maze.cels[0, y].isWall = true; + maze.cels[maze.length - 1, y].isWall = true; + maze.cels[0, y].color = Color.Red; + maze.cels[maze.length - 1, y].color = Color.Red; + + } + + // Set the start & stop cell + maze.ball = new Ball(); + maze.ball.SetLocation(1, 2); + maze.cels[18, 16].color = Color.Blue; + maze.endCell = maze.cels[18, 16]; + Cell endCell = new Cell(); + endCell.setLocation(maze.length - 2, maze.height - 2); + maze.endCell = endCell; + + GenerateWalls(); + } + + /// + /// Set the maze using a static list of id's that are walls. + /// + private void GenerateWalls() { + //list of ids + List wallIds = new List { + 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, + 200, 220, 240, 260, 280, 300, 320, 340, 360, 380, + 1, 21, 121, 141, 261, 361, 381, 2, 62, 102, 122, + 182, 222, 302, 322, 382, 3, 43, 63, 163, 183, 203, + 223, 263, 283, 303, 323, 343, 383, 4, 64, 84, 104, + 124, 144, 164, 264, 304, 344, 384, 5, 45, 65, 205, + 225, 245, 265, 385, 6, 26, 46, 106, 126, 146, 166, + 186, 206, 226, 266, 286, 326, 346, 366, 386, 7, 87, + 107, 127, 167, 227, 267, 287, 327, 347, 387, 8, 48, + 68, 88, 208, 228, 388, 9, 89, 109, 149, 169, 269, + 309, 349, 369, 389, 10, 50, 90, 170, 190, 210, 230, + 250, 270, 290, 310, 370, 390, 11, 31, 51, 91, 131, + 231, 291, 311, 331, 391, 12, 92, 112, 132, 152, 172, + 192, 212, 232, 272, 292, 372, 392, 13, 33, 73, 93, + 113, 193, 213, 273, 333, 353, 373, 393, 14, 34, 94, + 114, 154, 234, 254, 274, 294, 334, 394, 15, 75, 95, + 155, 175, 195, 215, 235, 255, 335, 355, 395, 16, 56, + 76, 136, 156, 196, 236, 256, 296, 316, 336, 396, 17, + 57, 117, 137, 317, 377, 397, 18, 98, 118, 178, 218, + 258, 278, 358, 378, 398, 19, 39, 59, 79, 99, 119, + 139, 159, 179, 199, 219, 239, 259, 279, 299, 319, 339, + 359, 379, 399 + }; + var wallCells = wallIds.Select(id => new { X = id % maze.length, Y = id / maze.length }); + + foreach (var cell in wallCells) { + int x = cell.X; + int y = cell.Y; + + if (x > 0 && x < maze.length && y > 0 && y < maze.height) { + maze.cels[x, y].isWall = true; + maze.cels[x, y].color = Color.Red; + } + } + } + + } +} + + diff --git a/Maze-WPF/Logic/WallsCreationAlgoritm.cs b/Maze-WPF/Logic/WallsCreationAlgoritm.cs new file mode 100644 index 0000000..4095a3d --- /dev/null +++ b/Maze-WPF/Logic/WallsCreationAlgoritm.cs @@ -0,0 +1,373 @@ +using Global; +using Logica; +using System.Drawing; + +namespace Logic { + public class WallsCreationAlgoritm { + public Maze maze; + public bool isDone = false; + public int wallpercentage = 25; + public int destructionpercentage = 15; + private static readonly Random random = new Random(); + private List Rows = new List(); + private List Columns = new List(); + private List oldVisitedCells = new List(); + private List newVisitedCells = new List(); + private Cell stopid; + + public WallsCreationAlgoritm(Maze maze) { + this.maze = maze; + } + + public void Generate() { + CreateWalls(false); // Create walls for columns + CreateWalls(true); // Create walls for rows + PlaceWalls(); + GenerateBorder(); + Cell startid = CalculateStartStop(1); + stopid = CalculateStartStop(maze.length - 2); + SolveMaze(startid); + SetWalls(); + + } + + + /// + /// Source: https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/conditional-operator + /// + /// + private void CreateWalls(bool forRows) { + int rowCount = maze.height; //rows + int colCount = maze.length; //columns + + for (int i = 2; i < (forRows ? rowCount - 2 : colCount - 2); i++) { + if (!HasAdjacentFilledRow(i, forRows) && random.Next(100) < wallpercentage) { + if (forRows) { + Rows.Add(i); + } + else { + Columns.Add(i); + } + } + } + } + + /// + /// Check if an adjacent row is not filled so theres always a gap + /// + /// + /// + /// + private bool HasAdjacentFilledRow(int index, bool RowColumn) { + if (RowColumn) { + if (Rows.Contains(index - 1) || Rows.Contains(index + 1)) { + return true; + } + else { + return false; + } + } + else { + if (Columns.Contains(index - 1) || Columns.Contains(index + 1)) { + return true; + } + else { + return false; + } + } + } + + /// + /// Place the vertical and horizontal walls + /// + private void PlaceWalls() { + foreach (int x in Columns) { + int[] randomIndex = Randomize(maze.height); + bool oneGapPlaced = false; + while (oneGapPlaced == false) { + for (int i = 0; i < maze.height; i++) { + int y = randomIndex[i]; + if (!maze.cels[x, y].isWall) { + if (!oneGapPlaced) { + if (random.Next(100) < 15 && CheckCentrumOfCross(x, y)) { + oneGapPlaced = true; + continue; // gap + } + } + maze.cels[x, y].isWall = true; + maze.cels[x, y].color = Color.Red; + } + } + + } + MakeGap(x, false); + } + + foreach (int y in Rows) { + int[] randomIndex = Randomize(maze.length); + bool gapPlaced = false; + while (gapPlaced == false) { + for (int i = 0; i < maze.length; i++) { + int x = randomIndex[i]; + if (!maze.cels[x, y].isWall) { + if (!gapPlaced) { + if (random.Next(100) < 15 && CheckCentrumOfCross(x, y)) { + gapPlaced = true; + continue; //gap + } + } + maze.cels[x, y].isWall = true; + maze.cels[x, y].color = Color.Red; + } + } + } + MakeGap(y, true); + } + } + + /// + /// Make a gap + /// + /// + /// + private void MakeGap(int xy, bool forRows) { + for (int i = 1; i < (forRows ? maze.height - 1 : maze.length - 1); i++) { + if (random.Next(100) < destructionpercentage && (forRows ? CheckCentrumOfCross(i, xy) : CheckCentrumOfCross(xy, i))) { + if (forRows) { + maze.cels[i, xy].isWall = false; + //maze.cels[i, xy].visited = false; + maze.cels[i, xy].color = Color.Black; + } + else { + maze.cels[xy, i].isWall = false; + // maze.cels[xy, i].visited = false; + maze.cels[xy, i].color = Color.Black; + + } + } + } + } + + /// + /// Check if an empty cell is not surrounded by walls. + /// + /// + /// + /// + private bool CheckCentrumOfCross(int x, int y) { + int i = 0; + if (!(x - 1 < 0 || x + 1 >= maze.length || y - 1 < 0 || y + 1 >= maze.height)) { + if (maze.cels[x + 1, y].color == Color.Red) { + i++; + } + if (maze.cels[x - 1, y].color == Color.Red) { + i++; + } + if (maze.cels[x, y + 1].color == Color.Red) { + i++; + } + if (maze.cels[x, y - 1].color == Color.Red) { + i++; + } + } + if (i >= 3) { + return false; + } + else { + return true; + } + + + } + + /// + /// Taken from https://stackoverflow.com/questions/56378647/fisher-yates-shuffle-in-c-sharp + /// + /// + /// + private int[] Randomize(int size) { + int[] index = new int[size]; + for (int i = 0; i < size; i++) { + index[i] = i; + } + for (int i = size - 1; i > 0; i--) { + int j = random.Next(0, i + 1); + int temp = index[i]; + index[i] = index[j]; + index[j] = temp; + } + + return index; + } + + /// + /// Find a usable cell in a row for the start or the stop of the maze. + /// + /// + private Cell CalculateStartStop(int x) { + Cell cel = new Cell(); + if (x >= 0 && x < maze.length) { + for (int i = 0; i < maze.length; i++) { + Random random = new Random(); + int randomY = random.Next(0, maze.length); + if (maze.cels[x, randomY].color == Color.Black) { + if (x == 1) { + maze.ball = new Ball(); + maze.ball.SetLocation(x, randomY); + } + else { + maze.cels[x, randomY].color = Color.Blue; + } + maze.cels[x, randomY].isWall = false; + cel.setLocation(x, randomY); + cel.id = maze.cels[x, randomY].id; + break; + } + } + } + return cel; + } + + /// + /// Create a border + /// + private void GenerateBorder() { + for (int i = 0; i < maze.length; i++) { + maze.cels[i, 0].color = Color.Red; + maze.cels[i, 0].isWall = true; + maze.cels[i, maze.length - 1].color = Color.Red; + maze.cels[i, maze.length - 1].isWall = true; + } + + for (int j = 0; j < maze.height - 1; j++) { + maze.cels[0, j].color = Color.Red; + maze.cels[0, j].isWall = true; + maze.cels[maze.height - 1, j].color = Color.Red; + maze.cels[maze.height - 1, j].isWall = true; + } + } + + /// + /// Solve the maze with an algoritm to see if its solvable + /// + /// + private void SolveMaze(Cell start) { + int i = 0; + while (!isDone && i < 1) { + bool solved = false; + oldVisitedCells.Add(start); + while (!solved && !isDone) { + solved = true; + foreach (Cell cell in oldVisitedCells.ToList()) { + if (FillInAvailableNeighbours(cell.x, cell.y)) { + solved = false; + } + if (isDone) { + break; + } + } + oldVisitedCells = newVisitedCells.ToList(); + newVisitedCells.Clear(); + + } + if (!isDone && i < 1) { + MakeAdditionalGaps(); + i++; + } + } + + } + + /// + /// Make additional gaps + /// + private void MakeAdditionalGaps() { + foreach (int x in Columns) { + MakeGap(x, false); + } + foreach (int y in Rows) { + MakeGap(y, true); + + } + } + + /// + /// See if the neighbouring cells are available + /// + /// + /// + /// + private bool FillInAvailableNeighbours(int x, int y) { + bool isOk = false; + if (!IsVisited(x + 1, y)) { + SetVisited(x + 1, y); + isOk = true; + } + if (!IsVisited(x - 1, y)) { + SetVisited(x - 1, y); + isOk = true; + } + if (!IsVisited(x, y + 1)) { + SetVisited(x, y + 1); + isOk = true; + } + if (!IsVisited(x, y - 1)) { + SetVisited(x, y - 1); + isOk = true; + } + return (isOk); + + } + + /// + /// Set the cell as visited to prevent index array errors + /// + /// + /// + private void SetVisited(int x, int y) { + Cell cell = maze.cels[x, y]; + cell.setLocation(x, y); + if (cell.isWall == false && cell.visited == false) { + //cell.color = Color.White; + cell.visited = true; + newVisitedCells.Add(cell); + if (cell.id == stopid.id) { + isDone = true; + } + } + + } + + /// + /// Return if the cell has been visited + /// + /// + /// + /// + private bool IsVisited(int x, int y) { + if (x >= 0 && x < maze.length && y >= 0 && y < maze.height) { + return maze.cels[x, y].visited; + } + else if (x == -1 || y == -1 || x == maze.length || y == maze.height) { + return true; + } + else { + return true; + } + } + + /// + /// Not too proud of this fix + /// + private void SetWalls() { + for (int x = 0; x < maze.length; x++) { + for (int y = 0; y < maze.height; y++) { + if (maze.cels[x, y].color == Color.Red) { + maze.cels[x, y].isWall = true; + } + } + } + + } + } +} diff --git a/Maze-WPF/Logic/bin/Debug/net7.0/Global.dll b/Maze-WPF/Logic/bin/Debug/net7.0/Global.dll new file mode 100644 index 0000000000000000000000000000000000000000..d70d2ec2b0cb615bcea879e64064542db5fae57c GIT binary patch literal 6656 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 mSK?Ms4A_5|a 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 +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("Logic")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyProductAttribute("Logic")] +[assembly: System.Reflection.AssemblyTitleAttribute("Logic")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/Maze-WPF/Logic/obj/Debug/net7.0/Logic.AssemblyInfoInputs.cache b/Maze-WPF/Logic/obj/Debug/net7.0/Logic.AssemblyInfoInputs.cache new file mode 100644 index 0000000..9d17235 --- /dev/null +++ b/Maze-WPF/Logic/obj/Debug/net7.0/Logic.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +55bfe306e4c1a29ea5a87d332ae418f3fee8f1af diff --git a/Maze-WPF/Logic/obj/Debug/net7.0/Logic.GeneratedMSBuildEditorConfig.editorconfig b/Maze-WPF/Logic/obj/Debug/net7.0/Logic.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..d778905 --- /dev/null +++ b/Maze-WPF/Logic/obj/Debug/net7.0/Logic.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,11 @@ +is_global = true +build_property.TargetFramework = net7.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Logic +build_property.ProjectDir = C:\Users\ruben\source\repos\2324-ap-rubenschoonbaert\Doolhof\Logic\ diff --git a/Maze-WPF/Logic/obj/Debug/net7.0/Logic.GlobalUsings.g.cs b/Maze-WPF/Logic/obj/Debug/net7.0/Logic.GlobalUsings.g.cs new file mode 100644 index 0000000..ac22929 --- /dev/null +++ b/Maze-WPF/Logic/obj/Debug/net7.0/Logic.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/Maze-WPF/Logic/obj/Debug/net7.0/Logic.assets.cache b/Maze-WPF/Logic/obj/Debug/net7.0/Logic.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..bb274b4bd65dd2e0ebd902a61d0b25db82a5722f GIT binary patch literal 152 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 literal 0 HcmV?d00001 diff --git a/Maze-WPF/Logic/obj/Debug/net7.0/Logic.csproj.BuildWithSkipAnalyzers b/Maze-WPF/Logic/obj/Debug/net7.0/Logic.csproj.BuildWithSkipAnalyzers new file mode 100644 index 0000000..e69de29 diff --git a/Maze-WPF/Logic/obj/Debug/net7.0/Logic.csproj.CopyComplete b/Maze-WPF/Logic/obj/Debug/net7.0/Logic.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 diff --git a/Maze-WPF/Logic/obj/Debug/net7.0/Logic.csproj.CoreCompileInputs.cache b/Maze-WPF/Logic/obj/Debug/net7.0/Logic.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..0f24814 --- /dev/null +++ b/Maze-WPF/Logic/obj/Debug/net7.0/Logic.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +0e9e05df1406f32298502346ed2f5919e1676f26 diff --git a/Maze-WPF/Logic/obj/Debug/net7.0/Logic.csproj.FileListAbsolute.txt b/Maze-WPF/Logic/obj/Debug/net7.0/Logic.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..0419b34 --- /dev/null +++ b/Maze-WPF/Logic/obj/Debug/net7.0/Logic.csproj.FileListAbsolute.txt @@ -0,0 +1,15 @@ +C:\Users\ruben\source\repos\2324-ap-rubenschoonbaert\Doolhof\Logic\bin\Debug\net7.0\Logic.deps.json +C:\Users\ruben\source\repos\2324-ap-rubenschoonbaert\Doolhof\Logic\bin\Debug\net7.0\Logic.dll +C:\Users\ruben\source\repos\2324-ap-rubenschoonbaert\Doolhof\Logic\bin\Debug\net7.0\Logic.pdb +C:\Users\ruben\source\repos\2324-ap-rubenschoonbaert\Doolhof\Logic\bin\Debug\net7.0\Global.dll +C:\Users\ruben\source\repos\2324-ap-rubenschoonbaert\Doolhof\Logic\bin\Debug\net7.0\Global.pdb +C:\Users\ruben\source\repos\2324-ap-rubenschoonbaert\Doolhof\Logic\obj\Debug\net7.0\Logic.csproj.AssemblyReference.cache +C:\Users\ruben\source\repos\2324-ap-rubenschoonbaert\Doolhof\Logic\obj\Debug\net7.0\Logic.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\ruben\source\repos\2324-ap-rubenschoonbaert\Doolhof\Logic\obj\Debug\net7.0\Logic.AssemblyInfoInputs.cache +C:\Users\ruben\source\repos\2324-ap-rubenschoonbaert\Doolhof\Logic\obj\Debug\net7.0\Logic.AssemblyInfo.cs +C:\Users\ruben\source\repos\2324-ap-rubenschoonbaert\Doolhof\Logic\obj\Debug\net7.0\Logic.csproj.CoreCompileInputs.cache +C:\Users\ruben\source\repos\2324-ap-rubenschoonbaert\Doolhof\Logic\obj\Debug\net7.0\Logic.csproj.CopyComplete +C:\Users\ruben\source\repos\2324-ap-rubenschoonbaert\Doolhof\Logic\obj\Debug\net7.0\Logic.dll +C:\Users\ruben\source\repos\2324-ap-rubenschoonbaert\Doolhof\Logic\obj\Debug\net7.0\refint\Logic.dll +C:\Users\ruben\source\repos\2324-ap-rubenschoonbaert\Doolhof\Logic\obj\Debug\net7.0\Logic.pdb +C:\Users\ruben\source\repos\2324-ap-rubenschoonbaert\Doolhof\Logic\obj\Debug\net7.0\ref\Logic.dll diff --git a/Maze-WPF/Logic/obj/Debug/net7.0/Logic.dll b/Maze-WPF/Logic/obj/Debug/net7.0/Logic.dll new file mode 100644 index 0000000000000000000000000000000000000000..14cfaf1f370c71a37a3026e9b520f8c7842ad03e GIT binary patch literal 23552 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 Dp6wZn literal 0 HcmV?d00001 diff --git a/Maze-WPF/Logic/obj/Debug/net7.0/refint/Logic.dll b/Maze-WPF/Logic/obj/Debug/net7.0/refint/Logic.dll new file mode 100644 index 0000000000000000000000000000000000000000..b4b8ea36cf383afbc78cb525d3b5b758c0c2978e GIT binary patch literal 6144 zcmeHLU2Ggz6+ScL-K_1}*e0%0mC{L_hCrg#I&lLgNxSy0?V9?p_U6X~YR}GIuLsZ0 zY-eU2+d{=CP_Xl9=udm;X6HKxZz(hH z94xI{zFzm-s%O-6({LO&(91&i8jfx`dU1Y9uelYG?dj<{6uDlQAevD+$mx6O4{>k5 zqsR1aB}eoCB$-h9<}-NaQFTc)yHD&svF={qgr7;i29i+C4IGh0j$KKATiZQ7KRKmo6fOg&(4H?cbsCr7w&t zkq16!Hb=6#?1|io;Zb&&A{+P?&ZnUlh>oOiPBOg|c$QQ3*&^2&9$!OemuLhupOHgT zXQzvJ7Qz1z!3~YuZkdfyaD*x62d^oeAm|^;2|mv_em>Ut*z83ejOZRbA4g?9S8kGg z61}N1Pn4#gD9>wY8dVu@({tL#=zDlorYR*Qy0W9DNmn0&_NxlxsKj#;e%rnH6BA<%{K8nuuaoxiF@TU#P%0~C-IVc0%KHY zlos+l-WLyCK(>?wS7_s&ZsXc@oR^lDxfVw+p+B`v*W{#5i*@t_dT(->YicRM{XkuA zafovT8IAg*J8Bhu#N7K@4LOXt-)bIp#+)2qcg)e3G2=}Ry15o7BYPmWl(^qjVE^g8m9TMgIgACm~vT4E=$Q}+Mp%nx|Cd(lIxJ{C~wnaqyq=&uyR|{wxED~n1+RK^0F%;g3o1-DkWY~jTw302eRtdH)S92G^m zQLP$fJ0Y8E*mk>Q%=bmDY;TvWAZb`Kys8K$@hu@Px!y+0YivJ>XwC`G$0+wIr=2y| zs~MaE!~Ty}1=m@#stt^|&B>xzTQb%}u)T<>@LSHq6iDMmVH;bLO6cRr7CcO%8MGS4 zgGPURqi-qDlkkLNinwV@6-&5N!`W^rq6w7pz$#m|6(qEqhTUk*<5GYa%~@kdP>o^I zHmcOV5VBEr@cyMKyjBgH#<83T$zK6ulOGdu8D=XGg&t_!atv>~%)L8CA#ikpn*#Md{1N>v>6do0cj3Xtg2@*n(i=IpdW1G;5ij>$__K z+Ev6D78Q1nPt92gSF2C+<*y)ADj2reu(6TGoT@Em-Az%$-lRph;Z#cQoG?6WQQD&I z@X*+E5AVcBGSBQVM+(RcSJ`Hfmq zA3X0F^*Ps>*fKGXn5xpc=U(y^*zJ=iTnFPBg$`urCQ1d@6Jz!Iv1mHaY<@PIgO}d@ z&8=Lt{JL#y&tYe0xP=ajE`?HZeGxG!PY!&iqK9EzAMqE;C4*Ze2gZnUSfOuh@C&Y_ z_KexKdug^|2Ugt{5OhvE>jLW%=OoN#_Ww_2c$fZHZx}k?E$=S!dp;rjc67gH(Q8cS znc7?8dw8f>K?;kuJ!@DF)qE5A6mr+G_Riz*ad$U+9eyYY-~WgXgue_VJji4dW?(lV z1S!)mza1{D61~iMi^|LD2&i*-zpnr%Xc5#jercHlKMkA=e|4dsb^Q5Xp`XxK?DMI} z4=yp7iuO_jtH7&49{gDNo)GZq&>FeY@DOfgL?vhqNPXxH3Sj4g3(Jj;zoR<^F$J)) zAg|uT)32pX4&x60MySj=pkuh_DY&V)RHM4=V;dtfzzOMo2AV3o^6xPt(l(B=2n!!_ z?z7$&Q?gA?-pk`Q=g`JOt5*EOxI^WdmHX&IJe+|*+B%5EPDIr5ouvvi{QY$VS;c;U zeN|fXXzDnOII=3O!xNE?dRqFPkK~*w_8rH@TsZ1`^%3T20c~CM+rYSkL{#|QFOjF5 z%u~DV-6L;}o9J^gM`Or~k1^CRGd7~vu`1fL)oQ~zyI=NXARqn~c=OaA&3(cDK?eQ} Dp6wZn literal 0 HcmV?d00001 diff --git a/Maze-WPF/Logic/obj/Logic.csproj.nuget.dgspec.json b/Maze-WPF/Logic/obj/Logic.csproj.nuget.dgspec.json new file mode 100644 index 0000000..98bb08c --- /dev/null +++ b/Maze-WPF/Logic/obj/Logic.csproj.nuget.dgspec.json @@ -0,0 +1,122 @@ +{ + "format": 1, + "restore": { + "C:\\Users\\ruben\\source\\repos\\2324-ap-rubenschoonbaert\\Doolhof\\Logic\\Logic.csproj": {} + }, + "projects": { + "C:\\Users\\ruben\\source\\repos\\2324-ap-rubenschoonbaert\\Doolhof\\Logica\\Global.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\ruben\\source\\repos\\2324-ap-rubenschoonbaert\\Doolhof\\Logica\\Global.csproj", + "projectName": "Global", + "projectPath": "C:\\Users\\ruben\\source\\repos\\2324-ap-rubenschoonbaert\\Doolhof\\Logica\\Global.csproj", + "packagesPath": "C:\\Users\\ruben\\.nuget\\packages\\", + "outputPath": "C:\\Users\\ruben\\source\\repos\\2324-ap-rubenschoonbaert\\Doolhof\\Logica\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\ruben\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net7.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net7.0": { + "targetAlias": "net7.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net7.0": { + "targetAlias": "net7.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.201\\RuntimeIdentifierGraph.json" + } + } + }, + "C:\\Users\\ruben\\source\\repos\\2324-ap-rubenschoonbaert\\Doolhof\\Logic\\Logic.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\ruben\\source\\repos\\2324-ap-rubenschoonbaert\\Doolhof\\Logic\\Logic.csproj", + "projectName": "Logic", + "projectPath": "C:\\Users\\ruben\\source\\repos\\2324-ap-rubenschoonbaert\\Doolhof\\Logic\\Logic.csproj", + "packagesPath": "C:\\Users\\ruben\\.nuget\\packages\\", + "outputPath": "C:\\Users\\ruben\\source\\repos\\2324-ap-rubenschoonbaert\\Doolhof\\Logic\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\ruben\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net7.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net7.0": { + "targetAlias": "net7.0", + "projectReferences": { + "C:\\Users\\ruben\\source\\repos\\2324-ap-rubenschoonbaert\\Doolhof\\Logica\\Global.csproj": { + "projectPath": "C:\\Users\\ruben\\source\\repos\\2324-ap-rubenschoonbaert\\Doolhof\\Logica\\Global.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net7.0": { + "targetAlias": "net7.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.201\\RuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/Maze-WPF/Logic/obj/Logic.csproj.nuget.g.props b/Maze-WPF/Logic/obj/Logic.csproj.nuget.g.props new file mode 100644 index 0000000..8b1ca55 --- /dev/null +++ b/Maze-WPF/Logic/obj/Logic.csproj.nuget.g.props @@ -0,0 +1,15 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\ruben\.nuget\packages\ + PackageReference + 6.5.0 + + + + + \ No newline at end of file diff --git a/Maze-WPF/Logic/obj/Logic.csproj.nuget.g.targets b/Maze-WPF/Logic/obj/Logic.csproj.nuget.g.targets new file mode 100644 index 0000000..35a7576 --- /dev/null +++ b/Maze-WPF/Logic/obj/Logic.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/Maze-WPF/Logic/obj/project.assets.json b/Maze-WPF/Logic/obj/project.assets.json new file mode 100644 index 0000000..73fc262 --- /dev/null +++ b/Maze-WPF/Logic/obj/project.assets.json @@ -0,0 +1,91 @@ +{ + "version": 3, + "targets": { + "net7.0": { + "Global/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v7.0", + "compile": { + "bin/placeholder/Global.dll": {} + }, + "runtime": { + "bin/placeholder/Global.dll": {} + } + } + } + }, + "libraries": { + "Global/1.0.0": { + "type": "project", + "path": "../Logica/Global.csproj", + "msbuildProject": "../Logica/Global.csproj" + } + }, + "projectFileDependencyGroups": { + "net7.0": [ + "Global >= 1.0.0" + ] + }, + "packageFolders": { + "C:\\Users\\ruben\\.nuget\\packages\\": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\ruben\\source\\repos\\2324-ap-rubenschoonbaert\\Doolhof\\Logic\\Logic.csproj", + "projectName": "Logic", + "projectPath": "C:\\Users\\ruben\\source\\repos\\2324-ap-rubenschoonbaert\\Doolhof\\Logic\\Logic.csproj", + "packagesPath": "C:\\Users\\ruben\\.nuget\\packages\\", + "outputPath": "C:\\Users\\ruben\\source\\repos\\2324-ap-rubenschoonbaert\\Doolhof\\Logic\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\ruben\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net7.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net7.0": { + "targetAlias": "net7.0", + "projectReferences": { + "C:\\Users\\ruben\\source\\repos\\2324-ap-rubenschoonbaert\\Doolhof\\Logica\\Global.csproj": { + "projectPath": "C:\\Users\\ruben\\source\\repos\\2324-ap-rubenschoonbaert\\Doolhof\\Logica\\Global.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net7.0": { + "targetAlias": "net7.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.201\\RuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/Maze-WPF/Logic/obj/project.nuget.cache b/Maze-WPF/Logic/obj/project.nuget.cache new file mode 100644 index 0000000..8509a03 --- /dev/null +++ b/Maze-WPF/Logic/obj/project.nuget.cache @@ -0,0 +1,8 @@ +{ + "version": 2, + "dgSpecHash": "lnsbpXwor5nRCr6Tm3wWDBsSBG3WZotKkmmojwVOQjrBQQyCkrRNjzOAE7kYTdFtA0vMNVACSunO5a8ZDrgffA==", + "success": true, + "projectFilePath": "C:\\Users\\ruben\\source\\repos\\2324-ap-rubenschoonbaert\\Doolhof\\Logic\\Logic.csproj", + "expectedPackageFiles": [], + "logs": [] +} \ No newline at end of file