Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int main()
- {
- int numJogadores = 0;
- int rodadas = 1;
- typedef struct {
- char nome[100];
- int pontos;
- int fazer;
- int posicao;
- int ativo;
- } Jogador;
- // Array de estrutura para armazenar um conjunto de informações relacionada a cada jogador
- Jogador jogador[50];
- while(1) {
- printf("Digite a quantidade de Jogadores: ");
- scanf("%d",&numJogadores);
- if (numJogadores < 2) {
- printf("Obs. Deve ter no minimo 2 jogadores e no máximo 50\n");
- } else {
- break;
- }
- }
- // Inicializa o vetor com valores padrão
- for(int i=0; i < numJogadores; i++) {
- strcpy(jogador[i].nome, "NULL");
- jogador[i].pontos = 0;
- jogador[i].fazer = 0;
- jogador[i].posicao = i;
- jogador[i].ativo = 1;
- }
- // Captura o nome dos jogadores
- for(int i = 0; i < numJogadores; i++) {
- printf(" Digite o nome do jogador %d: ", (i + 1));
- scanf("%s%*c", &jogador[i].nome);
- }
- while(1) {
- int jogadorPonto = 0; // Variável para identificar o jogador que fez ponto
- int jogadoresPonto = 0; // Variável para identificar se pelo menos um jogador pontuou
- int verificaPontos = 0; // Variável para sair do laço de pontuação
- printf("\n** Rodada %d **\n\n", rodadas);
- // Percorre a lista de jogadores para capturar os índices
- for (int i = 0; i < numJogadores; i++) {
- // Busca o jogador baseado na posicão de jogada
- for (int i2 = 0; i2 < numJogadores; i2++) {
- // Ignora o jogador caso ele já esteja fora do jogo
- if (jogador[i2].ativo == 0) continue;
- if (jogador[i2].posicao == i) {
- printf("Digite quantas '%s' irá fazer: ", jogador[i2].nome);
- scanf("%d", &jogador[i2].fazer);
- }
- }
- }
- // Lista os jogadores e seus pontos
- for (int i = 0; i < numJogadores; i++) {
- // Ignora o jogador caso ele já esteja fora do jogo
- if (jogador[i].ativo == 0) continue;
- printf("\n%d - %s = %d ponto(s)", (jogador[i].posicao + 1), jogador[i].nome, jogador[i].pontos);
- }
- printf("\n");
- // Atribue pontos ao jogador
- while(verificaPontos == 0) {
- printf("Informe o número do jogador que pontuou, ou 0 (zero) para continuar: ");
- scanf("%d", &jogadorPonto);
- if (jogadorPonto == 0 && jogadoresPonto == 0) {
- printf("Pelo menos um dos jogadores deve pontuar");
- continue;
- } else if (jogadorPonto == 0) {
- verificaPontos++;
- continue;
- }
- // Atribue o ponto ao jogador selecionado
- for (int i = 0; i < numJogadores; i++) {
- if (jogador[i].posicao == (jogadorPonto - 1)) {
- jogador[i].pontos++;
- }
- }
- jogadoresPonto++;
- }
- // Verifica se alcançou sete pontos
- for (int i = 0; i < numJogadores; i++) {
- if (jogador[i].pontos == 7 && jogador[i].ativo == 1) {
- jogador[i].ativo = 0;
- printf("\n***** O jogador '%s' perdeu e está fora *****\n", jogador[i].nome);
- }
- }
- // Ordena a lista para uma nova rodada
- for (int i = 0; i < numJogadores; i++) {
- if (jogador[i].posicao == 0) {
- jogador[i].posicao = numJogadores - 1;
- } else {
- jogador[i].posicao--;
- }
- }
- rodadas++;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement