Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Camila Magalhães - RA: 08105380
- Patricia Boselli - RA: 08103744
- Camila Lopes - RA: 08110183
- Juliana Oliveira - RA: 08110957*/
- #include <stdio.h>
- #include <time.h>
- #include <math.h>
- struct Jogador /*struct agrupa variáveis de vários tipos*/
- {
- int vez;
- int posicao;
- int cor;
- int anda;
- int numero_jogador;
- int dado;
- }*jogadores;
- int jogar_Dado();
- int verificar_dados();
- int andar(struct Jogador *jogador_atual);
- void imprimir_posicoes();
- int num_jogadores;
- char cor[][9] = { "preto", "amarelo", "azul", "vermelho" };
- main()
- {
- srand(time(NULL));
- int i, j;
- do{ /*Informar o número de Jogadores*/
- printf("Digite o numero de jogadores (Entre 2 e 4):");
- fflush(stdin);
- scanf("%d",&num_jogadores);
- } while (num_jogadores <= 1 || num_jogadores > 4);
- jogadores = malloc(sizeof(struct Jogador)*num_jogadores);
- for (i = 0; i < num_jogadores; i++){
- jogadores[i].anda = 1;
- jogadores[i].cor = -1;
- jogadores[i].numero_jogador = i+1;
- jogadores[i].posicao = 1;
- jogadores[i].vez = 1;
- jogadores[i].dado = 0;
- }
- int ordem[] = { -1, -1, -1, -1 };
- do{ /*Verifica o número que cada Jogador tirou*/
- for (i=0;i<num_jogadores;i++) /*Mostra o número que cada Jogador tirou*/
- {
- jogadores[i].dado = jogar_Dado();
- printf("O jogador %d tirou: %d\n", jogadores[i].numero_jogador, jogadores[i].dado);
- }
- printf("%d\n", verificar_dados());
- system("pause");
- } while(!verificar_dados()); /*Chama a Função verificar_dados*/
- for(i=0;i<num_jogadores;i++)/*Ordena os números que foram tirados no dado*/
- {
- if(jogadores[i].dado > ordem[0])
- {
- ordem[3]=ordem[2];
- ordem[2]=ordem[1];
- ordem[1]=ordem[0];
- ordem[0]=jogadores[i].dado;
- }
- else
- {
- if(jogadores[i].dado > ordem[1])
- {
- ordem[3]=ordem[2];
- ordem[2]=ordem[1];
- ordem[1]=jogadores[i].dado;
- }
- else
- {
- if(jogadores[i].dado > ordem[2])
- {
- ordem[3]=ordem[2];
- ordem[2]=jogadores[i].dado;
- }
- else
- {
- ordem[3] = jogadores[i].dado;
- }
- }
- }
- }
- i = 0;
- do {/*Ordena os Jogadores de acordo com os respectivos números tirados no dado*/
- if (jogadores[i].dado == ordem[0])
- jogadores[i].vez = 1;
- else if (jogadores[i].dado == ordem[1])
- jogadores[i].vez = 2;
- else if (jogadores[i].dado == ordem[2])
- jogadores[i].vez = 3;
- else
- jogadores[i].vez = 4;
- i++;
- } while (i < num_jogadores);
- for (i = 0; i < num_jogadores; i++) /*Ordena os jogadores*/
- {
- struct Jogador temp;
- if (jogadores[i].vez != i+1)
- {
- temp = jogadores[jogadores[i].vez-1];
- jogadores[jogadores[i].vez-1] = jogadores[i];
- jogadores[i] = temp;
- }
- }
- int escolha[] = { 0, 0, 0, 0 };
- i = 0;
- do /* Os Jogadores escolhem a cor que desejam jogar */
- {
- printf("\nEscolha sua cor:\n0-preto\n1-amarelo\n2-azul\n3-vermelho");
- fflush(stdin);
- scanf("%d", &jogadores[i].cor);
- if (escolha[jogadores[i].cor])
- {
- jogadores[i].cor = -1;
- printf("\nA cor ja foi escolhida\n");
- }
- else
- {
- printf("Jogador %d - %s\n", jogadores[i].numero_jogador, cor[jogadores[i].cor]);
- escolha[jogadores[i].cor] = 1;
- i++;
- }
- if (i == num_jogadores) break;
- } while (1);
- system("pause");
- i = 0;
- do{ /*Determina a posição de cada Jogador*/
- printf("POSICOES\n");
- for (j = 0; j < num_jogadores; j++){
- imprimir_posicoes();
- }
- system("pause");
- i++;
- i %= num_jogadores;
- } while(!andar(&jogadores[i]));
- system("pause");
- }
- /* Função que mostra o número que saiu no dado */
- int jogar_Dado()
- {
- return (rand()%6 + 1);
- }
- /*Verifica se os jogadores não tiraram números iguais no dado*/
- int verificar_dados()
- {
- int i, j;
- for(i = num_jogadores; i >= 0; i--){
- for(j = num_jogadores; j >= 0; j--){
- if (j == i) continue;
- if (jogadores[i].dado == jogadores[j].dado)
- return 0;
- }
- }
- return 1;
- }
- /* Função que irá mover os jogadores pelas casas de acordo com o número sorteado no dado*/
- int andar(struct Jogador *jogador_atual)
- {
- int i,j;
- if (jogador_atual->anda == 0){
- printf("O pirata saiu do calabouco\n");
- jogador_atual->anda = 1;
- return 0;
- }
- i=jogar_Dado();
- jogador_atual->posicao += i;
- if(jogador_atual->posicao == 4 || jogador_atual->posicao == 8 || jogador_atual->posicao == 12)
- {
- printf("O pirata ficou preso no calabouco!\n");
- jogador_atual->anda=0;
- return 0;
- }
- else
- {
- if(jogador_atual->posicao == 5 || jogador_atual->posicao == 15)
- {
- printf("Casa da sorte, ande 2 casas!");
- jogador_atual->posicao+=2;
- return 0;
- }
- else
- {
- if(jogador_atual->posicao==9 || jogador_atual->posicao==14)
- {
- printf("Casa do azar, volte duas casas!");
- jogador_atual->posicao-=2;
- return 0;
- }
- else
- {
- if(jogador_atual->posicao==10)
- {
- printf("Casa MapaPista");
- jogador_atual->posicao=18;
- return 0;
- }
- else
- {
- if(jogador_atual->posicao >= 20){
- jogador_atual->posicao = 20;
- printf("O jogador %d ganhou!\n", jogador_atual->numero_jogador);
- return 1;
- }
- }
- }
- }
- }
- }
- /* Imprime o tabuleiro e as posições dos jogadores */
- void imprimir_posicoes(){
- int i, j;
- printf("\nTABULEIRO: || || || # $ || || # A P || # || A $ || || || || ||\n");
- for (i = 0; i < num_jogadores; i++){
- printf("\nJogador %d: ", jogadores[i].cor);
- for (j = 0; j < 20; j++){
- if (jogadores[i].posicao-1 == j)
- putchar(48+i);
- else
- putchar(' ');
- putchar(' ');
- }
- printf("\n");
- }
- }
Add Comment
Please, Sign In to add comment