mwnesweeper (until Commit #87) is my NEA project for A level Computer Science. I submitted solver.py & minesweeper.py as my technical solution, with prototype.py, rref_maker.py & simple_solver.py in the appendix.
I also created a project report detailing my process from coming up with the idea, to designing how I would implement, to different levels of testing, and an evaluation. The last point is why this README is being updated - I am definitely going to continue this project.
- 4 game modes (Easy, Medium, Hard, Simple
- Immunity granting feature: does your board require a guess? Simply press the "Guess" button and if it really does, your next click (if it's on a mine) does nothing! How cool! On the flip side, if there is a move, you get 5 seconds added on to your total time. What a shame (not).
- Dark mode (I will address this later)
- Keyboard controls (hover on a cell and press E to click, R to flag)
- Stylish app icon (Again, addressing this later)
- All features of typical Minesweeper you know and love
The AQA NEA is marked in five parts (Analysis, Design, Implementation, Testing, Evaluation) and contributes to 20% of the final grade for A level computer science. More info can be found here.
- Analysis: 8/8
- Design: 10/12
- Implementation: 36/42
- Completeness: 14/15
- Skills used: 22/27
- Testing: 7/8
- Evaluation: 4/4
- Total: 66/75 (A for AQA grade boundaries in 2024)
I would have got a higher mark for skills used if I managed to complete the RREF algorithm in solver.py manually. The rest was just general "we need something to differentiate projects that did a lot of work". As of present my marks have not been moderated. As I am aiming for an A in CS I'm pretty happy with what I got.
I omitted a lot of what I wanted to feature as firstly, my expertise is not great. Secondly, I was under time constraints, and thirdly, I wasn't bothered to analyse and design and test and evaluate all this stuff. Or code it, for that matter...
Now I have finally (well, I will after writing this) submitted my project, I can now get started on some very cool features I randomly thought up about
- My own implementation of an RREF solver
- High scores
- Efficiency tracking
- Crap shoot detector
- Sound effects
- GET AWAY FROM TKINTER HORRIBLE GUI
- Probability (ehhh maybe)
- Noob mode (toggle time penalty, tutorial, text prompts, continuing a game)
- Improvement over time (charts, more data ew)
- Compile into an app so I don't have to keep running it through the terminal
- Time trial: solve the board in a specified (or computer generated, based on difficulty) time (even against a computer solver) time, otherwise you lose
- Adversarial Minesweeper: if you guess, you lose
- Conquer: solve the largest % of a large board as you can within a specified time
- Sparse clicks: if you fall below a certain efficiency, goodbye
- Sandbox: you can place mines, experiment & load into the normal game, or even share designs using a code
- Whatever I randomly next come up with
For now, I'm very very busy with A levels so won't do this stuff. It's basically my pet project now lol
Though the end goal, sometime in many many years, is to show this game to the wider community, and maybe even bundled with Sudoku... (That was a joke. I am not doing that. Ever ever ever)
I mean, Minesweeper and Sudoku are two sides of the same coin, after all...