# Roadmap These are real follow-ups I would make if I revisited this code. The repo keeps the labs as submitted, so none of these are applied. They are here for honesty about where the code is rough. ## Maze game - Several functions can fall off the end without returning a value. `goodDirection`, `pickAdjacent`, and `checkMaze` each return on the branches the program actually hits, but g++ warns that other paths reach the closing brace. Add explicit return values. - `srand(time(nullptr))` is called inside `Room::pick` and `Room::pickAdjacent`. Seeding once at the start of `main` is the right place, and reseeding from the same second's clock value hurts randomness. - In `Maze::move`, the `else` guards only the `cout`, while `return false` runs every time because of the brace layout. Wrap the two statements so the wall message and the early return belong together. - The generator never checks that the cheese is reachable from the start, so a random board can seal the cheese off. Add a connectivity check, or switch to carving passages so every room stays reachable. - The display lists wall coordinates instead of drawing a grid. Render an ASCII board so the layout is readable while playing. - `nextMove` and `createAdjacent` call `exit(0)` on unexpected input. Returning a quit sentinel and letting `main` decide would be cleaner. ## Collection class - `addNumber` and `removeNumber` release the old array with `delete` instead of `delete[]`. Use the array form to match `new[]`. - `removeNumber` allocates `size_ + 1` doubles when the result needs `size_ - 1`. Size the new array correctly. - `check` keeps scanning after it finds a match. Returning early would stop the loop sooner. Minor, since the collection holds no duplicates. ## Shared - Add a few automated checks. The CI workflow proves both projects compile, but it does not run them. Feeding scripted input and comparing output would catch regressions.