void Lexico::sigPalabra( void )
{
    setEstado( 0 );
    setPalabra( producirPalabra( cadena_ , & posicion) );
    analizar( palabra_ );
}
Exemple #2
0
/*Funcao de update logico do proprio jogo. E' executada em cada ciclo apos a checagem de colisao, antes
  do update logico das entidades do jogo.*/
void updateGameLogic(double deltaTime)
{
    int i, estadoInicial, posInicial, numVivos;
    Vetor v, p;

	/*Antes temos que criar os dois botes, sempre que der.*/
	while ( (2 - getNumBotesVivos()) > 0 ) 
	{
		/*Apenas criamos o vetor e setamos apenas 1 de suas coordenadas (a outra = 0). Assim esse valor que estamos setando
          sera igual ao modulo do vetor, que queremos que seja um numero especifico dependendo das configuracoes.
          Depois iremos atualizar (para variar) a direcao, e somente a direcao, da velocidade.*/
        v = VETORinit(getSpeed() + (getRandDouble()*10 ), 0);
		/*Inicializamos a posicao com um valor fora da tela, para que no teste a seguir nao haja nenhuma entidade para que possamos
		  criar uma.*/
		p = VETORinit(-30.0, -30.0);

        /*Agora escolhemos uma posicao aleatoria ao longo das bordas do oceano para criar o bote,
          e atualizamos a sua direcao para eles comecarem se mexendo para algum lado.*/
		while ( getEntityByPositionVector(p) != NULL || getX(p) < 0)
		{
			posInicial = rand()%4;
    	    estadoInicial = rand()%2;

	        if (posInicial == 0)
    	    {
    	    	setX(p, rand()%SCREEN_W);
				setY(p, 10);
    	        if (estadoInicial == 0)
					setEstado(7, v);
				else if (estadoInicial == 1)
					setEstado(5, v);
			}
			else if (posInicial == 1)
    	    {
				setX(p, 0);
				setY(p, rand()%SCREEN_H);
				if (estadoInicial == 0)
					setEstado(4, v);
				else if (estadoInicial == 1)
					setEstado(5, v);
			}
			else if (posInicial == 2)
    	    {
				setX(p, rand()%SCREEN_W);
				setY(p, SCREEN_H-1);
				if (estadoInicial == 0)
					setEstado(6, v);
				else if (estadoInicial == 1)
					setEstado(4, v);
			}
			else if (posInicial == 3)
    	    {
				setX(p, SCREEN_W-1);
				setY(p, rand()%SCREEN_H);
    	        if (estadoInicial == 0)
					setEstado(6, v);
				else if (estadoInicial == 1)
					setEstado(7, v);
    		}
		}
        /*Finalmente, criamos o bote.*/
        criaBote(p, v);
	}

    /*deltaTime em segundos, frequencia em ciclos por segundo (passageiros a serem criados por segundo).*/
    timeElapsed += deltaTime;
    if (timeElapsed >= 1)  /*Um segundo inteiro foi completado, criar passageiros...*/
    {
		numVivos = getNumPassageirosVivos();

        for (i=0; i<getFrequency() && numVivos < getMaxNumPassageiros(); i++)
        {
            /*Apenas criamos o vetor e setamos apenas 1 de suas coordenadas (a outra = 0). Assim esse valor que estamos setando
              sera igual ao modulo do vetor, que queremos que seja um numero especifico dependendo das configuracoes.
              Depois iremos atualizar (para variar) a direcao, e somente a direcao, da velocidade.*/
            v = VETORinit(getSpeed() + (getRandDouble()*2 - 1), 0);
			/*Inicializamos a posicao com um valor fora da tela, para que no teste a seguir nao haja nenhuma entidade para que possamos
			  criar uma.*/
			p = VETORinit(-30.0, -30.0);

            /*Agora escolhemos uma posicao aleatoria ao longo das bordas do oceano para criar o passageiro,
              e atualizamos a sua direcao para eles comecarem se mexendo ao centro do oceano.*/
			while ( getEntityByPositionVector(p) != NULL || getX(p) < 0)
			{
	            posInicial = rand()%4;
    	        estadoInicial = rand()%6;

	            if (posInicial == 0)
    	        {
    	            setX(p, rand()%SCREEN_W);
					setY(p, 10);
    	            if (estadoInicial <= 3)
    	                setEstado(1, v);
    	            else if (estadoInicial == 4)
    	                setEstado(7, v);
    	            else if (estadoInicial == 5)
    	                setEstado(5, v);
    	        }
    	        else if (posInicial == 1)
    	        {
					setX(p, 0);
    	            setY(p, rand()%SCREEN_H);
    	            if (estadoInicial <= 3)
    	                setEstado(2, v);
    	            else if (estadoInicial == 4)
    	                setEstado(4, v);
    	            else if (estadoInicial == 5)
    	                setEstado(5, v);
    	        }
    	        else if (posInicial == 2)
    	        {
    	            setX(p, rand()%SCREEN_W);
					setY(p, SCREEN_H-1);
    	            if (estadoInicial <= 3)
    	                setEstado(0, v);
    	            else if (estadoInicial == 4)
    	                setEstado(6, v);
    	            else if (estadoInicial == 5)
    	                setEstado(4, v);
    	        }
    	        else if (posInicial == 3)
    	        {
    	            setX(p, SCREEN_W-1);
					setY(p, rand()%SCREEN_H);
    	            if (estadoInicial <= 3)
    	                setEstado(3, v);
    	            else if (estadoInicial == 4)
    	                setEstado(6, v);
    	            else if (estadoInicial == 5)
    	                setEstado(7, v);
    			}
			}

            /*Finalmente, criamos o passageiro.*/
            criaPassageiro(p, v, rand()%60 + 40);

			numVivos++;
        }

        timeElapsed -= 1.0;
    }
}
/*
** ===================================================================
**     Method      :  Adq_Stop 
**    Description  :  Detiene la adquisicion
** ===================================================================
*/
void Registrador::stop(){
  if( getEstado() == SI ){
    setEstado(NO);
  }
}