<?php
/*    
    eigT - Quebra-Cabecas de pecas deslizantes de 8 pecas.
    Copyright (C) 2004  tDs - tds-@brturbo.com
   
    Este programa � software livre; voc� pode redistribu�-lo e/ou
    modific�-lo sob os termos da Licen�a P�blica Geral GNU, conforme
    publicada pela Free Software Foundation; tanto a vers�o 2 da
    Licen�a como (a seu crit�rio) qualquer vers�o mais nova.

    Este programa � distribu�do na expectativa de ser �til, mas SEM
    QUALQUER GARANTIA; sem mesmo a garantia impl�cita de
    COMERCIALIZA��O ou de ADEQUA��O A QUALQUER PROP�SITO EM
    PARTICULAR. Consulte a Licen�a P�blica Geral GNU para obter mais
    detalhes.
 
    Voc� deve ter recebido uma c�pia da Licen�a P�blica Geral GNU
    junto com este programa; se n�o, escreva para a Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307, USA.

   +------------------------------------------------------------+
   + Inicializacao do Jogo                                      +
   +------------------------------------------------------------+
   + file: index.php                                            +
   +------------------------------------------------------------+
   + Arquivo que deve ser executado para inicializacao do jogo. +
   +------------------------------------------------------------+
*/

/*
    Jogo ainda em desenvolvimento, sera utilizada para desenvolvimento
de algoritimos de busca para resolucao de problemas do tipo quebra-cabecas 
de pecas deslizante, parecido com a imagem abaixo:
         __________________          __________________
        ||''''||''''||''''||        ||''''||''''||''''||
        || 7  ||  5 ||  6 ||        || 1  ||  2 ||  3 ||
        ||____||____||____||        ||____||____||____||
        ||''''|      |''''||        ||''''||''''||''''||
        || 3  |      |  2 ||        || 4  ||  5 ||  6 ||
        ||____|      |____||        ||____||____||____||
        ||''''||''''||''''||        ||''''||''''|      |
        || 4  ||  1 ||  8 ||        || 7  ||  8 |      |
        ||____||____||____||        ||____||____|      |
        """"""""""""""""""""        """"""""""""""""""""
        Fig. 01: Quebra-cabecas     Fig. 02: Quebra-cabecas
        antes de ser resolvido      apos ser resolvido

    O jogo esta funcionando e com suporte a network. Basta agora desenvolver
algoritimos que resolvam o problema, da melhor forma possivel (completo e otimo) :)

    Para jogar, basta apertar o numero da peca que deseja mover, seguido por <enter>.
Para sair, digite 's'.
*/

    
    /* arquivo de configuracao e include de mais alguns arquivos */
    require_once 'cfg.inc.php';
    
    
    
    
/*
    inicializacao do jogo:
    - Limpa a tela e posiciona cursor na posicao 0,0. A maior parte dos
    graficos e strings animadas foram feitos com auxilio da classe
    cleeasy;
    - Chama inicializacao de variaveis globais (sessions), que seram utilizadas
    durante o jogo e gera posicao inicial das pecas no tabuleiro;
    - Desenha o tabuleiro, exibindo a posicao atual de cada peca
*/
    cleeasy::limpar();
    eigt::inicio ();
    grafico::exibir_posicoes ();
    grafico::about ('amarelo');




/* fica no loop ate que termine o jogo ou selecione a opcao sair */
while (1) {
    /* verifica se o objetivo foi atingido: informa e sai do jogo caso positivo*/
    if (eigt::objetivo ()) {
        grafico::exibir_posicoes ();
        sleep (1);
        grafico::finalizar_eigt ();
        cleeasy::goto (23, 0);
        cleeasy::cores ('branco');
        cleeasy::sair();
    }
    
    /* opcoes de jogo */    
    switch (EIG_MODO) {
        case (1):/* configurado para alguem jogar */
            $mover_para = eigt::ler_jogada (); //le a jogada
            eigt::inicia_tempo ();             //inicia contagem de tempo, se necessario
            eigt::mover($mover_para);          // movimenta para o local informado
            grafico::exibir_posicoes ();       //redesenha as posicoes
            break;
        
        
        case (4):/* modo teste, desenvolvimento/debug */
            $mover_para = eigt::ler_jogada (); //le a jogada
            eigt::inicia_tempo ();             //inicia contagem de tempo, se necessario
            eigt::mover ($mover_para);         // movimenta para o local informado
            grafico::exibir_posicoes ();       //redesenha as posicoes
            break;
        
        
        default:
            break;
    }
    
    
    /*
        caso nao tenha terminado o jogo, informa quantos movimentos
        foram feitos e retorna para o inicio do loop
    */
    if (EIG_MODO != 2) {
        grafico::informacoes ();
        cleeasy::goto (23, 2);
    }
}
?>