Untitled
unknown
plain_text
20 days ago
13 kB
3
Indexable
#include <stdio.h> #include <stdlib.h> #include <ctype.h> // Desafio Super Trunfo - Países // Tema 2 - Comparação das Cartas // Este código inicial serve como base para o desenvolvimento do sistema de comparação de cartas de cidades. // Siga os comentários para implementar cada parte do desafio. #define MAX_CARTAS 32 typedef struct { char Estado; char CodigoDaCidade[3]; char NomeDaCidade[50]; int Populacao; float Area; float DensidadePopulacional; double PIB; float PercaCapita; int PontosTuristicos; float SuperPoder; } CartaType; // variável que representa o valor máximo possível de cartas cadastradas CartaType listaDeCartas[MAX_CARTAS]; // funcão para criar uma nova carta CartaType criarCarta() { CartaType carta; printf("Digite o Estado entre A e H: "); scanf(" %c", &carta.Estado); printf("Digite o código da cidade entre 1 e 4: "); scanf("%s", carta.CodigoDaCidade); printf("Digite o nome da Cidade: "); scanf(" %[^\n]", carta.NomeDaCidade); printf("Digite a população da cidade: "); scanf("%d", &carta.Populacao); printf("Digite a Área da cidade: "); scanf("%f", &carta.Area); printf("Digite o PIB da cidade: "); scanf("%lf", &carta.PIB); printf("Digite a quantidade de pontos turísticos da cidade: "); scanf("%d", &carta.PontosTuristicos); carta.PercaCapita = (carta.PIB * 1000000000) / carta.Populacao; carta.DensidadePopulacional = carta.Populacao / carta.Area; carta.SuperPoder = carta.Populacao + carta.Area + carta.PIB + carta.PontosTuristicos + carta.PercaCapita + (1.0f / carta.DensidadePopulacional); return carta; } // Função que retorna a carta com todos os valores que foram requeridos formatada como pedido void imprimirCarta(CartaType C) { printf("\nEstado: %c", toupper(C.Estado)); printf("\nCódigo da Carta: %c%02d", toupper(C.Estado), atoi(C.CodigoDaCidade)); printf("\nNome da Cidade: %s", C.NomeDaCidade); printf("\nPopulação: %d", C.Populacao); printf("\nÁrea: %.2f km²", C.Area); printf("\nDensidade Populacional: %.2f pessoas/km²", C.DensidadePopulacional); printf("\nPIB: %.2f bilhões de reais", C.PIB); printf("\nPIB per Capita: %.2f reais", C.PercaCapita); printf("\nNúmero de Pontos Turísticos: %d\n", C.PontosTuristicos); printf("\nSeu SuperPoder é de: %.2f\n", C.SuperPoder); } int main() { CartaType carta; // Definição das variáveis para armazenar as propriedades das cidades // Você pode utilizar o código do primeiro desafio int opcao; int opcaoMenu; int totalCartas = 0; double pontuacao1 = 0, pontuacao2 = 0; // Implemente a lógica para solicitar ao usuário que insira os dados das cidades // utilizando a função scanf para capturar as entradas. // utilize o código do primeiro desafio // CRIAÇÃO DA CARTA DO PRIMEIRO JOGADOR// // RETORNO DA PRIMEIRA CARTA// // // CRIAÇÃO DA CARTA DO SEGUNDO JOGADOR// // // RETORNO DA CARTA DO SEGUNDO JOGADOR // // Exemplo: // printf("Digite o código da cidade: "); // scanf("%s", codigo); // (Repita para cada propriedade) // Comparação de Cartas: // Desenvolva a lógica de comparação entre duas cartas. // Utilize estruturas de decisão como if, if-else para comparar atributos como população, área, PIB, etc. do { printf("\n----------***Bem-Vindo ao Jogo Super-Trunfo***----------\n\n"); printf("Selecione uma das opções abaixo: \n"); printf("1. Cadastrar carta\n"); printf("2. Mostrar cartas\n"); printf("3. Compare os atributos das cartas\n"); printf("4. Sobre o Jogo\n"); printf("5. Sair do Jogo\n"); scanf("%d", &opcaoMenu); switch (opcaoMenu) { case 1: // Cadastro das Cartas: printf("\nDigite os dados da carta (%d): \n", totalCartas + 1); listaDeCartas[totalCartas] = criarCarta(); totalCartas++; break; case 2: // Retorno das cartas cadastradas devidamente formatadas if (totalCartas == 0) { printf("\nNenhuma carta cadastrada ainda!!"); } else { printf("\n--------Cartas Cadastradas--------\n"); for (int i = 0; i < totalCartas; i++) { printf("\nCarta (%d)", i + 1); imprimirCarta(listaDeCartas[i]); printf("\n-----------------------------------"); } } break; case 3: // Escolha de atributos // if (totalCartas < 2) { printf("É necessário pelo menos duas cartas cadastradas para comparar!\n"); break; } CartaType carta1 = listaDeCartas[0]; CartaType carta2 = listaDeCartas[1]; do { printf("Escolha com qual dos atributos você quer competir:\n"); printf("1. População\n"); printf("2. Área\n"); printf("3. PIB\n"); printf("4. Per Capita\n"); printf("5. Densidade Populacional\n"); printf("6. Pontos Turísticos\n"); printf("7. Super Poder\n"); printf("8. Mostrar Carta vencedora!\n"); printf("9. Voltar para o menu do Jogo\n"); scanf("%d", &opcao); switch (opcao) { case 1: printf("População Carta 1 é: %d - População Carta 2 é: %d", carta1.Populacao, carta2.Populacao); if (carta1.Populacao > carta2.Populacao) { printf("\nCarta 1 venceu na propriedade: População\n\n"); pontuacao1 += carta1.Populacao; } else if (carta1.Populacao < carta2.Populacao) { printf("\nCarta 2 venceu na propriedade: População\n\n"); pontuacao2 += carta2.Populacao; } else { printf("Empate no atributo População!!!\n\n"); } break; case 2: printf("Área Carta 1 é: %.2f - Área Carta 2 é: %.2f", carta1.Area, carta2.Area); if (carta1.Area > carta2.Area) { printf("\nCarta 1 venceu na propriedade: área\n\n"); pontuacao1 += carta1.Area; } else if (carta1.Area < carta2.Area) { printf("\nCarta 2 venceu na propriedade: área\n\n"); pontuacao2 += carta2.Area; } else { printf("Empate no atributo área!!!\n\n"); } break; case 3: printf("PIB Carta 1 é: %.2lf - PIB Carta 2 é: %.2lf", carta1.PIB, carta2.PIB); if (carta1.PIB > carta2.PIB) { printf("\nCarta 1 venceu na propriedade: PIB\n\n"); pontuacao1 += carta1.PIB; } else if (carta1.PIB < carta2.PIB) { printf("\nCarta 2 venceu na propriedade: PIB\n\n"); pontuacao2 += carta2.PIB; } else { printf("Empate no atributo PIB!!!\n\n"); } break; case 4: printf("PIB Per Capita Carta 1 é: %.2f - PIB Per Capita Carta 2 é: %.2f", carta1.PercaCapita, carta2.PercaCapita); if (carta1.PercaCapita > carta2.PercaCapita) { printf("\nCarta 1 venceu na propriedade: PIB Per Capita\n\n"); pontuacao1 += carta1.PercaCapita; } else if (carta1.PercaCapita < carta2.PercaCapita) { printf("\nCarta 2 venceu na propriedade: PIB Per Capita\n\n"); pontuacao2 += carta2.PercaCapita; } else { printf("Empate no atributo PIB Per Capita!!!\n\n"); } break; case 5: printf("Densidade Populacional Carta 1 é: %.2f - Densidade Populacional Carta 2 é: %.2f", carta1.DensidadePopulacional, carta2.DensidadePopulacional); if (carta1.DensidadePopulacional < carta2.DensidadePopulacional) { printf("\nCarta 1 venceu na propriedade: Densidade Populacional\n\n"); pontuacao1 += carta1.DensidadePopulacional; } else if (carta1.DensidadePopulacional > carta2.DensidadePopulacional) { printf("\nCarta 2 venceu na propriedade: Densidade Populacional\n\n"); pontuacao2 += carta2.DensidadePopulacional; } else { printf("Empate no atributo Densidade Populacional!!!\n\n"); } break; case 6: printf("Pontos Turísticos Carta 1 é: %d - Pontos Turísticos Carta 2 é: %d", carta1.PontosTuristicos, carta2.PontosTuristicos); if (carta1.PontosTuristicos > carta2.PontosTuristicos) { printf("\nCarta 1 venceu na propriedade: Pontos Turísticos\n\n"); pontuacao1 += carta1.PontosTuristicos; } else if (carta1.PontosTuristicos < carta2.PontosTuristicos) { printf("\nCarta 2 venceu na propriedade: Pontos Turísticos\n\n"); pontuacao2 += carta2.PontosTuristicos; } else { printf("Empate no atributo Pontos Turísticos!!!\n\n"); } break; case 7: printf("Super Poder Carta 1 é: %.2f - Super Poder Carta 2 é: %.2f", carta1.SuperPoder, carta2.SuperPoder); if (carta1.SuperPoder > carta2.SuperPoder) { printf("\nCarta 1 venceu na propriedade: PIB\n\n"); pontuacao1 += carta1.SuperPoder; } else if (carta1.SuperPoder < carta2.SuperPoder) { printf("\nCarta 2 venceu na propriedade: PIB\n\n"); pontuacao2 += carta2.SuperPoder; } else { printf("Empate no atributo Super Poder!!!\n\n"); } break; case 8: printf("\nPontuação da Carta 1: %f\n", pontuacao1); printf("\nPontuação da Carta 2: %f\n", pontuacao2); if (pontuacao1 > pontuacao2) { printf("\nCidade %s venceu\n", carta1.NomeDaCidade); } else if (pontuacao2 > pontuacao1) { printf("\nCidade %s venceu\n", carta1.NomeDaCidade); } else { printf("\nHouve empate!"); } break; case 9: printf("Voltando ao menu principal...\n"); break; default: printf("Opção inválida! Escolha um número de 1 a 8.\n"); break; } } while (opcao != 9); getchar(); break; case 4: printf("***---------- REGRAS DO JOGO ----------***\n"); printf("\nPara Jogar é necessário castrar pelo menos 2 cartas antes para que seja possível a comparação de uma com a outra\n"); break; case 5: printf("Sair do Jogo...\n"); break; default: printf("Opção Inválida\n"); break; } } while (opcaoMenu != 5); // menu principal finalização // Exibição dos Resultados: // Após realizar as comparações, exiba os resultados para o usuário. // Certifique-se de que o sistema mostre claramente qual carta venceu e com base em qual atributo. // Exemplo: return 0; }
Editor is loading...
Leave a Comment