This is a version of minesweeper. You win by
isolating every mine, which is the same as
revealing all numbered spaces. There is no flag,
so you have to keep track of, or figure out,
what's revealed. The game ends if you win as
described above or you lose by selecting a mine.
I have playtested this and confirmed that the
game ends in a win by meeting the above criterion.
I also (not intentionally) confirmed you lose if
you select a mine. I did the latter far too many
times...
Things to note:
-I have the game in debug mode so that
instructions appear.
-There is no score. I don't think there's a
score in minesweeper. You either survive the mines
or die.
-I have not implemented flagging potential
locations of mines. You can technically play
without them, so I don't think you lose out on
any of the core gameplay.
-I'm not sure why, but when the game ends, some
of the mines don't show up and some of the
revealed numbers disappear.
-Because two displayed agents cannot occupy the
same space, navigating with the cursor over mines
or numbered squares may require pressing an arrow
key multiple times. (I tried to not display the
mines and then display them only when revealing
spaces, but the revealing algorithm didn't work
when I tried it like that. I promise I spent
hours trying to get it to work before settling on
this current iteration.)
-You can lose on the first move...
the mines can be hidden, so I have a janky
workaround. You might have to try moving the
cursor multiple times but at least now it actually
works. Next step, add flagging!!!!
if the cursor is over the mine. We now have to
not end the game until the user SELECTS the space
the mine is at. I hadn't realized that is_empty
only works if display is True? So I moved the
game.end() to the mine class.
Need to do:
-Populate 10 mines randomly
-Have the game end when a mine is selected (figure
out how to select something)
-Figure out an algorithm to reveal squares
-Figure out how to show numbers in revealed
squares
-Add flag functionality?