//Funcao que simula o duelo entre os jogadores 1 e 2 void duelo(struct deck *jogador1, struct deck *jogador2, struct deck *aux, struct dados *dados) { struct carta cartaaux, carta1, carta2; int jogadas=0; clock_t start, end; clock_t diff; start=clock(); while(tamanho(jogador1)!=0 && tamanho(jogador2)!=0) { carta1 = desenfileira(jogador1); carta2 = desenfileira(jogador2); if(carta1.valor > carta2.valor){ while(tamanho(aux)!=0){ cartaaux = desenfileira(aux); enfileira(cartaaux.valor, cartaaux.naipe, jogador1); } enfileira(carta1.valor, carta1.naipe, jogador1); enfileira(carta2.valor, carta2.naipe, jogador1); }else if(carta1.valor < carta2.valor){ while(tamanho(aux)!=0){ cartaaux = desenfileira(aux); enfileira(cartaaux.valor, cartaaux.naipe, jogador2); } enfileira(carta1.valor, carta1.naipe, jogador2); enfileira(carta2.valor, carta2.naipe, jogador2); }else{ if(tamanho(aux)!=0){ carta1 = desenfileira(jogador1); carta2 = desenfileira(jogador2); enfileira(carta1.valor, carta1.naipe, aux); enfileira(carta2.valor, carta2.naipe, aux); } enfileira(carta1.valor, carta1.naipe, aux); enfileira(carta2.valor, carta2.naipe, aux); } jogadas++; } end=clock(); diff = (end-start); printf("Foram feitas %d jogadas\n", jogadas); printf("A duracao foi de %lu milisegundos\n", diff); insereDados(diff, jogadas, dados); }
void alteraLista(Lista *original, Lista *alterada) { destroyLista(alterada); Fila letras; iniciaFila(&letras); Pilha numeros; iniciaPilha(&numeros); // analisa os elementos da lista original struct elementoLista *aux = original->inicio; while(aux != NULL) { if(isalpha(aux->info)) enfileira(&letras, aux->info); else if(isdigit(aux->info)) empilha(&numeros, aux->info); else printf("Invalid character (%c).\n", aux->info); aux = aux->next; } //adiciona os valores a lista alterada while(emptyFila(&letras) != 1) pushBackLista(alterada, desenfileira(&letras)); while(sizePilha(&numeros) != 0) pushBackLista(alterada, desempilha(&numeros)); destroyFila(&letras); destroyPilha(&numeros); }
//Funcao que monta os decks dos jogadores 1 e 2 void distribui(struct deck *jogador1, struct deck *jogador2, struct carta *primeira){ struct carta *aux; int i=0; aux = primeira; for(i=0;i<26;i++){ enfileira(aux->valor, aux->naipe, jogador1); aux = aux->prox; } for(i=26;i<52;i++){ enfileira(aux->valor, aux->naipe, jogador2); aux = aux->prox; } }
// insereDisciplina: enfileira a disciplina informada na fila void insereDisciplina(tFila *f){ tDisciplina disciplina; cabecalho("Cadastro"); printf("\t\tCodigo: "); fflush(stdin); scanf("%d", &disciplina.codigo); printf("\t\tNome da Disciplina: "); fflush(stdin); gets(disciplina.nome); printf("\t\tCarga Horaria: "); fflush(stdin); scanf("%f", &disciplina.cargaHoraria); // enfileira a disciplina na fila enfileira(disciplina, f); }