Ejemplo n.º 1
0
	DES_tpCondRet DES_RetomaUltimoJogoSalvo( void ) 
	{
		int i, j;
		int Linhas, Colunas, Dicas;
		int CondRet;

		FILE * ArquivoDesenho = fopen( NOME_JOGO_SALVO, "r" );
		if( ArquivoDesenho == NULL )
			return DES_CondRetPonteiroArquivoNulo;

		//Se existe uma estrutura desenho definida, destroi ela antes de criar outra
		if( pDesenho != NULL )
			DES_DestroiDesenho( );

		if( fscanf(ArquivoDesenho, "%d %d %d", &Linhas, &Colunas, &Dicas) != 3 )
			return DES_CondRetArquivoInvalido;

		//Verifica se a quantidade de linhas e de colunas são válidas
		if( Linhas < NUM_LINHAS_MINIMO || Colunas < NUM_COLUNAS_MINIMO ||
		    Linhas > NUM_LINHAS_MAXIMO || Colunas > NUM_COLUNAS_MAXIMO )
			return DES_CondRetTamanhoInvalido;

		//Aloca a estrutura desenho
		pDesenho = ( TpDesenho* ) malloc( sizeof( TpDesenho ) );

		//Falhou a alocação de memória
		if( pDesenho == NULL )
			return DES_CondRetFaltouMemoria;

		#ifdef _DEBUG
			CED_MarcarEspacoAtivo( pDesenho );
		#endif

		pDesenho->iLinhas  = Linhas;
		pDesenho->iColunas = Colunas;
		pDesenho->iDicas   = Dicas;

		//Chama o módulo de matriz e guarda o ponteiro na estrutura desenho
		pDesenho->pMatrizJogo = MAT_CriarMatriz( Linhas, Colunas 
		#ifdef _DEBUG
		 , 'c'
	    #endif
		 );
		if( pDesenho->pMatrizJogo == NULL )
			return DES_CondRetErroForaDoModuloDesenho;

		//Gera o esquema de forma aleatória
		PreencheMatrizUltimoJogo( ArquivoDesenho );

		CondRet = InicializaListas( );
		if( CondRet != DES_CondRetOk )
			return ( DES_tpCondRet ) CondRet;

		return DES_CondRetOk;
	}
Ejemplo n.º 2
0
	DES_tpCondRet DES_IniciaDesenho( int NumLinhas, int NumColunas )
	{
		int CondRet;

		//Se existe uma estrutura desenho definida, destroi ela antes de criar outra
		if( pDesenho != NULL )
			DES_DestroiDesenho( );

		//Verifica se a quantidade de linhas e de colunas são válidas
		if( NumLinhas < NUM_LINHAS_MINIMO || NumColunas < NUM_COLUNAS_MINIMO ||
		    NumLinhas > NUM_LINHAS_MAXIMO || NumColunas > NUM_COLUNAS_MAXIMO )
			return DES_CondRetTamanhoInvalido;

		//Aloca a estrutura desenho
		pDesenho = ( TpDesenho* ) malloc( sizeof( TpDesenho ) );

		//Falhou a alocação de memória
		if( pDesenho == NULL )
			return DES_CondRetFaltouMemoria;

		pDesenho->iLinhas  = NumLinhas;
		pDesenho->iColunas = NumColunas;
		pDesenho->iDicas   = NUM_MAX_DICAS; 

		#ifdef _DEBUG
			CED_MarcarEspacoAtivo( pDesenho );
		#endif

		//Chama o módulo de matriz e guarda o ponteiro na estrutura desenho
		pDesenho->pMatrizJogo = MAT_CriarMatriz( NumLinhas, NumColunas 
		#ifdef _DEBUG
		 , 'c'
		#endif
		 );
		if( pDesenho->pMatrizJogo == NULL )
			return DES_CondRetErroForaDoModuloDesenho;

		//Gera o esquema de forma aleatória
		PreencheAleatorioMatriz( );

		CondRet = InicializaListas( );

		if( CondRet != DES_CondRetOk )
			return ( DES_tpCondRet ) CondRet;

		return DES_CondRetOk;
	}
