Ir para conteúdo

Jogo de tabuleiro [Trabalhin da faculdade]


Caronte

Posts Recomendados

Olá, terminei o trabalho da faculdade com um pouco de facilidade, não precisei de muito tempo para fazer, mas queria que alguém visse se tem bugs, porque ainda não achei nenhum, depois de ter tirado um monte.

 

O que é para fazer: 

59607e667038c_Semttulo.jpg.66e2c29fcc0e83f3000a347530460e7c.jpg

 

 

Aqui vai o código:

 

Spoiler
#include <stdio.h>//#include <stdlib.h>//#include <time.h>#define TRUE 1#define FALSE 0 int rolarDado();int genRandomEspecials(int vet[], int qnt, int holePos, int restartPos, int stopPos, int diceBackPos);int selecionarJogadores(int min, int  max);int createVetJogadores(int njog, int vet[], int qnt);int Morreram(int jogadores[] ,int qnt);int Ganhou(int jogadores[], int qnt, int final);void fillVetor(int vet[], int qnt, int num);void printVet(int vet[], int qnt);// Buraco://id=10 qnt=1// Restart/Puniçao: //id=20 qnt=2// Stop/Congela: //id=30 qnt=5// GoBack: //id=40  qnt=15int main() {	int caminho[70];	int jogadoresPos[5];	int njogadores;	int maxjogadores = 5; 	srand(time(NULL) );			fillVetor(caminho, 70, 0);	genRandomEspecials(caminho, 70, 1, 2, 5, 15);	printVet(caminho, 70);		printf("\n\n\n");		njogadores = selecionarJogadores(2, 5);	jogadoresPos[5] = createVetJogadores(njogadores, jogadoresPos, maxjogadores);		printf("%d Jogadores selecionados\n\n", njogadores);	printVet(jogadoresPos, 5);		printf("\n\n");	printf("Jogo iniciado: \n\n");		int dado = rolarDado();	int vez = 0;	int Passou = 0;		while(Morreram(jogadoresPos, 5) == FALSE && Ganhou(jogadoresPos, 5, 69) == FALSE && Passou != 1){		dado = rolarDado();		if(jogadoresPos[ vez ] != -1){			if (jogadoresPos[ vez ] > -1){				if(jogadoresPos[vez]+dado > 69){					printf("--Rolou %d no dado e passou a ultima casa\n", dado);					dado = (69-jogadoresPos[vez]);				}				switch(  caminho[ (jogadoresPos[ vez ]+ dado) ] ){					case 0:						printf("Jogador % andar %d casas\n[saindo da casa %d para casa %d]\n\n", vez+1, dado, jogadoresPos[vez], jogadoresPos[vez]+dado);						jogadoresPos[vez] += dado; 						system("PAUSE>>null");						vez++;						break;					case 10:						printf("Jogador % [saindo da casa %d para casa %d]\n -> caiu no buraco, fim de jogo!\n\n", vez+1, jogadoresPos[vez], jogadoresPos[vez]+dado);						jogadoresPos[vez] = -1;						system("PAUSE>>null");						vez++;						break;					case 20: 						printf("Jogador % andar %d casas\n[saindo da casa %d para casa %d]\n", vez+1, dado, jogadoresPos[vez], jogadoresPos[vez]+dado);						printf(" -> Casa %d eh casa de penalidade: jogador %d volta ao inicio do jogo\n\n", jogadoresPos[vez]+dado, vez+1);						system("PAUSE>>null");						jogadoresPos[vez] = 0;						vez++;						break;					case 30:						printf("Jogador % andar %d casas\n[saindo da casa %d para casa %d]\n", vez+1, dado, jogadoresPos[vez], jogadoresPos[vez]+dado);						printf("ficar parado por 1 rodada\n\n" );						jogadoresPos[vez] = (jogadoresPos[vez] + dado) * -100;						system("PAUSE>>null");						vez++;						break;					}			}			else			{				printf("---Jogador %d esta parado nesta rodada.\n\n", vez+1);				jogadoresPos[vez] /= 100;				jogadoresPos[vez] *= -1;							vez++;			}		}		else 		{	 		vez += 1;		}				if(vez >= njogadores){			vez = 0;		}	}		if(Morreram(jogadoresPos, 5) == TRUE){		int i;		for(i=0;i<5;i++){			if(jogadoresPos[i] != -1){				return printf("Parabens ao jogador %d, foi o unico restante e ganhou o jogo.", i+1);			}		}	}	if(Ganhou(jogadoresPos, 5, 69) == TRUE){		int i;		for(i=0;i<5;i++){			if(jogadoresPos[i] >= 69){				return printf("Parabens ao jogador %d, foi o primeiro a chegar na ultima casa.", i+1);			}		}	}	}int Morreram(int jogadores[] ,int qnt) { 	int i, jogadoresvivos=0;	for(i=0;i<qnt;i++){		if(jogadores[i] != -1){			jogadoresvivos++;		}	}	if(jogadoresvivos <= 1){		return TRUE;	}	else {		return FALSE;	}}int Ganhou(int jogadores[], int qnt, int final) { 	int i;	for(i=0;i<qnt;i++){		if(jogadores[i] == final){			return TRUE;		}	}	return FALSE;}int createVetJogadores(int njog, int vet[], int qnt){	int t;	for(t=0;t<5;t++){				if(njog > 0){			vet[t] = 0;			njog--;		}		else{			vet[t] = -1;		}	}}int selecionarJogadores(int min, int  max){	int nj;	printf("\n\n*Digite um numero de %d-%d jogadores: ", min, max);	scanf("%d", &nj);	if (nj >= 2 && nj <= 5){		return nj;	}	else { 		system("cls");		printf("\n!!! Numero invalido de jogadores !!!");				return selecionarJogadores(min, max);	} 	}void fillVetor(int vet[], int qnt, int num){	int i;	for(i=0;i<qnt;i++){		vet[i] = num;	}}int genRandomEspecials(int vet[], int qnt, int holePos, int restartPos, int stopPos, int diceBackPos){	int i;	int count[] = {holePos, restartPos, stopPos, diceBackPos};	int total = (count[0] + count[1] + count[2] + count[3]); // 23	int sortPos = rand() % 68 + 1;	srand( (unsigned)time(NULL) );		while(total != 0){		sortPos = rand() % 68 + 1;		if(vet[sortPos] == 0){						if(count[0] > 0){				vet[sortPos] = 10; // Buraco				count[0]--;  				total--;			}			else if (count[1] > 0){				vet[sortPos] = 20; // Restart				count[1]--;  				total--;			}			else if (count[2] > 0){				vet[sortPos] = 30; // Stop / Congela				count[2]--;				total--;			}			else if (count[3] > 0){				vet[sortPos] = 40; // GoBack				count[3]--;				total--;							}		}	}}void printVet(int vet[], int qnt){	int i;	printf("{");	for(i=0;i<qnt;i++){		i == qnt-1 ?  printf("%d", vet[i]) :  printf("%d, ", vet[i]);	}	printf("}");}int rolarDado(){//	srand(time(NULL));	int dado = rand() % 6 + 1;	return dado;}/*1 buraco, representando o final do jogo para o jogador que cair no mesmo;2 casas com a punição de voltar para o início do jogo; 5 casas que deixarão o jogador parado por uma rodada;15 casas que exigirão que o jogador volte N casas, onde N será definido pelo arremesso de um dado (função rand()). */

 

 

59607e667038c_Semttulo.jpg.66e2c29fcc0e83f3000a347530460e7c.jpg

Editado por Caronte
Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...