Skip to content

Commit

Permalink
maze fix #2
Browse files Browse the repository at this point in the history
  • Loading branch information
ZacharyPatten committed May 16, 2023
1 parent 3105701 commit a251fc6
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 14 deletions.
20 changes: 13 additions & 7 deletions Projects/Maze/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ bool MoveRandom()
{
var stack = new Stack<Node>();
var invalidPath = new HashSet<(int Row, int Column)>();
Tile previousMove;
var previousMoves = new Stack<Tile>();

int CountNulls()
{
Expand Down Expand Up @@ -288,25 +288,29 @@ bool MoveRandom()
{
node.DownExplored = true;
maze[node.Row, node.Column] |= Tile.Down;
maze[move.Row, move.Column] |= previousMove = Tile.Up;
maze[move.Row, move.Column] |= Tile.Up;
previousMoves.Push(Tile.Up);
}
if (move.Row == node.Row - 1)
{
node.UpExplored = true;
maze[node.Row, node.Column] |= Tile.Up;
maze[move.Row, move.Column] |= previousMove = Tile.Down;
maze[move.Row, move.Column] |= Tile.Down;
previousMoves.Push(Tile.Down);
}
if (move.Column == node.Column - 1)
{
node.LeftExplored = true;
maze[node.Row, node.Column] |= Tile.Left;
maze[move.Row, move.Column] |= previousMove = Tile.Right;
maze[move.Row, move.Column] |= Tile.Right;
previousMoves.Push(Tile.Right);
}
if (move.Column == node.Column + 1)
{
node.RightExplored = true;
maze[node.Row, node.Column] |= Tile.Right;
maze[move.Row, move.Column] |= previousMove = Tile.Left;
maze[move.Row, move.Column] |= Tile.Left;
previousMoves.Push(Tile.Left);
}
stack.Push(new Node()
{
Expand All @@ -328,13 +332,15 @@ bool MoveRandom()
Column = nullStart.Value.Column,
});
invalidPath.Add((nullStart.Value.Row, nullStart.Value.Column));
previousMove = Tile.Null;
while (maze[stack.Peek().Row, stack.Peek().Column] == previousMove)
previousMoves.Clear();
previousMoves.Push(Tile.Null);
while (maze[stack.Peek().Row, stack.Peek().Column] == previousMoves.Peek())
{
if (!MoveRandom())
{
Node move = stack.Pop();
Node parent = stack.Peek();
previousMoves.Pop();
if (move.Row == parent.Row - 1)
{
maze[move.Row, move.Column] &= ~Tile.Down;
Expand Down
20 changes: 13 additions & 7 deletions Projects/Website/Games/Maze/Maze.cs
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ bool MoveRandom()
{
var stack = new Stack<Node>();
var invalidPath = new HashSet<(int Row, int Column)>();
Tile previousMove;
var previousMoves = new Stack<Tile>();

int CountNulls()
{
Expand Down Expand Up @@ -300,25 +300,29 @@ bool MoveRandom()
{
node.DownExplored = true;
maze[node.Row, node.Column] |= Tile.Down;
maze[move.Row, move.Column] |= previousMove = Tile.Up;
maze[move.Row, move.Column] |= Tile.Up;
previousMoves.Push(Tile.Up);
}
if (move.Row == node.Row - 1)
{
node.UpExplored = true;
maze[node.Row, node.Column] |= Tile.Up;
maze[move.Row, move.Column] |= previousMove = Tile.Down;
maze[move.Row, move.Column] |= Tile.Down;
previousMoves.Push(Tile.Down);
}
if (move.Column == node.Column - 1)
{
node.LeftExplored = true;
maze[node.Row, node.Column] |= Tile.Left;
maze[move.Row, move.Column] |= previousMove = Tile.Right;
maze[move.Row, move.Column] |= Tile.Right;
previousMoves.Push(Tile.Right);
}
if (move.Column == node.Column + 1)
{
node.RightExplored = true;
maze[node.Row, node.Column] |= Tile.Right;
maze[move.Row, move.Column] |= previousMove = Tile.Left;
maze[move.Row, move.Column] |= Tile.Left;
previousMoves.Push(Tile.Left);
}
stack.Push(new Node()
{
Expand All @@ -340,13 +344,15 @@ bool MoveRandom()
Column = nullStart.Value.Column,
});
invalidPath.Add((nullStart.Value.Row, nullStart.Value.Column));
previousMove = Tile.Null;
while (maze[stack.Peek().Row, stack.Peek().Column] == previousMove)
previousMoves.Clear();
previousMoves.Push(Tile.Null);
while (maze[stack.Peek().Row, stack.Peek().Column] == previousMoves.Peek())
{
if (!MoveRandom())
{
Node move = stack.Pop();
Node parent = stack.Peek();
previousMoves.Pop();
if (move.Row == parent.Row - 1)
{
maze[move.Row, move.Column] &= ~Tile.Down;
Expand Down

0 comments on commit a251fc6

Please sign in to comment.