Exemple #1
0
main(){
	PEDIDO zero = {"Acapulco", 01, 100};
	PEDIDO um = {"Bruxelas", 02, 200};
	PEDIDO dois = {"Cairo", 03, 300};
	TFila fila;
	fila.inicio = fila.fim = 0;
	fila.contador = 0;
	inserir (&fila, zero);
	inserir (&fila, um);
	inserir (&fila, dois);
	mostra(fila);
	retirar (&fila);
	mostra(fila);

}
int main(){		//função principal.

	char escolha;	

	inicialista();	//inicia a lista struct notas.
	printf("\n\n\n");

for(;;){
	escolha = menu();     //área do MENU.
	switch(escolha){
		case 1:
			inserir();
			break;
		case 2:
			salvar();
			break;
		case 3:
			mostra();
			break;
		case 4:	
			carregar();
			break;
		case 5:
			exit(0);
	}
	}

printf("\n\n");
return 0;
//system("pause");

}
int main() {
	int v[T];
	srand(time(0));
	gera_sem_repeticao(v, T);
	bubble(v, T);
	mostra(v, T, "Resultado: ");
	return 0;
}
Exemple #4
0
void exibe(int* vet, int tamanho)
{
	int i;
  	printf("\n");
  	for (i=0;i<tamanho;i++)
		mostra(vet[i]);
  	printf("\n\n");
}
void main()
{
	int vet[10] = {3,12,15,33,68,41,79,44,88,70};

	selecao(vet,10);

	mostra(vet,10);


	getchar();
}
Exemple #6
0
void mostra_pilha2(PilhaDupla p, void(*mostra)(void*)){
     if(pilha2_vazia(p)){
        printf("Pilhas vazias! \n");
     } else {
          printf("Dados da pilha:\n");   
          int i;
          for(i = p.capacidade-1; i >= p.topo2; i--){	
             mostra(p.dados[i]);
          }
     }  
}
Exemple #7
0
void mostra_pilha1(PilhaDupla p, void(*mostra)(void*)){
     if(pilha1_vazia(p)){
        printf("Pilhas vazias! \n");
     } else {
          printf("Dados da pilha:\n");   
          int i;
          for(i = 0; i<= p.topo1; i++){	
             mostra(p.dados[i]);
          }
     }  
}
void mostra_pilha(PilhaGenerica p, void(*mostra)(void*)){
     if(pilha_vazia(p)){
        printf("Pilha vazia! \n");
     } else {
          printf("Dados da pilha:\n");   
          int i;
          for(i = 0; i<= p.topo; i++){	
             mostra(p.dados[i]);
          }
     }  
}
void main() {
	//declaração e inicialização do vetor
	int vLista[9] = {56, 55, 1, 32, 67, 87, 43, 99, 5};

   //execucao da ordecao
   insercao(vLista, 9);
   
   //execuacao da exibicao
   mostra(vLista, 9);

   getchar();
}
int main() {
    /* Vetor de registros. */
    aniversario_t aniversarios[5];
    int i;

    for(i = 0; i < 5; ++i) {
        aniversarios[i] = le_aniversario();
        valida(aniversarios[i].data);
        mostra(aniversarios + i);
    }

    return 0;
}
Exemple #11
0
int main() {
  char arquivo[] = "apc.c.txt";

  if(cria(arquivo) == EXIT_SUCCESS) {
    printf("Leitura correta:\n");
    mostra(arquivo);
    printf("\nLeitura correta com formatação:\n");
    mostra_formatado(arquivo);
    printf("\nLeitura incorreta:\n");
    mostra_errado(arquivo);
  }

  return EXIT_SUCCESS;
}
Exemple #12
0
int menu_camioes ()
{
	int op;
	int c;
	       camioes cam[NR];
	       for(c=0;c<NR;c++)
		   cam[c].estado=0;   /* limpa todo o Array de registos */
        system ("cls"); gotoxy(20,10);
        ler_camioes(cam);
	do {
		system ("cls");						        
		printf("\n\t|============================================|"); system("COLOR 0B");
    	printf("\n\t|              C E M  R O D A S              |");
    	printf("\n\t|                                            |");
	   	printf("\n\t|                                            |");
    	printf("\n\t|                C A M I O E S               |");
    	printf("\n\t|                                            |");
    	printf("\n\t|============================================|");
        printf("\n\t*                                            *"); 
        printf("\n\t*               1 - Inserir                  *");
        printf("\n\t*                                            *"); 
        printf("\n\t*               2 - Alterar                  *");
		printf("\n\t*                                            *"); 
        printf("\n\t*               3 - Eliminar                 *");
        printf("\n\t*                                            *"); 
		printf("\n\t*               4 - Listar                   *");
		printf("\n\t*                                            *");
        printf("\n\t*               0 - Menu Principal           *");
		printf("\n\t*                                            *");
        printf("\n\t**********************************************");
        printf("\n\n\t             Qual a sua opcao? ");
				
				scanf("%d",&op);
               
				switch (op) {
                        case 1: inseri(cam); break;
                        case 2: altera(cam); break;
                        case 3: elimina(cam); break;
                        case 4: mostra(cam); break;
						case 0: system ("cls"); break;
                        default: printf("Opcao invalida!\n");
                }
    } while (op!=0);
	
}
Exemple #13
0
int main() 
{
  /*VARIAVEIS*/
  int Naproximacao; /*recebe o numero de aproximacoes*/
  int Ndecolagem; /*recebe o numero de docolagens*/
  
  /*declaracao dos voos*/
  No *voos;
  
  /*declaracao das pistas*/
  Fila *pista1; 
  Fila *pista2;
  Fila *pista3;
  
  /*aloca memoria*/
  pista1 = malloc(sizeof(Fila)); /*somente dec*/
  pista2 = malloc(sizeof(Fila)); /*dec e ater*/
  pista3 = malloc(sizeof(Fila)); /*dec e ater*/ 
  voos = malloc(sizeof(No));
  
  /*FUNCOES*/
  criaLista(voos); /*cria a lista com as informacoes*/
  criaPista(pista1);/*cria a pista 1*/
  criaPista(pista2);/*cria a pista 2*/
  criaPista(pista3);/*cria a pista 3*/
  
  srand(time(NULL));/*pega a hora a sua como base para calculos aleatorios*/
  Naproximacao = geraRand(0, 26); /*define o numero de proximacoes que terao no programa*/
  Ndecolagem = geraRand(0, 16); /*define o numero de decolagens que terao no programa*/
  voos = geraVoos(Naproximacao,voos, 1); /*perceber que aqui temos o final da lista entao o proximo e NULL*/
  voos = geraVoos(Ndecolagem,voos, 2); /*perceber que aqui temos o final da lista entao o proximo e NULL*/
  nomeVoo(voos); /*gera os nomes dos voos*/

  mostra(voos);
  preenchePistas(voos, pista1, pista2, pista3);
  /*clear();*/
  liberaPistas(pista1, pista2, pista3);
  
  return 0;
}
void le_dados(){
    int N,M;

    printf("Digite a quantidade de elementos do primeiro vetor\n");
    scanf("%d",&N);

    printf("Digite a quantidade de elementos do segundo vetor\n");
    scanf("%d",&M);

    int vet01[N],vet02[M],soma[N];
    int i;

   pega_dados(vet01,vet02,&N,&M);

   if(soma_vetores(vet01,vet02,soma,N,M) == 1){
     mostra(soma,N);
   }else{
     printf("Vetores com indices diferentes\n");
   }



}
Exemple #15
0
int main(){
    Fila *fi;
    int z;
    fi = cria_fila();
    int x = insere_fila(fi,2);
    x = insere_fila(fi,3);
    x = insere_fila(fi,4);
    x = insere_fila(fi,5);
    mostra(fi);
    int y = consulta_fila(fi,&z);
    //x = remove_fila(fi);
    fi = inverte_fila(fi);
    /*
    printf("Primeiro valor %d\n",z);
    printf("Tamanho da fila %d",tamanho(fi));
    if(fila_cheia(fi) == 1){
        printf("Esta cheia");
    }else{
        printf("Nao esta cheia!");
    }*/

    //x = verifica_ord(fi);
    return 0;
}
int main(){
    struct no *inicio, *p;// Ponteiros para tipos struct no
    int i, opcao, elemento;
    
    // Inicializando o ponteiro com o valor NULL
    inicio = NULL;
    //
    do {
        system("cls");
        printf("==================================================================\n");
    	printf(" \t\tESCOLHA A OPCAO:");
        printf("\n==================================================================");
        printf("\n\n 1 - Adicionar elemento");
        printf("\n------------------------------------------------------------------");
        printf("\n 2 - Mostrar elementos");
        printf("\n------------------------------------------------------------------");
        printf("\n 3 - Liberar memoria");
        printf("\n------------------------------------------------------------------");
        printf("\n 4 - Mostrar a quantidade de elementos");
        printf("\n------------------------------------------------------------------");
        printf("\n 5 - Mostrar a media");
        printf("\n------------------------------------------------------------------");
        printf("\n 6 - Adicionar elemento no final");
        printf("\n------------------------------------------------------------------");
        printf("\n 7 - Buscar Elemento");        
        printf("\n------------------------------------------------------------------");
        printf("\n 8 - Apagar Elemento");   
        printf("\n------------------------------------------------------------------");
        printf("\n 9 - Apagar o Ultimo Elemento");   
        printf("\n------------------------------------------------------------------");
        printf("\n 10 - Apagar o Primeiro Elemento");   
        printf("\n------------------------------------------------------------------");        
        printf("\n 11 - Inserir Elemento no meio");   
        printf("\n------------------------------------------------------------------");         
        printf("\n 0 - Sair \n\n -> ");
        scanf("%d", &opcao);
        //
        switch (opcao){
               case 0:
                   printf("\n O programa sera encerrado");
                   break;
               case 1: 
                   printf("Entre com o elemento\n");
                   scanf("%d", &elemento);
                   inserir_inicio(&inicio, elemento);                 
                   break;
               case 2:
                   mostra(inicio);
                   break;
               case 3:
                   liberaMemoria(&inicio);
                   break;
               case 4:
                   printf(" %d elementos", contar(inicio));
                   getch();
                   break;    
               case 5:
                   printf(" Media: %.f", media(inicio));
                   getch();
                   break;    
               case 6: 
                   printf("Entre com o elemento\n");
                   scanf("%d", &elemento);
                   inserirNoFinal(&inicio, elemento);
                   printf("\t Inserido \n");
                   getch();
                   break;
               case 7: 
                   printf("Entre com o elemento\n");
                   scanf("%d", &elemento);
                   printf(" %d", buscar(inicio, elemento));
                   getch();
                   break;
               case 8: 
                   printf("Entre com o elemento\n");
                   scanf("%d", &elemento);
                   apagarElemento(&inicio, elemento);
                   getch();
                   break;
               case 9: 
                   if (inicio == NULL) {
                      printf("\n A lista esta vazia");
                   }
                   else {
                        printf("Elemento lemento %d removido.\n", removeUltimo(&inicio));
                   }
                   getch();
                   break;
               case 10: 
                   if (inicio == NULL) {
                      printf("\n A lista esta vazia");
                   }
                   else {
                        printf("Elemento lemento %d removido.\n", removePrimeiro(&inicio));
                   }
                   getch(); 
                   break;
               case 11: 
                   printf("Entre com o elemento\n");
                   scanf("%d", &elemento);
                   inserirNoMeio(&inicio, elemento);
                   printf("\t Inserido \n");
                   getch();
                   break;                                     
               default:
                   printf("\n\n Opcao invalida!!");
                   getch();
                   break;
       }     
    }
        
    while(opcao != 0);
   
    printf("\n");
        
    getch();
    return 0;
}
Exemple #17
0
//Processa comandos
void comandos(MSG *msg){
	int i,j,jogadorExiste,flg = 0,x=0,y=0,pid;
	char *cmd[4],temp[TAM_MAX],fifo_name[TAM_MAX];
        FILE *f;
        
        //dividir frases
	cmd[0] = strtok(msg->comando, " "); 

	for (i = 1; cmd[i - 1] != NULL; i++)
		cmd[i] = strtok(NULL, " ");
        i--;
        
        
        //Processa comandos
        
        //LOGIN
	if(strcasecmp(cmd[0],"login") == 0)
        {
            jogadorExiste = 0;

            //Valida ese já existe um jogador com esse nome
            if( jogadores != NULL)
            {
                    auxJogadores = jogadores;
                    while(auxJogadores != NULL){
                            if(strcasecmp(auxJogadores->nome,cmd[1]) == 0 && strcasecmp(auxJogadores->pass,cmd[2]) == 0){
                                    jogadorExiste = 1;
                                    break;
                            }
                            auxJogadores = auxJogadores->Proximo;
                    }
            }

            //Caso o Jogador nao exista
            if(jogadorExiste == 0)
            {
                    //Alloca espaço em memoria para o jogador			
                    aux2Jogadores = (Jogador *) malloc(sizeof(Jogador));

                    //Preenche dados do jogador
                    aux2Jogadores->pid_cliente = msg->pid_cliente;
                    strcpy(aux2Jogadores->nome,cmd[1]);
                    strcpy(aux2Jogadores->pass,cmd[2]);
                    aux2Jogadores->aJogar = 0;
                    aux2Jogadores->vitorias = 0;
                    aux2Jogadores->Proximo = NULL;

                    //Caso jogador ja tenha estado logago actualiza o seu num de vitorias		
                    auxExJogadores = exJogadores;

                    while(auxExJogadores != NULL)
                    {
                            if(strcasecmp(auxExJogadores->nome,cmd[1]) == 0){
                                    aux2Jogadores->vitorias = auxExJogadores->vitorias;
                                    break;					
                            }
                            auxExJogadores = auxExJogadores->Proximo;			
                    }
                    //Liberta espaço em memória o ex jogador
                    free(auxExJogadores);

                    //Adiciona novo jogador ao fim dos "Jogadores"
                    if(jogadores == NULL)
                            jogadores = aux2Jogadores;
                    else
                    {
                            auxJogadores = jogadores;
                            while(auxJogadores->Proximo != NULL)
                            {
                                    auxJogadores = auxJogadores->Proximo;				
                            }
                            auxJogadores->Proximo = aux2Jogadores;
                    }
                    strcpy(msg->comando,"Login efectuado com sucesso!");
                    msg->estado = 2;
                    //Abre cliente e envia-lhe mensagem
                    sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
                    escreveFifo(fifo_name,*msg);
            }
            else{
                    strcpy(msg->comando,"Jogador já ligado!");
                    msg->estado = 1;
                    //Abre cliente e envia-lhe mensagem
                    sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
                    escreveFifo(fifo_name,*msg);
            }

    }
    //LOGOUT
    else if(strcasecmp(cmd[0],"logout") == 0)
    {

            auxJogadores = jogadores;
            while( auxJogadores != NULL && auxJogadores->pid_cliente != msg->pid_cliente)
                    auxJogadores = auxJogadores->Proximo;


            strcpy(msg->comando,"Logout efectuado com sucesso!");

            //Abre cliente e envia-lhe mensagem
            sprintf(fifo_name, CLIENT_FIFO, auxJogadores->pid_cliente);
            escreveFifo(fifo_name,*msg);

            //termina cliente
            kill(auxJogadores->pid_cliente,SIGINT);


            // Guarda login do jogador, para ser recuperado mais tarde
            aux2ExJogadores = (JogadorLogout *) malloc (sizeof(JogadorLogout));

            // Prenche campos
            strcpy(aux2Jogadores->nome,auxJogadores->nome);	
            strcpy(aux2Jogadores->pass,auxJogadores->pass);
            aux2Jogadores->vitorias = auxJogadores->vitorias;
            aux2ExJogadores->Proximo = NULL;

            //Insere ex jogador na lista exjogadores		
            if(exJogadores == NULL)
                    exJogadores = aux2ExJogadores;
            else{
                    auxExJogadores = exJogadores;
                    while(exJogadores->Proximo != NULL)
                            auxExJogadores = auxExJogadores->Proximo;	
                    auxExJogadores->Proximo = aux2ExJogadores;	
            }

            //remove jogador da lista de jogadores
            auxJogadores = jogadores;
            aux2Jogadores = NULL;
            while(auxJogadores != NULL)
            {
                    if(auxJogadores->pid_cliente == msg->pid_cliente)
                    {
                            if(aux2Jogadores == NULL)
                                    jogadores = auxJogadores->Proximo;
                            else
                                    aux2Jogadores->Proximo = auxJogadores->Proximo;
                            break;			
                    }
                    aux2Jogadores = auxJogadores;
                    auxJogadores = auxJogadores->Proximo;		
            }
    }
    //NOVO
    else if (strcasecmp(cmd[0],"novo") == 0){

        //Caso já tenha sido criado um jogo
        if(jogoCriado == 1)
        {
            strcpy(msg->comando,"Já existe um jogo criado!");
            //Abre cliente e envia-lhe mensagem
            sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
            escreveFifo(fifo_name,*msg);
        }
        else
        {
            if(!atoi(cmd[1]))
            {
                strcpy(msg->comando,"O timeout tem de ser um valor inteiro!");
                //Abre cliente e envia-lhe mensagem
                sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
                escreveFifo(fifo_name,*msg);
            }
            else
            {

                if(!atoi(cmd[2]))
                    strcpy(Lab.criado,cmd[2]);
                else
                    strcpy(Lab.criado,"");
                
                jogoCriado = 1;
                totalJogadores = 1;
                alarm(atoi(cmd[1]));

                //Envia mensagem ao cliente
                sprintf(temp,"Caso existam pelo menos 2 jogadores, o jogo começara em %s segundos.",cmd[1]);
                strcpy(msg->comando,temp);
                //Avança de estado para o estado de jogo criado
                msg->estado = 3;

                //Abre cliente e envia-lhe mensagem
                sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
                escreveFifo(fifo_name,*msg);

                //Define o jogador como o 'Primeiro jogador

                auxJogadores = jogadores;
                while(auxJogadores != NULL)
                {
                    if(auxJogadores->pid_cliente == msg->pid_cliente)
                    {
                        auxJogadores->admin = 1;
                        auxJogadores->aJogar = 1;
                        break;
                    }
                    auxJogadores = auxJogadores->Proximo;
                }    

            }

        }

    }
    //JOGAR
    else if (strcasecmp(cmd[0],"jogar") == 0)
    {
        //Caso o jogo ainda não tenha sido criado
        if(jogoCriado != 1)
        {
            strcpy(msg->comando,"Jogo nao criado!");
            //Abre cliente e envia-lhe mensagem
            sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
            escreveFifo(fifo_name,*msg);
        }
        //Caso o jogo tenha sido criado mas ainda não esteja a decorrer
        else if(jogoCriado == 1 && jogoDecorrer != 1)
        {
            //Caso já tenha sido atengido o numero máximo de jogadores
            if(totalJogadores == 10)
            {
                strcpy(msg->comando,"Limite máximo de jogadores atingido!");
                //Abre cliente e envia-lhe mensagem
                sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
                escreveFifo(fifo_name,*msg);
            }
            else
            {
                auxJogadores = jogadores;
                //Adiciona jogadores ao jogo
                while(auxJogadores != NULL)
                {
                    if(auxJogadores->pid_cliente == msg->pid_cliente)
                    {
                        auxJogadores->aJogar = 1;
                        sprintf(temp,"Jogador '%s' entrou no jogo!",auxJogadores->nome);
                        break;
                    }
                    auxJogadores = auxJogadores->Proximo;
                }
                totalJogadores++;
                manda_mensagem_todos(temp,msg->pid_cliente,3);

                strcpy(msg->comando,"Entrou no jogo!");
                msg->estado = 3;
                //Abre cliente e envia-lhe mensagem
                sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
                escreveFifo(fifo_name,*msg);
            }
        }                
        else if(jogoCriado == 1 && jogoDecorrer == 1)
        {
            strcpy(msg->comando,"Espere até outro jogo começar!");
            sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
            escreveFifo(fifo_name,*msg);
        }
    }
    else if (strcmp(cmd[0], "ver") == 0){
        if(jogoDecorrer == 1){
            if(i == 1){
                mostra("",*msg);
            }
            //FALTA DJSAKDJSKAJDAKSDJAKSJDKASJDSKJSAKAD
        }
        else
        {
            strcpy(msg->comando,"Só quando o jogo estiver a decorrer é que pode utilizar este comando!");
            printf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
            escreveFifo(fifo_name,*msg);
        }  
    }		
    else if (strcmp(cmd[0],"quem") == 0){
        auxJogadores = jogadores;
        strcpy(msg->comando,"Jogadores Ligados: ");

        while(auxJogadores != NULL){
            strcat(msg->comando,auxJogadores->nome);
            strcat(msg->comando," ");
            auxJogadores = auxJogadores->Proximo;
        }
        //Abre cliente e envia-lhe mensagem
        sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
        escreveFifo(fifo_name,*msg);
    }
    else if (strcmp(cmd[0],"grita") == 0){
        manda_mensagem_todos(cmd[1],msg->pid_cliente,3);
        strcpy(msg->comando,"Mensagem enviada!");
        //Abre cliente e envia-lhe mensagem
        sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
        escreveFifo(fifo_name,*msg);
    }
    else if (strcmp(cmd[0],"terminar") == 0){
        flg = 0;
        strcpy(msg->comando,"Não tem permissão!");
        auxJogadores = jogadores;
        while(auxJogadores != NULL){
            if(auxJogadores->pid_cliente == msg->pid_cliente && auxJogadores->admin == 1){
                flg = 1;
                strcpy(msg->comando,"Jogo terminado!");
                msg->estado = 2;
                break;
            }
            auxJogadores = auxJogadores->Proximo;
        }
        //Abre cliente e envia-lhe mensagem
        sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
        escreveFifo(fifo_name,*msg);

        if(flg == 1){
            jogoCriado = 0;
            jogoDecorrer = 0;
            totalJogadores = 0;
            manda_mensagem_todos("Jogo terminado por ordem do 'primeiro jogador'!",msg->pid_cliente,2);

            auxJogadores = jogadores;
            while(auxJogadores != NULL)
            {
                if(auxJogadores->aJogar == 1 || auxJogadores->admin == 1)
                {
                    auxJogadores->aJogar = 0;
                    auxJogadores->admin = 0;
                    actualizaEstado(auxJogadores->pid_cliente,2);
                }
                auxJogadores = auxJogadores->Proximo;
            }   
        }
    }            
    else if (strcmp(cmd[0],"diz") == 0){
        flg = 0;
        if(jogoDecorrer == 1){
            auxJogadores = jogadores;
            while(auxJogadores != NULL)
            {
                if(auxJogadores->pid_cliente == msg->pid_cliente)
                {
                    if(auxJogadores->aJogar == 1)
                    {
                        x = auxJogadores->X;
                        y = auxJogadores->Y;
                        strcpy(temp,auxJogadores->nome);
                        flg = 1;
                        break;
                    }
                    else
                    {
                        strcpy(msg->comando,"Não está a jogar!");
                    }

                }
                auxJogadores = auxJogadores->Proximo;
            }
            if(flg == 1){
                flg = 0;

                auxJogadores = jogadores;
                while(auxJogadores!= NULL)
                {
                    if(auxJogadores->pid_cliente != msg->pid_cliente && auxJogadores->X == x && auxJogadores->Y == y){
                        strcat(temp,": ");
                        strcat(temp,cmd[1]);
                        strcpy(msg->comando,temp);
                        //Envia mensagem
                        kill(auxJogadores->pid_cliente,SIGUSR1);
                        sprintf(fifo_name,CLIENT_FIFO,auxJogadores->pid_cliente);
                        escreveFifo(fifo_name,*msg);   
                        flg = 1;
                    }
                    auxJogadores = auxJogadores->Proximo;
                }
                if(flg == 1)
                    strcpy(msg->comando,"Mensagem enviada!");
                else
                    strcpy(msg->comando,"Não havia ninguém na sala! Mensagem não enviada!");
                sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
                escreveFifo(fifo_name,*msg);
            }
        }
        else
        {
            strcpy(msg->comando,"Só quando o jogo estiver a decorrer é que pode utilizar este comando!");
            sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
            escreveFifo(fifo_name,*msg);
        }     

    }
    else if(strcasecmp(cmd[0],"sair") == 0){
        if(jogoDecorrer == 1){
            flg = 0;
            auxJogadores = jogadores;
            while(auxJogadores != NULL){
                if(auxJogadores->pid_cliente == msg->pid_cliente){
                    if(Lab.iX == auxJogadores->X && Lab.iY == auxJogadores->Y)
                        flg = 1;
                    break;
                }
                auxJogadores = auxJogadores->Proximo;
            }
            if(flg == 1)
            {
                jogoCriado = 0;
                jogoDecorrer = 0;
                totalJogadores = 0;
                sprintf(temp,"O jogador %s saiu do jogo! Jogo terminou!",auxJogadores->nome);
                manda_mensagem_todos(temp,msg->pid_cliente,AGUARDA_JOGO);

                auxJogadores = jogadores;
                while(auxJogadores != NULL)
                {
                    if(auxJogadores->aJogar == 1 || auxJogadores->admin == 1)
                    {
                        auxJogadores->aJogar = 0;
                        auxJogadores->admin = 0;
                        actualizaEstado(auxJogadores->pid_cliente,AGUARDA_JOGO);
                    }
                    auxJogadores = auxJogadores->Proximo;
                } 
                strcpy(msg->comando,"Saiu do jogo!");
                msg->estado = AGUARDA_JOGO;
            }
            else
            {
                strcpy(msg->comando,"Não está na sala inicio do labirinto!");
            }
            //Abre cliente e envia-lhe mensagem
            sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
            escreveFifo(fifo_name,*msg);
        }
        else
        {
            strcpy(msg->comando,"Só quando o jogo estiver a decorrer é que pode utilizar este comando!");
            printf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
            escreveFifo(fifo_name,*msg);
        } 
    }
    else if(strcasecmp(cmd[0],"desistir") == 0){
        flg = 0;
        auxJogadores = jogadores;
        while(auxJogadores != NULL){
            if(msg->pid_cliente == auxJogadores->pid_cliente)
            {
                if(auxJogadores->aJogar == 1)
                    flg = 1;
                break;
            }
            auxJogadores = auxJogadores->Proximo;
        }
        if(flg == 1)
        {
            totalJogadores--;
            if(totalJogadores == 0){
                jogoCriado = 0;
                jogoDecorrer = 0;
            }
             
            if(auxJogadores->admin == 1){
                msg->estado = 2;
                strcpy(msg->comando,"Desistiu do jogo!");
                //Abre cliente e envia-lhe mensagem
                sprintf(fifo_name, CLIENT_FIFO,msg->pid_cliente);
                escreveFifo(fifo_name,*msg);
                
                auxJogadores->aJogar = 0;
                auxJogadores->admin = 0; 

                sprintf(temp,"O jogador '%s' desistiu do jogo!",auxJogadores->nome);
                manda_mensagem_todos(temp,msg->pid_cliente,A_JOGAR); 

                auxJogadores = jogadores;
                while(auxJogadores != NULL)
                {
                    if(auxJogadores->aJogar == 1){
                        auxJogadores->admin = 1;
                        strcpy(msg->comando,"É o novo administrador!");
                        //Envia mensagem
                        kill(auxJogadores->pid_cliente,SIGUSR1);
                        sprintf(fifo_name,CLIENT_FIFO,auxJogadores->pid_cliente);
                        escreveFifo(fifo_name,*msg);

                        break;
                    }
                    auxJogadores = auxJogadores->Proximo;
                }
            }
            else
            {
                msg->estado = 2;
                strcpy(msg->comando,"Desistiu do jogo!");
                //Abre cliente e envia-lhe mensagem
                sprintf(fifo_name, CLIENT_FIFO,msg->pid_cliente);
                escreveFifo(fifo_name,*msg);

                auxJogadores->aJogar = 0;
                auxJogadores->admin = 0;  

                sprintf(temp,"O jogador '%s' desistiu do jogo!",auxJogadores->nome);
                manda_mensagem_todos(temp,msg->pid_cliente,A_JOGAR);
            }
        }
        else{
            strcpy(msg->comando,"Só quando estiver num jogo é que pode utilizar este comando!");
            //Abre cliente e envia-lhe mensagem
            sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
            escreveFifo(fifo_name,*msg);
        }
    }
    else if(strcasecmp(cmd[0],"norte") == 0){
        if(jogoDecorrer == 1){
            strcpy(msg->comando,"Erro!");
            auxJogadores = jogadores;
            while(auxJogadores != NULL){
                if(auxJogadores->pid_cliente == msg->pid_cliente){
                    x = auxJogadores->X;
                    y = auxJogadores->Y;

                    if(Lab.s[x][y].portaN == 1){
                        x--;
                        auxJogadores->X = x;
                        strcpy(msg->comando,"Movimento bem sucedido!");
                        break;  
                    }
                    else
                    {
                        strcpy(msg->comando,"Impossivel mover para norte!");
                        break;  
                    }
                }
                auxJogadores = auxJogadores->Proximo;
            }   
        }
        else
            strcpy(msg->comando,"Só pode executar este comando quando o jogo estiver a decorrer!");
        
        //Abre cliente e envia-lhe mensagem
        sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
        escreveFifo(fifo_name,*msg);
    }
    else if(strcasecmp(cmd[0],"sul") == 0){
        if(jogoDecorrer == 1){
            strcpy(msg->comando,"Erro!");
            auxJogadores = jogadores;
            while(auxJogadores != NULL){
                if(auxJogadores->pid_cliente == msg->pid_cliente){
                    x = auxJogadores->X;
                    y = auxJogadores->Y;

                    if(Lab.s[x][y].portaS == 1){
                        x++;
                        auxJogadores->X = x;
                        strcpy(msg->comando,"Movimento bem sucedido!");
                        break;  
                    }
                    else
                    {
                        strcpy(msg->comando,"Impossivel mover para sul!");
                        break;  
                    }
                }
                auxJogadores = auxJogadores->Proximo;
            }
        }
        else
            strcpy(msg->comando,"Só pode executar este comando quando o jogo estiver a decorrer!");

        //Abre cliente e envia-lhe mensagem
        sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
        escreveFifo(fifo_name,*msg);
    }
    else if(strcasecmp(cmd[0],"este") == 0){
        if(jogoDecorrer == 1){
            strcpy(msg->comando,"Erro!");
            auxJogadores = jogadores;
            while(auxJogadores != NULL){
                if(auxJogadores->pid_cliente == msg->pid_cliente){
                    x = auxJogadores->X;
                    y = auxJogadores->Y;

                    if(Lab.s[x][y].portaE == 1){
                        y++;
                        auxJogadores->Y = y;
                        strcpy(msg->comando,"Movimento bem sucedido!");
                        break;  
                    }
                    else{
                        strcpy(msg->comando,"Impossivel mover para este!");
                        break;  
                    }

                }
                auxJogadores = auxJogadores->Proximo;
            }
        }
        else
            strcpy(msg->comando,"Só pode executar este comando quando o jogo estiver a decorrer!");

        //Abre cliente e envia-lhe mensagem
        sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
        escreveFifo(fifo_name,*msg);
    }
    else if(strcasecmp(cmd[0],"oeste") == 0){
        if (jogoDecorrer == 1){
            strcpy(msg->comando,"Erro!");
            auxJogadores = jogadores;
            while(auxJogadores != NULL){
                if(auxJogadores->pid_cliente == msg->pid_cliente){
                    x = auxJogadores->X;
                    y = auxJogadores->Y;

                    if(Lab.s[x][y].portaO == 1){
                        y--;
                        auxJogadores->Y = y;
                        strcpy(msg->comando,"Movimento bem sucedido!");
                        break;  
                    }
                    else
                    {
                        strcpy(msg->comando,"Impossivel mover para oeste!");
                        break;  
                    }
                }
                auxJogadores = auxJogadores->Proximo;
            }
        }
        else
            strcpy(msg->comando,"Só pode executar este comando quando o jogo estiver a decorrer!");

        //Abre cliente e envia-lhe mensagem
        sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
        escreveFifo(fifo_name,*msg);
    }
    else
    {
        strcpy(msg->comando,"O comando não existe!");
        //Abre cliente e envia-lhe mensagem
        sprintf(fifo_name, CLIENT_FIFO, msg->pid_cliente);
        escreveFifo(fifo_name,*msg);
    }

}