Skip to content

Commit ad222fa

Browse files
author
Mike Upton
committed
Fixed a bug where maze only cleared once
- The maze was being set to a reference of clearMaze - This meant that once cleared if you edited the maze you actually were editing clearMaze - Also added a maze generator function to simplify the code for
1 parent ccc19ba commit ad222fa

File tree

3 files changed

+48
-63
lines changed

3 files changed

+48
-63
lines changed

src/models/maze/initialState.ts

+35-61
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,39 @@
1-
import { Maze } from "./";
1+
import { Maze, MazeInfo } from "./";
22
import { SpaceTypes } from "../../components/Space/types";
33

4-
export const initialState: Maze = {
5-
mazeInfo: {
6-
0: [
7-
{ type: SpaceTypes.wall, visited: false, path: false },
8-
{ type: SpaceTypes.empty, visited: false, path: false },
9-
{ type: SpaceTypes.start, visited: false, path: false },
10-
{ type: SpaceTypes.wall, visited: false, path: false },
11-
{ type: SpaceTypes.wall, visited: false, path: false }
12-
],
13-
1: [
14-
{ type: SpaceTypes.wall, visited: false, path: false },
15-
{ type: SpaceTypes.wall, visited: false, path: false },
16-
{ type: SpaceTypes.wall, visited: false, path: false },
17-
{ type: SpaceTypes.wall, visited: false, path: false },
18-
{ type: SpaceTypes.empty, visited: false, path: false }
19-
],
20-
2: [
21-
{ type: SpaceTypes.wall, visited: false, path: false },
22-
{ type: SpaceTypes.wall, visited: false, path: false },
23-
{ type: SpaceTypes.wall, visited: false, path: false },
24-
{ type: SpaceTypes.wall, visited: false, path: false },
25-
{ type: SpaceTypes.wall, visited: false, path: false }
26-
],
27-
3: [
28-
{ type: SpaceTypes.wall, visited: false, path: false },
29-
{ type: SpaceTypes.wall, visited: false, path: false },
30-
{ type: SpaceTypes.end, visited: false, path: false },
31-
{ type: SpaceTypes.wall, visited: false, path: false },
32-
{ type: SpaceTypes.wall, visited: false, path: false }
33-
]
34-
},
35-
clearMaze: {
36-
0: [
37-
{ type: SpaceTypes.wall, visited: false, path: false },
38-
{ type: SpaceTypes.wall, visited: false, path: false },
39-
{ type: SpaceTypes.start, visited: false, path: false },
40-
{ type: SpaceTypes.wall, visited: false, path: false },
41-
{ type: SpaceTypes.wall, visited: false, path: false }
42-
],
43-
1: [
44-
{ type: SpaceTypes.wall, visited: false, path: false },
45-
{ type: SpaceTypes.wall, visited: false, path: false },
46-
{ type: SpaceTypes.wall, visited: false, path: false },
47-
{ type: SpaceTypes.wall, visited: false, path: false },
48-
{ type: SpaceTypes.wall, visited: false, path: false }
49-
],
50-
2: [
51-
{ type: SpaceTypes.wall, visited: false, path: false },
52-
{ type: SpaceTypes.wall, visited: false, path: false },
53-
{ type: SpaceTypes.wall, visited: false, path: false },
54-
{ type: SpaceTypes.wall, visited: false, path: false },
55-
{ type: SpaceTypes.wall, visited: false, path: false }
56-
],
57-
3: [
58-
{ type: SpaceTypes.wall, visited: false, path: false },
59-
{ type: SpaceTypes.wall, visited: false, path: false },
60-
{ type: SpaceTypes.end, visited: false, path: false },
61-
{ type: SpaceTypes.wall, visited: false, path: false },
62-
{ type: SpaceTypes.wall, visited: false, path: false }
63-
]
4+
export const generateMaze = (
5+
x: number,
6+
y: number,
7+
clear?: boolean
8+
): MazeInfo => {
9+
let maze: MazeInfo = {};
10+
for (let i = 0; i < x; i++) {
11+
maze[i] = [];
12+
for (let j = 0; j < y; j++) {
13+
if (i === 0 && j === 0 && !clear)
14+
maze[i].push({
15+
type: SpaceTypes.start,
16+
visited: false,
17+
path: false
18+
});
19+
else if (i === x - 1 && j === y - 1 && !clear)
20+
maze[i].push({
21+
type: SpaceTypes.end,
22+
visited: false,
23+
path: false
24+
});
25+
else
26+
maze[i].push({
27+
type: SpaceTypes.wall,
28+
visited: false,
29+
path: false
30+
});
31+
}
6432
}
33+
return maze;
34+
};
35+
36+
export const initialState: Maze = {
37+
mazeInfo: generateMaze(5, 5),
38+
clearMaze: generateMaze(5, 5, true)
6539
};

src/reducers/mazeReducer/mazeReducer.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { SpaceTypes } from "../../components/Space/types";
2-
import { initialState } from "../../models/maze/initialState";
2+
import { initialState, generateMaze } from "../../models/maze/initialState";
33
import { Maze, MazeInfo, Coord } from "../../models/maze/index";
44
import { CLEAR_GRID } from "../../actions/menuActions/menuActions";
55
import {
@@ -64,7 +64,11 @@ export const mazeReducer = (state = initialState, { type, payload }: any) => {
6464
case CLEAR_GRID:
6565
return {
6666
...state,
67-
mazeInfo: state.clearMaze
67+
mazeInfo: generateMaze(
68+
Object.keys(state.mazeInfo).length,
69+
state.mazeInfo[0].length,
70+
true
71+
)
6872
};
6973
case CHANGE_START:
7074
return {

yarn.lock

+7
Original file line numberDiff line numberDiff line change
@@ -1460,6 +1460,13 @@
14601460
"@types/prop-types" "*"
14611461
csstype "^2.2.0"
14621462

1463+
"@types/redux-mock-store@^1.0.2":
1464+
version "1.0.2"
1465+
resolved "https://registry.yarnpkg.com/@types/redux-mock-store/-/redux-mock-store-1.0.2.tgz#c27d5deadfb29d8514bdb0fc2cadae6feea1922d"
1466+
integrity sha512-6LBtAQBN34i7SI5X+Qs4zpTEZO1tTDZ6sZ9fzFjYwTl3nLQXaBtwYdoV44CzNnyKu438xJ1lSIYyw0YMvunESw==
1467+
dependencies:
1468+
redux "^4.0.5"
1469+
14631470
"@types/stack-utils@^1.0.1":
14641471
version "1.0.1"
14651472
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"

0 commit comments

Comments
 (0)