This is a recreation of the Solitaire minigame from SHENZHEN I/O, made using DragonRuby.


  • There are three types of cards: numbered cards, dragon cards, and the flower card. Numbered cards and dragon cards come in three suits, distinguished by color.
  • You may move one or more numbered cards onto another numbered card in the lower decks, so long as the moved cards and the unmoved card satisfy the following rules:
    • A card cannot be stacked on a card of the same suit.
    • Cards must be stacked in consecutive decreasing order.
  • Dragon cards may not be placed on any other card, and no cards may be placed on a dragon card.
  • Any single card may be placed and retrieved from the three bank slots in the upper left.
  • When four dragon cards of the same suit are exposed, a button will light up. If you press this button, the four dragon cards will be discarded, at the cost of one bank slot.
  • Numbered cards will be automatically discarded to the three slots in the upper right when it is safe to do so, but you may manually discard a numbered card if you wish. 
  • As soon as it is exposed, the flower card is discarded to the upper middle slot.
  • A discard pile must only contain cards of a single suit, and must be in sequential ascending order.
  • Discard all cards to win the game!


  • Mouse - Move cards
  • Space - New game

Special thanks goes to the people in the DragonRuby Discord server for all their help!

StatusIn development
PlatformsWindows, macOS, Linux, HTML5
Rated 4.3 out of 5 stars
(3 total ratings)
GenreCard Game, Puzzle
Made, DragonRuby GTK
Tags2D, Casual, dragonruby, flat-shading, Remake, Retro, solitaire
Average sessionA few minutes
AccessibilityColor-blind friendly


Dragon Solitaire (Windows) 5 MB
Dragon Solitaire (Mac) 3 MB
Dragon Solitaire (Linux) 5 MB
Dragon Solitaire (Raspberry Pi) 5 MB

Development log


Log in with to leave a comment.

Great implementation of the game! The color contrast makes it very easy to read the board. And, of course, the game plays very smoothly.

In your implementation, the algorithm for automatically discarding numbered cards is a little too conservative. One example I encountered is a fresh game state with 1-green and 2-green exposed. The game should auto-discard 1-green and 2-green (instead of just the 1-green). The idea (as you might already know) is that there's no point in keeping the 2-green on the board because all 1s can be discarded.

I think the algorithm to handle this properly in all cases is quite tricky, and it's not really a problem at all if the player knows about this heuristic. In any case, I really enjoyed the game :)