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:
Aqui vai o código:
Spoiler
#include<stdio.h>//#include <stdlib.h>//#include <time.h>#define TRUE 1#define FALSE 0int 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);intMorreram(int jogadores[],int qnt);intGanhou(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;intPassou=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)]){case0: 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;case10: 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;case20: 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;case30: 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);}}}}intMorreram(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;}}intGanhou(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]);// 23int 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--;}elseif(count[1]>0){ vet[sortPos]=20;// Restart count[1]--; total--;}elseif(count[2]>0){ vet[sortPos]=30;// Stop / Congela count[2]--; total--;}elseif(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()). */
info
Grupo: Marquês
Registrado: 25/09/10
Posts: 1.3k
Reputação: +446
Gênero: Masculino
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:
Aqui vai o código:
Editado Julho 8 por Caronte