void Lexico::sigPalabra( void ) { setEstado( 0 ); setPalabra( producirPalabra( cadena_ , & posicion) ); analizar( palabra_ ); }
/*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); } }