Esempio n. 1
0
/**
Método  : Controlador (Construtor)
Objetivo: Inicia os valores dos anjos e demônios
**/
Controlador::Controlador(long limite)
{
	// Posição X inicial é fixa
   x = INICIO;  

   // Adquirindo a posição Y
   y = (rand() % 18) +3;
   if (y <= 12){ // Forçando a ter mais demônios do que anjos
	   y = (rand() % 18) + 3;
	   if (y == 12) // No lugar da linha do meio (onde fica o indicador de placar) invoca na ultima linha
		   y = 21;
   }

   if (y < 12){ // Anjos são um pouco mais lentos e brancos
	   cor = FOREGROUND_WHITE;
	   passo = rand() % PASSO + 2;
   }
   else{ // Demônios são um pouco mais rápidos e vermelhos
	   cor = FOREGROUND_RED;
	   passo = rand() % PASSO + 3;
   }

   // O limite da tela onde os anjos e demonios devem colidir com as naves ou desaparecer (Sempre 0)
   this->limite = limite;

   desenhar();
}
Esempio n. 2
0
void animate(int val){

	if(!paused){
		desenhar(val);
		val -= 3;
	}

	teclado();

	glutTimerFunc(animationTime,animate,val);

}
Esempio n. 3
0
/**
Método  : mover
Objetivo: Move (ou não) o anjo/demonio na tela
**/
bool Controlador::mover()
{
    if (x-passo < limite)
      return false;

	apagar();

    x -= passo;

	desenhar();

    return true;
}
Esempio n. 4
0
int main(int argc, char* argv[])
{
	if(init()== false)
		clean_up();
	load_files();

	ClientTcp sock;
	sock.init();
	GameState gState = GameState();

	//variáveis para controle do tempo
	float deltaTime = 0.0;
    float thisTime = 0;
    float lastTime = 0;

	//chars para mostrar os pontos na tela
	char *msg ="Pontos: ";
	char *ponto="";

	//char para enviar mensagem pro servidor
	char buffer[512];

	char* ip=new CHAR();
	char* porta=new CHAR();
	bool quit = false;
	char bufferrecv[512];

	while (quit == false)
	{
		thisTime = SDL_GetTicks();
		deltaTime = (float)(thisTime - lastTime) / 1000;
		lastTime = thisTime;

		//controle para sair do jogo
		while( SDL_PollEvent( &event ) )
        {
            if( event.type == SDL_QUIT )
            {
                quit = true;
            } 
			if( event.type == SDL_KEYDOWN )
			{
				switch( event.key.keysym.sym )
				{
				case SDLK_ESCAPE:
						quit=true;
						break;
				}
			}
		}
		
		//loop principal
		switch (estadoAtual)
		{
		//menu do jogo
		case menu:
			message = TTF_RenderText_Solid( font, "Conecte pela linha de comando", textColor );
			desenhar(w/2-message->w/2,h/2-message->h/2,message,screen);
			SDL_Flip(screen);
			//recebe variáveis para conexão
			// Descomentar para ser possível digitar o ip e a porta
			/*printf("Digite o ip: \n");
			std::cin>> ip;
			printf("Digite a porta: \n");
			std::cin>> porta;*/
			// sock.criaSock(ip,porta);
			sock.criaSock("127.0.0.1", "2222");
			if(sock.recebeMsg(bufferrecv, sizeof(bufferrecv), gState) == 1)
			{
				estadoAtual = jogando;
				printf("Conexao feita jogo inicio \n");
				//sock.nBlock();
			}
			break;

		//loop  do jogo
		case jogando:
			/*message = TTF_RenderText_Solid( font, msg, textColor );
			desenhar(30,20,message,screen);
			desenhar(w-message->w-50,20,message,screen);
			message = TTF_RenderText_Solid( font, itoa(j1.ponto,ponto,10), textColor );
			desenhar(140,20,message,screen);
			message = TTF_RenderText_Solid( font, itoa(j2.ponto,ponto,10), textColor );
			desenhar(w-message->w-30,20,message,screen);*/
			if( event.type == SDL_KEYDOWN )
			{
				/*switch( event.key.keysym.sym )
				{
				case SDLK_UP:
					sprintf(buffer,"%f;%d;%s;",deltaTime, 200,"up");
					sock.mandaMsg(buffer);
					break;
				case SDLK_DOWN:
					sprintf(buffer,"%f;%d;%s;",deltaTime, 200,"down");
					sock.mandaMsg(buffer);
					break;
				}*/
				if(event.key.keysym.sym == SDLK_UP)
				{
					sprintf(buffer,"%f;%d;%s;",deltaTime, 200,"up");
					sock.mandaMsg(buffer);
				}else if(event.key.keysym.sym == SDLK_DOWN){
					sprintf(buffer,"%f;%d;%s;",deltaTime, 200,"down");
					sock.mandaMsg(buffer);
				}

			}
			sock.recebeMsg(bufferrecv, sizeof(bufferrecv), gState);
			desenhar(gState.j1->posP.x, gState.j1->posP.y, tileP, screen);
			desenhar(gState.j2->posP.x, gState.j2->posP.y, tileP, screen);
			desenhar(gState.bola->posB.x, gState.bola->posB.y, tileB, screen);
			break;

		//fim do jogo
		case fim:
			if(gState.j1->ponto == 10)
			{
				message = TTF_RenderText_Solid( font, "You Win!!", textColor );
				desenhar(w/2-message->w/2,h/2,message,screen);
			}else
				message = TTF_RenderText_Solid( font, "Game Over", textColor );
				desenhar(w/2-message->w/2,h/2,message,screen);
			break;
		}
		SDL_Flip(screen);
		SDL_FillRect(screen,0,0);
		
		//verificação de frames
		if(thisTime < 1000 / FRAMES_PER_SECOND )
		{
			SDL_Delay( ( 1000 / FRAMES_PER_SECOND ) - thisTime );
		}
	}
	clean_up();
	return 0;
}
Esempio n. 5
0
bool TexturaBase::desenhar(const Quad& retangulo, int x, int y, float rot, const Vetor2D ancora, const Vetor2D& escala, Cor cor, EnumInverterDesenho inverter)
{
	return desenhar(retangulo, x, y, rot, ancora.x, ancora.y, escala.x, escala.y, cor, inverter);
}
Esempio n. 6
0
bool TexturaBase::desenhar(int x, int y, float rot, float ancora_x, float ancora_y, float escala_x, float escala_y, Cor cor, EnumInverterDesenho inverter)
{
	Quad q(0, 0, largura, altura);
	return desenhar(q, x, y, rot, ancora_x, ancora_y, escala_x, escala_y, cor, inverter);
}