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", &participantes); } while (participantes <= 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 =)
>> printf("\nObrigado por me utilizar.\n");
ResponderExcluirSua piranha arrombada e oferecida!
>> PS3: Esse eu to indo jogar agora =)
*tu run tun tssssssh*
Fora que eu não verifico se o malloc retornou um valor correto né? Que feio um ex-monitor fazer isso =)
ResponderExcluiraaaaaaaaaahhhhhnnnnnnn....
ResponderExcluirtá
até onde só falou do jogo eu entendi bem! auhauhauha
que maneira de se divertir... não entendo essas pessoas... programar brincadeira de bebado...
tsc tsc tsc