示例#1
0
// Função que descarrega os recursos globais
void Descarrega()
{
	CA2_RemoveMusica(mfundo);
	C2D2_RemoveFonte(fdigital);
	C2D2_RemoveFonte(fsistema);
	C2D2_RemoveFonte(fpequeno);
	C2D2_RemoveSpriteSet(tuxwindows);
	C2D2_RemoveSpriteSet(titulo);
	C2D2_RemoveSpriteSet(sprite1);
	C2D2_RemoveSpriteSet(sprite2);
}
示例#2
0
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;
}
示例#3
0
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;
}