Ejemplo n.º 3
0
	DES_tpCondRet DES_IniciaDesenhoProjetado( FILE * ArquivoDesenho ) 
	{
		int Linhas, Colunas;
		int CondRet;

		//Se existe uma estrutura desenho definida, destroi ela antes de criar outra
		if( pDesenho != NULL )
			DES_DestroiDesenho( );

		if( ArquivoDesenho == NULL )
			return DES_CondRetPonteiroArquivoNulo;

		if( fscanf(ArquivoDesenho, "%d %d", &Linhas, &Colunas) != 2 )
			return DES_CondRetArquivoInvalido;

		//Verifica se a quantidade de linhas e de colunas são válidas
		if( Linhas < NUM_LINHAS_MINIMO || Colunas < NUM_COLUNAS_MINIMO ||
		    Linhas > NUM_LINHAS_MAXIMO || Colunas > NUM_COLUNAS_MAXIMO )
			return DES_CondRetTamanhoInvalido;

		//Aloca a estrutura desenho
		pDesenho = ( TpDesenho* ) malloc( sizeof( TpDesenho ) );

		//Falhou a alocação de memória
		if( pDesenho == NULL )
			return DES_CondRetFaltouMemoria;

		pDesenho->iLinhas  = Linhas;
		pDesenho->iColunas = Colunas;
		pDesenho->iDicas   = NUM_MAX_DICAS;

		//Chama o módulo de matriz e guarda o ponteiro na estrutura desenho
		pDesenho->pMatrizJogo = MAT_CriarMatriz( Linhas, Colunas );
		if( pDesenho->pMatrizJogo == NULL )
			return DES_CondRetErroForaDoModuloDesenho;

		//Gera o esquema de forma aleatória
		PreencheMatrizProjetada( ArquivoDesenho );

		CondRet = InicializaListas( );
		if( CondRet != DES_CondRetOk )
			return ( DES_tpCondRet ) CondRet;

		return DES_CondRetOk;
	}
Ejemplo n.º 4
0
	DES_tpCondRet DES_IniciaDesenhoVazio( int NumLinhas, int NumColunas ) 
	{
		int CondRet;

		//Se existe uma estrutura desenho definida, destroi ela antes de criar outra
		if( pDesenho != NULL )
			DES_DestroiDesenho( );

		//Verifica se a quantidade de linhas e de colunas são válidas
		if( NumLinhas < NUM_LINHAS_MINIMO || NumColunas < NUM_COLUNAS_MINIMO ||
		    NumLinhas > NUM_LINHAS_MAXIMO || NumColunas > NUM_COLUNAS_MAXIMO )
			return DES_CondRetTamanhoInvalido;

		//Aloca a estrutura desenho
		pDesenho = ( TpDesenho* ) malloc( sizeof( TpDesenho ) );

		//Falhou a alocação de memória
		if( pDesenho == NULL )
			return DES_CondRetFaltouMemoria;

		pDesenho->iLinhas  = NumLinhas;
		pDesenho->iColunas = NumColunas;
		pDesenho->iDicas   = 0;

		pDesenho->pMatrizJogo = MAT_CriarMatriz( NumLinhas, NumColunas );
		if( pDesenho->pMatrizJogo == NULL )
			return DES_CondRetErroForaDoModuloDesenho;

		//Preenche a matriz com células (0,0)
		PreencheMatrizZerada( );

		CondRet = InicializaListas( );
		if( CondRet != DES_CondRetOk )
			return ( DES_tpCondRet ) CondRet;

		return DES_CondRetOk;
	}
