Designing Blindfold Solitaire

After we had hundreds of people downloaded Blindfold Blackjack for their iPhone, I started receiving emails for Blindfold Solitaire games.  People asked for the standard solitaire, known as Klondike 3 or Patience, along with Free Cell, the solitaire game that Microsoft included with Windows, and Spider, one of the most popular solitaire app games.

klondike1

I started researching varieties of Solitaire, and discovered over 50 varieties of the game. To create each variety could take months.  If you are curious, check out the Wikipedia page on Solitaire.  Most of the Solitaire games have common elements: a deck where you draw cards from, a foundation where you build cards from an ace to a king, and a tableau where you move cards from one pile to another.  Some have open piles where a card can stay temporarily until it is moved onto another tableau pile or a foundation pile.

The easiest way to build a game is to find source code that another programmer created, and then use that as a guide to creating the game for the iPhone.  That helps me get a full understanding of every game rule, and how the game proceeds.  For most games, I was able to find about five or ten “open source” games on the Internet, at sites such as GitHub or SourceForge.  Many programmers like to share their code with other programmers, as a way to help the programming community or as a way to get people to look at what a great job they did on building a game.

In the case of Solitaire, I found the source code for dozens of programs, written in languages such as Visual Basic, Python, C++, JavaScript and Java.  When you create a program for an iPhone, you can only use the language called Objective C.  It is slightly similar to C++, but different enough that you cannot take someone’s program written in C++ and make it work on an iPhone.  In all of these cases, you have to translate from one language to another.

Translating a computer language is similar to translating from English to Spanish.  The overall structure of the language – the grammar – is the same, but the words are different and some of the rules of how things are stored a different.  Most software developers know about 4 or 5 computer languages, and are very fluent in about two.  It takes a few months of using a computer language on a specific type of computer to become very efficient at it, and you go through the same learning curve in programming in a new language (and new computer system) that you would when you learn a foreign language.

Most of the Solitaire games that I found were designed to be played on a Windows computer with a mouse.  When I am evaluating the source code of a game that I found, not only do I have to consider how the program works, but I need to change the game from a visually oriented game with a mouse to a audio game with gestures.

When I met with a group of blind gamers, they emphasized how the gestures and layout of one of my games must be similar to another game.  Keeping the game play consistent across games would make my games easier to play, and not require the gamers to learn new gestures each time they get another game from me.

Before diving into building Solitaire, I worked with several blind gamers to come up with general rules.  They suggested the following:

  • swipe up and down to move within a pile
  • swipe left and right to move between piles
  • double tap to select a card to be moved, and start playing a beeping sound to tell you that the card (or cards) is about to be moved.
  • double tap again to deposit a card (or group of cards) somewhere
  • tap with 2 fingers to flip sequentially between the deck, the waste pile, the foundation and the tableau.
  • swipe down with 2 fingers to hear all of the cards in a pile.
  • swipe left with 2 fingers to hear the top card in all the piles of either the foundation or the tableau.
  • shake the phone to hear your status in the game, such as the number of cards left, or the top waste pile card.

This was enough to layout the game and start searching for which open source program I would use as the basis of Solitaire.