Este é um jogo de tabuleiro que consiste em mover um certo bloco- chamado de bloco principal - de uma posição para a outra (neste caso, mover para a
extremidade direita). O tabuleiro - que, junto com os blocos do mesmo, é definido pelo jogador - é preenchido com blocos, de vários tamanhos, que são posicionados de forma que impeçam ou não a
movimentação do bloco principal.
O jogo tem como objetivo, mover o bloco principal para a extremidade direita com o menor número de movimentações de blocos possível.
Tudo que o jogador deve fazer é criar, a partir de um arquivo fonte, o tabuleiro e os blocos. Depois de criado o programa trata de procurar a melhor solução para o problema.
A entrada de dados correspondente a um quebra-cabeça será sempre realizada através de um arquivo ascii, cujo nome será fornecido através de argumentos de linha de comando.
O arquivo de entrada e um arquivo de texto com a primeira linha indicando o tamanho do tabuleiro, a segunda com o bloco principal e as outras com os outros blocos a serem inseridos no tabuleiro.
O primeiro valor da primeira linah indica o numero de linhas do tabuleiro e o segundo valor indica o numero de colunas do mesmo.
A forma de entrada dos blocos será:
- O primeiro inteiro indica a linha inicial de posicionamento do bloco.
- O segundo inteiro indica a coluna inicial de posicionamento do bloco.
- O terceiro inteiro indica a largura do bloco em colunas.
- O quarto inteiro indica a altura do bloco em linhas.
Um arquivo de entrada de exemplo esta incluso no pacote para download logo abaixo.
Para compilar digite: g++ -Wall sbpuzzle -o sbpuzzle
E para executar: ./sbpuzzle <entrada.txt
O trabalho foi desenvolvido em C++ com a utilização de classes e algumas estruturas de dados. Foi necessario uma grande quantidade de formulas matematicas para
movimentacoes dos blocos (internamente definidos como strings). O trabalho ainda esta em fase de desenvolvimento. Mas um arquivo com tudo que ja foi feito ate aqui esta
disponivel logo abaixo.