Ejemplo n.º 5
0
   TST_tpCondRet TST_EfetuarComando( char * ComandoTeste )
   {

      int  numLidos = -1, 
           indexMat = -1,
           dimMatriz = -1,
           CondRetEsperada = -1,
           direcao = -1 ;

	  char stringDada [ DIM_STR ] = {0};
	  char *stringObtida;

      LIS_tppLista listaAuxiliar ;     

      TST_tpCondRet CondRetObtido ;

      /* Testar MAT Criar Matriz */

         if ( strcmp( ComandoTeste , CRIAR_MAT_CMD ) == 0 )
         {

            numLidos = LER_LerParametros( "iii" ,
                               &indexMat, &dimMatriz, &CondRetEsperada ) ;
            if ( numLidos != 3 )
            {
               return TST_CondRetParm ;
            } /* if */

            CondRetObtido = MAT_CriarMatriz( &(vtMatrizes[ indexMat ]), dimMatriz ) ;

            return TST_CompararInt( CondRetEsperada , CondRetObtido ,
                     "Condicao de retorno errada ao criar matriz." ) ;

         } /* fim ativa: Testar MAT Criar Matriz */

      /* Testar MAT andar na matriz */

         else if ( strcmp( ComandoTeste , ANDAR_DIR_CMD ) == 0 )
         {

            numLidos = LER_LerParametros( "iii" ,
                               &indexMat, &direcao , &CondRetEsperada ) ;
            if ( numLidos != 3 )
            {
               return TST_CondRetParm ;
            } /* if */

            CondRetObtido = MAT_AndarCorrente( vtMatrizes[indexMat], (MAT_tpDirecao) direcao ) ;

            return TST_CompararInt( CondRetEsperada , CondRetObtido ,
                                    "Retorno errado ao percorrer a matriz." );

         } /* fim ativa: Testar MAT andar na matriz */

      /* Testar MAT atribuir lista a célula corrente */

         else if ( strcmp( ComandoTeste , ATRIBUIR_LIS_CMD ) == 0 )
         {
            numLidos = LER_LerParametros( "isi" ,
                              &indexMat, stringDada, &CondRetEsperada ) ;
            if ( numLidos != 3 )
            {
               return TST_CondRetParm ;
            } /* if */
			
			listaAuxiliar = criarListaAPartirDeString(stringDada);

            CondRetObtido = MAT_AtribuirValorCorrente( vtMatrizes[ indexMat ], listaAuxiliar ) ;
			
			return TST_CompararInt( CondRetEsperada , CondRetObtido ,
                                "Retorno errado ao inserir lista no elemento corrente." );
	     } /* fim ativa: Testar MAT atribuir lista a célula corrente */

      /* Testar MAT obter valor da célula corrente */  
         else if ( strcmp( ComandoTeste , OBTER_LIS_CMD ) == 0 )
         {
			int pEsp;
			numLidos = LER_LerParametros( "isii" ,
                              &indexMat, stringDada, &pEsp, &CondRetEsperada ) ;
            if ( numLidos != 4 )
            {
               return TST_CondRetParm ;
            } /* if */

            CondRetObtido = MAT_ObterValorCorrente( vtMatrizes[ indexMat ], &listaAuxiliar ) ;
			
			if( CondRetObtido != CondRetEsperada || CondRetObtido == MAT_CondRetPonteiroNulo ){
				return TST_CompararInt( CondRetEsperada , CondRetObtido ,
                                    "Retorno errado ao obter lista no elemento corrente." );
			}

			if ( pEsp == 0 )
            {
               return TST_CompararPonteiroNulo( 0 , listaAuxiliar ,
                         "Valor não deveria existir." ) ;
            } /* if */

			stringObtida = obterStringAPartirDeLista( listaAuxiliar );

			return TST_CompararString(stringDada, stringObtida, 
									"Representação em string da lista obtida diferente do esperado."); 
         } /* fim ativa: Testar MAT obeter valor da célula corrente */

      /* Testar MAT destruir matriz */  
         else if ( strcmp( ComandoTeste , DESTROI_CMD ) == 0 )
         {

            numLidos = LER_LerParametros( "ii" ,
                              &indexMat, &CondRetEsperada ) ;
            if ( numLidos != 2 )
            {
               return TST_CondRetParm ;
            } /* if */

            CondRetObtido = MAT_DestruirMatriz( vtMatrizes[ indexMat ] ) ;

            return TST_CompararInt( CondRetEsperada , CondRetObtido ,
                                    "Retorno errado ao destruir matriz" );

         } /* fim ativa: Testar MAT destruir matriz */

      /* Testar MAT esvaziar matriz */  
         else if ( strcmp( ComandoTeste , ESVAZIA_CMD ) == 0 )
         {

            numLidos = LER_LerParametros( "ii" ,
                              &indexMat, &CondRetEsperada ) ;
            if ( numLidos != 2 )
            {
               return TST_CondRetParm ;
            } /* if */

            CondRetObtido = MAT_EsvaziarMatriz( vtMatrizes[ indexMat ] ) ;

            return TST_CompararInt( CondRetEsperada , CondRetObtido ,
                                    "Retorno errado ao esvaziar matriz" );

         } /* fim ativa: MAT esvaziar matriz */

      return TST_CondRetNaoConhec ;

   } /* Fim função: TARV Efetuar operações de teste específicas para árvore */