2.4 KiB
2.4 KiB
Positives:
- Speaks excellent English
- Obviously very familiar with Visual Studio, used short cuts like autocompleting property definitions
- Seems very calm and worked immediately, very straightforwardly
- Created well-defined methods on
Boardto facilitate various functions like "reveal box" and "flag box" - Able to talk through his work well, explaining as he went along
- Used a nested loop and
Math.MaxandMath.Minto reveal box around the revealed box - A user-facing thoughtful thing: he cleared the console at the top of each input loop
- Used
StringBuilderto render the board output, but decided against it later - Used string interpolation (newish C# capability) to render mine box content
- Excellent output message to user to give clear instructions on commands to input
- Showed familiarity with debugging
- Abstracted the PrintGrid functionality to a method to be able to call it multiple times
- Considered the user not knowing the array was 0-based
Concerns:
- Didn't appear to come super prepared with the solution in mind
- I'm not 100% certain he read the specification in detail, but relied on his memory of how minesweeper worked
- Very minor: used different terms for the same thing
bombFoundbutMineBox
Other comments:
- Created class for
MineBoxandBoard - Used multi-dimensional array of
MineBoxes inBoard - Used
Randomto set mines randomly around the board - Used a while loop in Program until
bool gameEndedwas reached - Used
Convert.ToInt32instead ofint.Parseto get coordinates from console input line - Ran into issues looping and redisplaying the board
Questions to ask:
- What could you do to take your game logic and render it any way you wanted to (console, HTML, graphical...)
Could do a virtual method on
Boardto allow clients to override it to render the board - Why did you choose to have Program.cs "own" the rendering of the board instead of Board?
- Could you have Board "own" the rendering without it knowing exactly what it's renderings (strings, icons, HTML elements, etc)?
- Explain yoru choice to use
Convert.Int32? - You loop over the entire board or parts of the board (nested loops) a couple of times. How could you abstract that logic while still using it for different purposes?
- Could you abstract the Game logic to untie it from the rendering and board?