XFreecell

Este é foi meu primeiro projeto em que utilizei das bibliotecas GTK+ e GLib, para o sistema XWindow de janelas do Linux. O meu objetivo quando comecei a fazer esse jogo era didático, um exercício-programa pedido por um professor. Aproveitei-me disso para aprender um pouco de C++. O programa se utiliza dos mais avançados algoritmos de tratamento de várias pilhas simultaneamente, para economizar o máximo de memória e processamento possível. Esses algoritmos podem ser encontrados no livro do Knuth, vol. I, páginas 245 e 246.
No início o jogo se utilizava de chamadas diretas para as bibliotecas do X (uma coisa não muito agadável de se programar). Mas depois que descobri as bibliotecas GTK e GDK, comecei a alterá-lo, mesmo depois de já tê-lo entregue como exercício. Eu queria um jogo de freecell para Linux (pois não existia nenhum jogo descente pra essa plataforma), e então comecei a implementar vários recursos, até chegar ao que é hoje.

Você pode encontrá-lo para download aqui.

Como fazer funcinar:

  1. Primeiro faça o download do pacote com o fonte do programa. Você precisará da versão 1.1 ou superior do GTK+/GDK para conseguir compilar e executar o programa de maneira confiável.
  2. Após isso, digite: make strip
  3. Agora é só rodar o programa: freecell
Como utilizar:
Ao rodar o programa, você encontrará um menu com várias opções. Você pode começar um novo jogo, recomeçar um jogo em andamento ou encerrar o programa.
Como jogar:
  1. O jogo é jogado com um baralho (52 cartas). O objetivo do jogo é mover todas as cartas das pilhas de jogo para as pilhas de saída usando quatro posições auxiliares (freecells) para guardar temporariamente uma carta.
  2. Existem quatro pilhas de saída, uma para cada naipe. As cartas nas pilhas de saída devem estar em ordem (ás, dois, três, etc).
  3. Acredita-se, embora nunca tenha sido provado, que todo jogo pode ser vencido. A área de jogo do FreeCell consiste de quatro pilhas de saída, quatro posições auxiliares e o baralho, que é distribuído em oito pilhas de jogo no início do jogo, com todas as cartas abertas.
  4. As cartas podem ser movidas para três lugares:
  1. O jogo termina ou quando todas as cartas foram movidas para as pilhas de saída ou quando não há movimento que permita mais alguma carta ser movida para uma das pilhas de saída.


Abaixo sequem as características do Freecell:

v1.1 (14/07/1999 - stable):

v1.0 (31/01/1999): v0.01 (02/09/1998):
  • Utiliza as bibliotecas XLib diretamente no código fonte.
  • Utiliza o algoritmo de tratamento de múltiplas pilhas do livro do Knuth, vol. I, páginas 245 e 246.
  • Manda as cartas desnecessárias, para o jogador, para as pilhas de saída.
  • Verifica se não existem mais jogadas possíveis, e verifica também se o jogador venceu.
  • Permite inicializar um novo jogo, ou recomeçar um jogo em andamento.