int main(){ colocaAcentos(); Pilha* pilhasNormais[MAX_PILHAS_NORMAIS]; Pilha* pilhasSuperiorDireita[MAX_PILHAS_SUPERIOR_DIREITA]; Carta cartasSuperiorEsquerda[MAX_CARTAS_SUPERIOR_ESQUERDA]; inicializaCartasComValorPadrao(cartasSuperiorEsquerda); criaPilhas(pilhasNormais, MAX_PILHAS_NORMAIS); criaPilhas(pilhasSuperiorDireita, MAX_PILHAS_SUPERIOR_DIREITA); leArquivo(pilhasNormais); unsigned short int jogadorVenceu = 0; char mensagemErro[100] = ""; unsigned short int jogadaJogador = 0; unsigned short int colunasFormadas = 0; while(!jogadorVenceu){ imprimeFreecell(pilhasNormais, pilhasSuperiorDireita, cartasSuperiorEsquerda); imprimeQuantidadeJogadasFeitas(jogadaJogador); char coluna_origem; char coluna_destino; mostraMensagemErro(mensagemErro); pedeMovimentoParaUsuario(&coluna_origem, &coluna_destino); Carta cartaColunaOrigem; short int indiceColunaOrigem = indiceLetra(coluna_origem); short int corCartaColunaOrigem; Carta cartaColunaDestino; short int indiceColunaDestino = indiceLetra(coluna_destino); short int corCartaColunaDestino; if(indiceColunaOrigem == -1 || indiceColunaDestino == -1){ strcpy(mensagemErro, "Voce inseriu uma coluna fora dos limites. Lembre-se: de [0 - 3], [X - Z], [A - H]"); } else { short int ondeColunaOrigemEsta = checaQualPilhaColunaEsta(coluna_origem); short int ondeColunaDestinoEsta = checaQualPilhaColunaEsta(coluna_destino); // [A-H] => [W-Z] if(ondeColunaOrigemEsta == 1 && ondeColunaDestinoEsta == 0){ movimentaNormalParaSuperiorEsquerda(cartasSuperiorEsquerda, pilhasNormais, indiceColunaOrigem, indiceColunaDestino, mensagemErro, &jogadaJogador); } // [A-H] => [A-H] else if(ondeColunaDestinoEsta == 1 && ondeColunaOrigemEsta == 1){ movimentaNormalParaNormal(pilhasNormais, indiceColunaOrigem, indiceColunaDestino, mensagemErro, &jogadaJogador); } // [W-Z] => [A-H] else if(ondeColunaOrigemEsta == 0 && ondeColunaDestinoEsta == 1){ movimentaSuperiorEsquerdaParaNormal(cartasSuperiorEsquerda, pilhasNormais, indiceColunaOrigem, indiceColunaDestino, mensagemErro, &jogadaJogador); } // [W-Z] => [W-Z] else if(ondeColunaDestinoEsta == 0 && ondeColunaOrigemEsta == 0){ movimentaSuperiorEsquerdaParaSuperiorEsquerda(cartasSuperiorEsquerda, indiceColunaOrigem, indiceColunaDestino, mensagemErro, &jogadaJogador); } // [W-Z] => [0-3] else if(ondeColunaOrigemEsta == 0 && ondeColunaDestinoEsta == 2){ movimentaSuperiorEsquerdaParaSuperiorDireita(cartasSuperiorEsquerda, pilhasSuperiorDireita, indiceColunaOrigem, indiceColunaDestino, mensagemErro, &jogadaJogador, &colunasFormadas); } // [A-H] => [0-3] else if(ondeColunaOrigemEsta == 1 && ondeColunaDestinoEsta == 2){ movimentaNormalParaSuperiorDireita(pilhasNormais, pilhasSuperiorDireita, indiceColunaOrigem, indiceColunaDestino, mensagemErro, &jogadaJogador, &colunasFormadas); } // Checa se o jogador formou as quatro pilhas do canto superior direito if(checaJogadorFormouTodasPilhas(colunasFormadas)){ jogadorVenceu = 1; } } } imprimeFreecell(pilhasNormais, pilhasSuperiorDireita, cartasSuperiorEsquerda); imprimeMensagemVencedor(jogadaJogador); pausaTela(); liberaPilhas(pilhasNormais, MAX_PILHAS_NORMAIS); liberaPilhas(pilhasSuperiorDireita, MAX_PILHAS_SUPERIOR_DIREITA); return 0; }
int main(){ lista *li; li = criaLista(); int opcao; while(1){ limpaTela(); colocaAcentos(); printf("[1] Adicionar Telefone \n[2] Imprimir Lista de telefones\n[3] Quantidade de telefones na lista\n[4] Remover ultimos\n[99] Sair\n\n"); limpaBuffer(); printf("Digite a opção desejada: "); scanf("%d",&opcao); if(opcao == 1){ int qntdTelefones,i; printf("Digite a quantidade de telefones que deseja inserir: "); limpaBuffer(); scanf("%d",&qntdTelefones); Telefone tel[qntdTelefones]; for(i=0; i<qntdTelefones; i++){ limpaBuffer(); printf("Digite o nome: "); gets(tel[i].nome); limpaBuffer(); printf("Digite a marca: "); gets(tel[i].marca); insereNaListaPrimeiro(li,tel[i]); } limpaTela(); }else if(opcao == 2){ limpaTela(); imprimeLista(li); pausaTela(); }else if(opcao == 3){ limpaTela(); int qntd; qntd = quantidadeElementosLista(li); printf("Quantidade de telefones cadastrados: %d\n",qntd); pausaTela(); }else if(opcao == 4){ int qntdRemocao,i; limpaBuffer(); printf("Digite a quantidade de telefones que deseja remover: "); scanf("%d",&qntdRemocao); for(i=0; i<qntdRemocao; i++){ removerNaListaPrimeiro(li); } }else if(opcao == 99){ char confirmacao[4]; limpaBuffer(); printf("Deseja mesmo sair? (sim ou nao): "); gets(confirmacao); if(strcmp(confirmacao,"sim")==0){ return 0; } } } destroiLista(li); return 0; }