Untitled

 avatar
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