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