コード例 #1
0
ファイル: Source.cpp プロジェクト: aamlima/redesemultiplayer
int main(int ac, char **av)
{
	srand((unsigned)time(NULL));
	WSAData wsaData;
	WSAStartup(MAKEWORD(2, 2), &wsaData);
	sockaddr_in meuEndereco;
	meuEndereco.sin_addr.s_addr = INADDR_ANY;
	meuEndereco.sin_family = AF_INET;
	meuEndereco.sin_port = htons(9000 + (rand()%1000));

	SOCKET meuSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

	bind(meuSocket, (sockaddr*)&meuEndereco, sizeof(meuEndereco));

	sockaddr_in destinatario;
	destinatario.sin_addr.s_addr = inet_addr("10.96.26.85");
	destinatario.sin_family = AF_INET;
	destinatario.sin_port = htons(8888);
	sockaddr_in enderecoRemetente;
	int enderecoRemetenteTam = sizeof(enderecoRemetente);

	int comando = 0;
	int cliente;
	int clientes = 0;
	int x[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
	int y[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

	sendto(meuSocket, (char*)&comando, sizeof(int), NULL, (sockaddr*)&destinatario, sizeof(destinatario));
	int r = recvfrom(meuSocket, (char*)&cliente, sizeof(int), NULL, (sockaddr*)&enderecoRemetente, &enderecoRemetenteTam);

	C2D2_Inicia(800, 600, C2D2_JANELA, C2D2_DESENHO_OPENGL, "Amostragem");
	
	C2D2_Botao *teclado;
	teclado = C2D2_PegaTeclas();
	C2D2_Mouse *mouse;
	mouse = C2D2_PegaMouse();

	C2D2_TrocaCorLimpezaTela(0, 120, 0);

	unsigned int cursorSprite;
	cursorSprite  = C2D2_CarregaSpriteSet("cursor.png", 25, 25);
	unsigned long proximaAtualizacaoFrame = C2D2_TempoSistema() + 100;



	while (!teclado[C2D2_ESC].pressionado)
	{
	
		if (proximaAtualizacaoFrame < C2D2_TempoSistema())
		{
			proximaAtualizacaoFrame = C2D2_TempoSistema() + 100;
			comando = 1;
			sendto(meuSocket, (char*)&comando, sizeof(int), NULL, (sockaddr*)&destinatario, sizeof(destinatario));
			sendto(meuSocket, (char*)&cliente, sizeof(int), NULL, (sockaddr*)&destinatario, sizeof(destinatario));
			sendto(meuSocket, (char*)&mouse->x, sizeof(int), NULL, (sockaddr*)&destinatario, sizeof(destinatario));
			sendto(meuSocket, (char*)&mouse->y, sizeof(int), NULL, (sockaddr*)&destinatario, sizeof(destinatario));
			comando = 2;
			sendto(meuSocket, (char*)&comando, sizeof(int), NULL, (sockaddr*)&destinatario, sizeof(destinatario));
			recvfrom(meuSocket, (char*)&clientes, sizeof(int), NULL, (sockaddr*)&enderecoRemetente, &enderecoRemetenteTam);
			for (int i = 0; i < clientes; i++){
				recvfrom(meuSocket, (char*)&x[i], sizeof(int), NULL, (sockaddr*)&enderecoRemetente, &enderecoRemetenteTam);
				recvfrom(meuSocket, (char*)&y[i], sizeof(int), NULL, (sockaddr*)&enderecoRemetente, &enderecoRemetenteTam);
			}

		}

		C2D2_LimpaTela();
		C2D2_DesenhaSprite(cursorSprite,
						   0, mouse->x, mouse->y);

		for (int i = 0; i < clientes; i++){
			if (i+1 == cliente) continue;
			C2D2_DesenhaSprite(cursorSprite,
				0, x[i], y[i]);
		}
		
		C2D2_Sincroniza(C2D2_FPS_PADRAO);		
	}

	C2D2_RemoveSpriteSet(cursorSprite);

	C2D2_Encerra();

	closesocket(meuSocket);
	WSACleanup();
	return 0;
}
コード例 #2
0
ファイル: Nave.cpp プロジェクト: pfrankster/shutar
void Nave_ProcessaControle(Ator *a)
{
	int VTIRO = 3;
	int tiroType = 1;

	static Evento ev;


	C2D2_Botao *teclado = C2D2_PegaTeclas();
	C2D2_Mouse *mouse = C2D2_PegaMouse();

	
	if (teclado[C2D2_1].pressionado)
	{
		tiroType = 1; //substituir
		VTIRO = 6; //substituir 
	}
	if (teclado[C2D2_2].pressionado)
	{
		tiroType = 2;
		VTIRO = 12;
	}
	if (teclado[C2D2_3].pressionado)
	{
		tiroType = 3;
		VTIRO = 16;
	}
	if (teclado[C2D2_4].pressionado)
	{
		tiroType = 4;
		VTIRO = 30;
	}


	if (teclado[C2D2_ESPACO].ativo)
	{
		if (a->aux_int[3] > 100 )
		{
			ev.tipoEvento = EVT_PRESSIONOU_BOTAO1;
			ATOR_EnviaEvento(a, &ev);
		}
		else{
			ev.tipoEvento = EVT_LIBEROU_BOTAO1;
			ATOR_EnviaEvento(a, &ev);

		}

	}

	if (teclado[C2D2_ESPACO].liberado)
	{
		ev.tipoEvento = EVT_LIBEROU_BOTAO1;
		ATOR_EnviaEvento(a, &ev);
	}



	//GERA TIRO 
	if (mouse->botoes[0].pressionado)
	{
		if (a->aux_int[3] > 200)
		{
			ev.tipoEvento = EVT_PRESSIONOU_BOTAO3;
			ATOR_EnviaEvento(a, &ev);
		}
	}



	//GERA BOMBA
	//if (mouse->botoes[1].pressionado)
		if (teclado[C2D2_B].pressionado)
		{
		if (a->aux_int[3] > 200)
		{
			ev.tipoEvento = EVT_PRESSIONOU_BOTAO4;
			ATOR_EnviaEvento(a, &ev);
		}
	}


	/*freio nave */
	if (mouse->botoes[1].pressionado)
	//if (teclado[C2D2_LSHIFT].pressionado)


	{
		ev.tipoEvento = EVT_PRESSIONOU_BOTAO2;
		ATOR_EnviaEvento(a, &ev);

	}

	if (mouse->botoes[1].liberado)
	//if (teclado[C2D2_LSHIFT].liberado)
	{
		ev.tipoEvento = EVT_LIBEROU_BOTAO2;
		ATOR_EnviaEvento(a, &ev);
		
	}



	// Manda a posição do mouse
	int x1 = 0;
	int y1 = 0;
	C2D2M_PosicaoXY(1, &x1, &y1);
	ev.tipoEvento = EVT_POSICAO;
	ev.x = x1 + mouse->x + 12;
	ev.y = y1 + mouse->y + 12;
	ATOR_EnviaEvento(a, &ev);



}
コード例 #3
0
int main(int args, char **argc){
	//inicializações essenciais
	C2D2_Inicia(400, 400, C2D2_JANELA, C2D2_DESENHO_OPENGL, "Pong");	//cria a janela
	CA2_Inicia();
	C2D2_Botao* teclado = C2D2_PegaTeclas();		//possibilita poder reconhecer as teclas do teclado
	C2D2_Mouse* mouse = C2D2_PegaMouse();			//possibilita poder reconhecer os botoes do mouse

	unsigned int bola = C2D2_CarregaSpriteSet("Assets/ball.png", 63, 63);		//carrega a imagem da bola
	int xBola = 100;			//inicializa a posicao de x
	int yBola = 200;			//inicializa a posicao de y
	int speed = 1;				//define a velocidade incial da bola
	int direcaoX = 1;			//define a direcao inicial em x
	int direcaoY = 1;			//define a direcao inicial em y

	int totalBolaFrames = 8;	  //responsavel por verificar o numero de frames
	int atualBolaFrame = 0;		  //responsavel por verificar qual o frame atual
	int tempoBolaTransicao = 10;  //responsavel pelo tempo de troca de cada frame
								  //quando mais próximo de 0, mais rápido
	//carrega a imagem para a mira
	unsigned int mira = C2D2_CarregaSpriteSet("Assets/mira.png", 21, 21);

	//define os dados da barra1 (sprite, posicao em x, e em y e a velocidade
	unsigned int barra1 = C2D2_CarregaSpriteSet("Assets/barra.png", 61, 11);	
	int xBarra1 = 200;			
	int yBarra1 = 0;
	int speedBarra1 = 1;
	//define os dados da barra2 (sprite, posicao em x, e em y e a velocidade
	unsigned int barra2 = C2D2_CarregaSpriteSet("Assets/barra.png", 61, 11);
	int xBarra2 = 200;
	int yBarra2 = 390;
	int speedBarra2 = 1;

	//Carregar Texto
	unsigned int fonte = C2D2_CarregaFonte("Assets/fonte.png", 32);

	//pontuação primeiro jogador
	int scoreJogador1 = 0;
	char scoreJogador1Text[4];
	//pontuação segundo jogador
	int scoreJogador2 = 0;
	char scoreJogador2Text[4];

	//carregar som de batida
	unsigned int batida = CA2_CarregaEfeito("Assets/bate.ogg");

	//permite que o fundo seja de cor azul
	C2D2_TrocaCorLimpezaTela(0,100,255);
	//Update do jogo
	do{
		C2D2_LimpaTela();				//a cada vez que o programa roda, ele limpa a tela, evitando lixo de imagem

		//controle do jogador 1 com a barra 1
		if(teclado[C2D2_D].ativo && xBarra1 <= 339){
			xBarra1 = xBarra1+speedBarra1;
		}else if(teclado[C2D2_A].ativo && xBarra1 >= 0){
			xBarra1 = xBarra1-speedBarra1;
		}
		
		//controle jogador 2 com a barra 2
		if(teclado[C2D2_DIREITA].ativo && xBarra2 <= 339){
			xBarra2 = xBarra2+speedBarra2;
		}else if(teclado[C2D2_ESQUERDA].ativo && xBarra2 >= 0){
			xBarra2 = xBarra2-speedBarra2;
		}
		
		//detectar se houve colisao
		if(C2D2_ColidiuSprites(bola, atualBolaFrame, xBola, yBola, mira, 0, mouse->x, mouse->y)){
				//detectar os botoes do mouse
			if(mouse->botoes[C2D2_MESQUERDO].pressionado){
				C2D2_TrocaCorLimpezaTela(0,255,0);
			}else if(mouse->botoes[C2D2_MDIREITO].pressionado){
				C2D2_TrocaCorLimpezaTela(255, 0, 0);
			}else if(mouse->botoes[C2D2_MMEIO].pressionado){
				C2D2_TrocaCorLimpezaTela(0, 0, 255);
			}
		}


		//verifica se houve colisao da bola com a barra 1
		if(C2D2_ColidiuSprites(bola, 0, xBola, yBola, barra1, 0, xBarra1, yBarra1)){
			direcaoY *= -1;
			speed++;
			CA2_TocaEfeito(batida, CA2_CENTRO);
		}
		//verifica se houve colisao da bola com a barra 2
		if(C2D2_ColidiuSprites(bola, 0, xBola, yBola, barra2, 0, xBarra2, yBarra2)){
			direcaoY *= -1;
			speed++;
			CA2_TocaEfeito(batida, CA2_CENTRO);
		}
		
		//verifica se a bola bateu nas laterais do jogo
		if(xBola <= 0 || xBola >= 347){			//lateral direita esquerda
			direcaoX *=-1;
			if(xBola <=0){
				CA2_TocaEfeito(batida, CA2_ESQUERDA);
			}else if(xBola >= 347){
				CA2_TocaEfeito(batida, CA2_DIREITA);
			}
		}else if(yBola <= -10 || yBola >= 356){	//lateral inferior superior
			if(yBola <= -10){
				scoreJogador2++;
			}else if(yBola >= 356){
				scoreJogador1++;
			}
			xBola = 200;
			yBola = 200;
			speed = 1;
		}

		//a bola sempre esta em movimento
		xBola = xBola+(speed*direcaoX);			
		yBola = yBola+(speed*direcaoY);

		//animação da bola
		tempoBolaTransicao++;
		if(tempoBolaTransicao >= 2){
			atualBolaFrame++;
			if(atualBolaFrame>=totalBolaFrames){
				atualBolaFrame = 0;
			}
			tempoBolaTransicao = 0;
		}

		//Area de desenho. A ordem de desenho influencia
		C2D2_DesenhaSprite(mira, 0, mouse->x, mouse->y);
		C2D2_DesenhaTexto(fonte, 10, 50, "PONG__:D", C2D2_TEXTO_ESQUERDA);
		itoa(scoreJogador1, scoreJogador1Text, 10);
		C2D2_DesenhaTexto(fonte, 10, 85, scoreJogador1Text, C2D2_TEXTO_ESQUERDA);
		itoa(scoreJogador2, scoreJogador2Text, 10);
		C2D2_DesenhaTexto(fonte, 400, 85, scoreJogador2Text, C2D2_TEXTO_DIREITA);
		C2D2_DesenhaSprite(bola, atualBolaFrame, xBola, yBola);
		C2D2_DesenhaSprite(barra1, 0, xBarra1, yBarra1);
		C2D2_DesenhaSprite(barra2, 0, xBarra2, yBarra2);

		//sincroniza o jogo
		C2D2_Sincroniza(C2D2_FPS_PADRAO);
	}while(!teclado[C2D2_ESC].pressionado && !teclado[C2D2_ENCERRA].pressionado);

	CA2_Encerra();
	C2D2_Encerra();
	
	//finaliza o jogo
	return 0;
}
コード例 #4
0
ファイル: rotacao.cpp プロジェクト: ProgLevelup/chien2d
int main(int narg, char **valarg)
{
	// Inicia a Chien2D 2 e testa se deu tudo certo
	if(C2D2_Inicia(LARGTELA, ALTTELA, C2D2_JANELA, C2D2_DESENHO_PADRAO, "Rotação"))
		printf("Iniciou a Chien2D 2 com sucesso\n");
	else
	{
		printf("Falhou ao iniciar a Chien2D 2. Encerrando o programa.\n");
		return 0;
	}
	// os sprites
	unsigned int spritescertos[4], spriteserrados[4], help;
	// Coordenadas na tela
	float xf[16], yf[16], xtrf[16], ytrf[16];
	int xi[16], yi[16], xtri[16], ytri[16];
	float angulo = 0;
	// Escolhe se desenha certo ou não
	bool certo = false;
	// O zoom a aplicar
	int zoom = 200;
	for(int i=0;i<4;i++)
	{
	    char nome[40];
	    sprintf(nome, "graficos/rotacao%i.png", i);
	    spritescertos[i]= C2D2_CarregaSpriteSet(nome, TAMSPRITE+2, TAMSPRITE+2);    
    	xf[0+i*4] = xf[3+i*4] = -TAMSPRITE + TAMSPRITE*(i%2);
        xf[1+i*4] = xf[2+i*4] = (i%2)*TAMSPRITE;
    	yf[0+i*4] = yf[1+i*4] = (TAMSPRITE - (i/2)*TAMSPRITE); 
    	yf[2+i*4] = yf[3+i*4] = -(i/2)*TAMSPRITE;  
        // Faz o mesmo para os sprites errados
   	    sprintf(nome, "graficos/rotacaoerrado%i.png", i);
	    spriteserrados[i]= C2D2_CarregaSpriteSet(nome, TAMSPRITE, TAMSPRITE);    
    	xi[0+i*4] = xi[3+i*4] = -TAMSPRITE + TAMSPRITE*(i%2);
        xi[1+i*4] = xi[2+i*4] = (i%2)*TAMSPRITE;
    	yi[0+i*4] = yi[1+i*4] = (TAMSPRITE - (i/2)*TAMSPRITE); 
    	yi[2+i*4] = yi[3+i*4] = -(i/2)*TAMSPRITE;  
	}
	help = C2D2_CarregaSpriteSet("graficos/help.png", 0, 0);
	// Recupera o teclado
	C2D2_Botao *teclas = C2D2_PegaTeclas();
	// Recupera o mouse
	C2D2_Mouse *mouse = C2D2_PegaMouse();
    C2D2_TrocaCorLimpezaTela(255,0,0);
	do
	{
	    // Muda o zoom?
	    if(teclas[C2D2_Z].ativo && zoom > 1)
	        zoom--;
	    else if(teclas[C2D2_X].ativo && zoom < 400)
	        zoom++;
	    // Troca o render?
	    if(teclas[C2D2_ESPACO].pressionado)
	        certo = !certo;
	    // Calcula o novo angulo
	    if(teclas[C2D2_ENTER].ativo)
	        angulo+=1.5;
	    else
	        angulo+=0.3;
	    if(angulo>360)
	        angulo-=360;
	    // Rotaciona os pontos
	    for(int i=0;i<16;i++)
	    {
	        // Os pontos certos
            xtrf[i] = LARGTELA/2 + (xf[i]*zoom/100.0)*cos(RAD*angulo) + (yf[i]*zoom/100.0)*sin(RAD*angulo);
            ytrf[i] = ALTTELA/2 - ((xf[i]*zoom/100.0)*-sin(RAD*angulo) + (yf[i]*zoom/100.0)*cos(RAD*angulo));
	        // Os pontos errados
            xtri[i] = LARGTELA/2 + (xi[i]*zoom/100.0)*cos(RAD*angulo) + (yi[i]*zoom/100.0)*sin(RAD*angulo);
            ytri[i] = ALTTELA/2 - ((xi[i]*zoom/100.0)*-sin(RAD*angulo) + (yi[i]*zoom/100.0)*cos(RAD*angulo));
            
	    }
		// Limpa a tela com a cor de fundo atual
		C2D2_LimpaTela();
		// Desenha os sprites
		for(int i=0;i<4;i++)
		{
		    if(certo)
			    C2D2_DesenhaSpriteEfeitoSubpixel(spritescertos[i], 0, &xtrf[i*4], &ytrf[i*4], 255, 255, 255, 255);
			 else
			    C2D2_DesenhaSpriteEfeito(spriteserrados[i], 0, &xtri[i*4], &ytri[i*4], 255, 255, 255, 255);
	    }
	    C2D2_DesenhaSprite(help, 0, 10, 10);
		
		// Faz a troca do front buffer com o back buffer e atualiza as entradas
		C2D2_Sincroniza(C2D2_FPS_PADRAO);
	}
	while(!teclas[C2D2_ENCERRA].pressionado && !teclas[C2D2_ESC].pressionado);
	// Remove as imagens
	for(int i=0;i<4;i++)
	{
        C2D2_RemoveSpriteSet(spritescertos[i]);
        C2D2_RemoveSpriteSet(spriteserrados[i]);
     }
     C2D2_RemoveSpriteSet(help);

	// Encerra a Chien2D 2
	C2D2_Encerra();
	return 0;
}
コード例 #5
0
ファイル: Shutar.cpp プロジェクト: pfrankster/shutar_chien2d
void Shutar::Update(int gamestate)
{
	//AQUI FICAM AS REGRAS DO JOGO
	C2D2_Botao* teclas = C2D2_PegaTeclas();
	C2D2_Mouse* mouse = C2D2_PegaMouse();

	if (gamestate == 1)
	{
		if (teclas[C2D2_ENTER].pressionado){ GameState = 2; CA2_FadeMusica(2); tocandomusica = false; }
		if (teclas[C2D2_C].pressionado){ GameState = 3; CA2_FadeMusica(2); tocandomusica = false; }

		if (teclas[C2D2_ESC].pressionado){ GameState = 10; }
	}

	if (gamestate == 3)
	{
		if (teclas[C2D2_ESC].pressionado){ GameState = 1; }
	}

	if (gamestate == 4)
	{
		if (teclas[C2D2_ESC].pressionado){ GameState = 10; }
	}


	if (gamestate == 2)
	{
		if (teclas[C2D2_ESC].pressionado){ GameState = 1; tocandomusica = false; }


		mousePosX = mouse->x;
		mousePosY = mouse->y;

		//REPASSA A POSICAO DA NAVE PARA TODOS OS INIMIGOS *-*-*-*-*-*
		int posXNave, posYNave;
		posXNave = nave->x;
		posYNave = nave->y;

		for (int i = 0; i < numinimigosSH; i++)
		{
			Evento evt;
			evt.tipoEvento = EVT_POSICAO;
			evt.x = posXNave;
			evt.y = posYNave;
			ATOR_EnviaEvento(inimigosSH[i], &evt);
			//printf("passou coordenada");
		}


			for (int i = 0; i < numinimigosMR; i++)
			{
				Evento evt;
				evt.tipoEvento = EVT_POSICAO;
				evt.x = posXNave;
				evt.y = posYNave;
				ATOR_EnviaEvento(inimigosMR[i], &evt);
			//printf("passou coordenada");
			}

			for (int i = 0; i < numinimigosBT; i++)
			{
				Evento evt;
				evt.tipoEvento = EVT_POSICAO;
				evt.x = posXNave;
				evt.y = posYNave;
				ATOR_EnviaEvento(inimigos[i], &evt);
				//printf("passou coordenada");
			}


			for (int i = 0; i < numinimigosRB; i++)
			{
				Evento evt;
				evt.tipoEvento = EVT_POSICAO;
				evt.x = posXNave;
				evt.y = posYNave;
				ATOR_EnviaEvento(inimigosRB[i], &evt);
				//printf("passou coordenada");
			}




		 //-*-*--*-*-*-*-*-*-*-*-*-*-*-*-


		//controle jogador

			Nave_ProcessaControle(nave);

		//atualiza nave 
			ATOR_AplicaEstado(nave, mapa, LARGURA_TELA, ALTURA_TELA);
			Nave_Atualiza(nave, mapa);


			// atualiza  as inimigos RB
			for (int i = 0; i < numinimigosRB; i++)
		{	
				ATOR_AplicaEstado(inimigosRB[i], mapa, LARGURA_TELA, ALTURA_TELA);
				// Aplica o estado da propulsao
				ATOR_Atualiza(inimigosRB[i], mapa);
			}

			// atualiza  as inimigos 
			for (int i = 0; i < numinimigosBT; i++)
			{
				ATOR_AplicaEstado(inimigos[i], mapa, LARGURA_TELA, ALTURA_TELA);
				ATOR_Atualiza(inimigos[i], mapa);
			}

			// atualiza  as inimigos MSHOOTER
			for (int i = 0; i < numinimigosSH; i++)
			{
				ATOR_AplicaEstado(inimigosSH[i], mapa, LARGURA_TELA, ALTURA_TELA);
				ATOR_Atualiza(inimigosSH[i], mapa);
			}



			for (int i = 0; i < numTirosInimigos; i++){
				if (tirosInimigos[i] != 0)
				{
					ATOR_AplicaEstado(tirosInimigos[i], mapa, LARGURA_TELA, ALTURA_TELA);
					ATOR_Atualiza(tirosInimigos[i], mapa);
				}
				

					if (!ATOR_Atualiza(tirosInimigos[i], mapa))
					{
						free(tirosInimigos[i]);
						tirosInimigos[i] = 0;
					}
			}


			// atualiza  as inimigos 
			for (int i = 0; i < numinimigosMR; i++)
			{
				ATOR_AplicaEstado(inimigosMR[i], mapa, LARGURA_TELA, ALTURA_TELA);
				// Aplica o estado da propulsao
				ATOR_Atualiza(inimigosMR[i], mapa);
			}


			// atualiza  as ocorrencias 
			for (int i = 0; i < numOcorrencias; i++)
			{
				ATOR_AplicaEstado(ocorrencias[i], mapa, LARGURA_TELA, ALTURA_TELA);
				// Aplica o estado da propulsao
				ATOR_Atualiza(ocorrencias[i], mapa);
			}


			//atualiza bomba 
			if (bomba != 0)
			{
				ATOR_AplicaEstado(bomba, 1, LARGURA_TELA, ALTURA_TELA);
				Tiro_Atualiza(bomba, 1);

			}
			if (!ATOR_Atualiza(bomba, 1))
			{
				free(bomba);
				bomba = 0; 

			}



			CollisionHandler(); 

			
		//eventos diretos da chien para o jogo 
			Evento ev;

			while (ATOR_ProximoEventoJogo(&ev))
			{
				switch (ev.tipoEvento)
				{

				case SUBEVT_FIM_FASE_DERROTA:
					GameState = 4; 
					break; 

				case	EVT_PRESSIONOU_BAIXO:
					shootOK = false;
					tiro = 0;
					free(tiro);
					break;

				case	EVT_PRESSIONOU_CIMA:
					BombaOK = false;
					break;

					case EVT_CRIA_PERSONAGEM:
						switch (ev.subtipo)
						{
						case TIRO_NAVE:
							// Se o tiro é nulo, pode criar um novo
							if (!shootOK)
							{
								printf("atirou!\n");
								tiro = ATOR_CriaAtor(TIRO_NAVE, ev.x, ev.y, ev.valor);
								ATOR_TocaEfeitoTela(nave, 0, mapa);
								shootOK = true;
							}

							break;

						case BOMBA:
							// Se o tiro é nulo, pode criar um novo
							if (!BombaOK)
							{
								printf("BOMBA!\n");
								bomba = ATOR_CriaAtor(BOMBA, ev.x, ev.y, ev.valor);
								ATOR_TocaEfeitoTela(nave, 2, mapa);
								BombaOK = true;
							}

							break;


						case REDBOSS:
							// Se o tiro é nulo, pode criar um novo
							if (redboss == 0)
								redboss = ATOR_CriaAtor(REDBOSS, ev.x, ev.y, ev.valor);
							break;

						case MINIRED:
							// Se o tiro é nulo, pode criar um novo
							printf("\ngerador recebeu a info e vai gerar um MiniRED");
							miniredAgenger = ATOR_CriaAtor(MINIRED, ev.x, ev.y, ev.valor);
					
							break;

						case TIRO_INIMIGO:
						{
							// Se o tiro é nulo, pode criar um novo


							for (int i = 0; i < numTirosInimigos; i++)
							{
								if (tirosInimigos[i] == 0)
								{
									printf("atirou!\n");
										tirosInimigos[i] = ATOR_CriaAtor(TIRO_INIMIGO, ev.x, ev.y, ev.valor);
									ATOR_TocaEfeitoTela(nave, 0, mapa);
									break;

								}
							} //fim for

						}


						}
						break;
					}
			}
	} //fim gamestate 2


}