If you know this game:
1) Maybe you have experienced moments when it is simply impossible to know where a mine is. For such cases I added to my version "1 of 2" function where you mark 2 squares and if there is 1 bomb in those 2 squares, the right one is marked and other one showed. The cost is a small time penalty.
2) "Bet" function: you can bet on 1 field which is surrounded by unexplored fields and at the end of the game those fields are evaluated. If there was a bomb, you receive a time bonus. If there wasn’t, you get a time penalty.
What I'm proud of about this project: Mainly bringing this project to its successful end. It‘s fun to play and it removes the frustration from discovering the whole field and then being blown up on last 2 squares :P. Coding-wise I'm proud of creating a working model which is very flexible and solid. Inner system of handling playing field allows you to edit custom "maps" to save and load them. I'm also proud of bomb filling algorithm. I'm not a mathematical genius, therefore it was a challenge to create an algorithm which fills a custom sized field with a custom number of bombs in a random manner.
Known bugs: I did my best in optimization, but when the custom field is set to too big, the game crashes (f.ex. 50x50 field with 300 bombs in it). It‘s a bug on the graphics side, when the app times out during field creation phase and crashes.
What I'm proud of: classes designed for this app are not tailored only for this game, but for any card game and they offer many ways to deal with cards and card deck designs. Each Deck contains List of card classes and those cards are individual objects which just change deck and position. That means, with classes used in this app it is possible to easily set any kind of card game, The user of those classes just needs to program the game logic. The movement of cards and the visual interpretation of cards in general are handled by classes (Card Deck and Card). Class Card itself is descendant of Item class (of my design), which handles this visual interpretation and movement, offers rotation and allows more ways to manage moving objects.
What could be done better: speed and rendering of cards and movement. This is something I want to look into soon. Fortunately, classes used here take into account various ways of manifesting images, so it's easy to change the rendering to a different way.