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; }
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(); }
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]); } } }
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; }
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; }
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); }
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"); } }
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; }
//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); } }