Início > Untagged > Zum para Leigos

Zum para Leigos

Esse post foi inspirado pelo atual post do blog do Jan, o Cinco Síncopes, sobre brincadeiras sociais entre amigos. Lembrei de um jogo que teve em um churrasco, o Zum, que eu já tinha colocado no Google Docs mas não havia disponibilizado para todos.

Pois bem, esse erro foi corrigido e vos deixo com Zum!

Zum é um jogo de bêbados. Aprendi isso em um dos churrascos do pessoal dos primeiros períodos, esse backup é de maio de 2006. Como qualquer jogo de bêbado, é feito para quem errar tomar uma dose da bebida em questão.

Os jogadores sentam-se em roda e decidem aleatoriamente quem começa. Cada jogador pode dizer as palavras válidas que indicam qual é o próximo participante. O sentido normal é o horário.

Regras:

Zum – Passa para o próximo jogador no sentido atual.
Lombada – Pula um jogador no sentido atual.
I (Ih) – Inverte o sentido (de horário para anti-horário) e passa para o próximo jogador no novo sentido.
Lombadinha – Pula um jogador para trás, mas não inverte o sentido.

O jogador que errar ou falar fora de sua vez deve tomar a bebida. Preenche-se novamente o copo e é dado início a uma nova rodada a partir do jogador que errou.

Esse programa foi feito numa manhã de sábado pós-churrasco para curar a ressaca de forma lúdica e não se preocupa em manter uma boa estrutura de código ou permitir reinício da partida.

#include <stdio.h>;
#include <stdlib.h>;
#include <string.h>;
#include <math.h>;

/* Funcoes de jogo e impressao */
void zum (int* posicao, int* flag_i){
   if (*flag_i == 1){
      *posicao -= 1;
      return;
   }
   else{
      *posicao += 1;
      return;
   }
}

void lombada (int* posicao, int* flag_i){
   if (*flag_i == 1){
      *posicao -= 2;
      return;
   }
   else{
      *posicao += 2;
      return;
   }
}

void i (int* posicao, int* flag_i){
   if (*flag_i == 0){
      *posicao -= 1;
      *flag_i = 1;
      return;
   }
   else{
      *posicao += 1;
      *flag_i = 0;
      return;
   }
}

void lombadinha (int* posicao, int* flag_i){
   i(posicao, flag_i);
   lombada(posicao, flag_i);
   i(posicao, flag_i);
   return;
}

int analisa_jogada(char* jogada, int* posicao, int* flag_i){
   if ((strcmp(jogada, "zum") == 0) || (strcmp(jogada, "ZUM") == 0)){
      zum(posicao, flag_i);
      return 0;
   }
   else{
      if ((strcmp(jogada, "lombada") == 0) || (strcmp(jogada, "LOMBADA") == 0)){
         lombada(posicao, flag_i);
         return 0;
      }
      else{
         if ((strcmp(jogada, "i") == 0) || (strcmp(jogada, "I") == 0)){
            i(posicao, flag_i);
            return 0;
         }
         else{
            if ((strcmp(jogada, "lombadinha") == 0) || (strcmp(jogada, "LOMBADINHA") == 0)){
               lombadinha(posicao, flag_i);
               return 0;
            }
            else{
               return 1;
            }
         }
      }
   }
}

void analisa_posicao (int* numero, int* posicao){
   if (*posicao < 0){
      *posicao = *numero - fabs(*posicao);
      return;
   }
   else{
      if (*posicao >= *numero){
         *posicao = *posicao - *numero;
         return;
      }
   }
}

void atualiza (int* n, int* posicao, int* vetor){
   int i;
   for(i = 0; i < *n; i++){
      if (i == *posicao){
         vetor[i] = 1;
      }
      else{
         vetor[i] = 0;
      }
   }
   return;
}

void imprime (int *n, int* vetor){
   int i;
   printf("\n");
   for (i = 0; i < *n; i++){
      printf("%2d ", vetor[i]);
   }
   printf("\n");
   for (i = 0; i < *n; i++){
      printf("%2d ", i+1);
   }
   printf("\n");
   return;
}

/* Principal */
int main (void){
   int participantes = -1;
   char jogada[11];
   int* jogadores;
   int flag_i = 0;
   int posicao = 0;
   int rodada = 0;
   int em_jogo = 1;

   printf("\n*******************\n*\tZum\t  *\n*******************\n\n");

   do{
      printf("Entre com o numero de jogadores: ");
      scanf("%d", &amp;participantes);
   } while (participantes &lt;= 0);

   jogadores = (int*)malloc(participantes*sizeof(int));

   /* Loop */

   while(em_jogo == 1){

      printf("\nRodada %d:\n", rodada);
      atualiza(&participantes, &posicao, jogadores);
      imprime(&participantes,jogadores);
      printf("\nJogadas possiveis:\nzum\t\ti\nlombada\t\tfim\nlombadinha\n\n");
      printf("Entre com a jogada: ");
      scanf(" %10[^\n]", jogada);

      if ((strcmp("fim",jogada) == 0) || (strcmp("FIM",jogada) == 0)){
         break;
      }
      else{
         if (analisa_jogada(jogada, &posicao, &flag_i) == 1){
            printf("\nJogada invalida!\n");
            continue;
         }
         else{
            analisa_posicao(&participantes, &posicao);
         }
      }
      rodada++;
   }

   free(jogadores);
   printf("\nObrigado por me utilizar.\n");

   return 0;
}

PS: Esse syntax highlighting eu devo ao Google ter me indicado o site http://www.craftyfella.com/2010/01/syntax-highlighting-with-blogger-engine.html após alguns segundos de pesquisa. Nesse outro link, há mais opções de brushes.

PS2: Eu to devendo as regras do Idiota. Um dia eu escrevo direito e posto aqui com direito a imagens.

PS3: Esse eu to indo jogar agora =)

Anúncios
Categorias:Untagged Tags:
  1. maio 22, 2010 às 20:39

    >> printf("\nObrigado por me utilizar.\n");Sua piranha arrombada e oferecida!>> PS3: Esse eu to indo jogar agora =) *tu run tun tssssssh*

  2. maio 24, 2010 às 06:35

    Fora que eu não verifico se o malloc retornou um valor correto né? Que feio um ex-monitor fazer isso =)

  3. maio 28, 2010 às 03:41

    aaaaaaaaaahhhhhnnnnnnn….táaté onde só falou do jogo eu entendi bem! auhauhauhaque maneira de se divertir… não entendo essas pessoas… programar brincadeira de bebado…tsc tsc tsc

  1. No trackbacks yet.

E o seu comentário?

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: