Guest User

Untitled

a guest
Jun 18th, 2018
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.30 KB | None | 0 0
  1. /* Camila Magalhães - RA: 08105380
  2. Patricia Boselli - RA: 08103744
  3. Camila Lopes - RA: 08110183
  4. Juliana Oliveira - RA: 08110957*/
  5.  
  6. #include <stdio.h>
  7. #include <time.h>
  8. #include <math.h>
  9.  
  10. struct Jogador /*struct agrupa variáveis de vários tipos*/
  11. {
  12. int vez;
  13. int posicao;
  14. int cor;
  15. int anda;
  16. int numero_jogador;
  17. int dado;
  18. }*jogadores;
  19.  
  20.  
  21. int jogar_Dado();
  22. int verificar_dados();
  23. int andar(struct Jogador *jogador_atual);
  24. void imprimir_posicoes();
  25. int num_jogadores;
  26. char cor[][9] = { "preto", "amarelo", "azul", "vermelho" };
  27.  
  28. main()
  29. {
  30. srand(time(NULL));
  31. int i, j;
  32.  
  33. do{ /*Informar o número de Jogadores*/
  34. printf("Digite o numero de jogadores (Entre 2 e 4):");
  35. fflush(stdin);
  36. scanf("%d",&num_jogadores);
  37.  
  38. } while (num_jogadores <= 1 || num_jogadores > 4);
  39.  
  40. jogadores = malloc(sizeof(struct Jogador)*num_jogadores);
  41. for (i = 0; i < num_jogadores; i++){
  42. jogadores[i].anda = 1;
  43. jogadores[i].cor = -1;
  44. jogadores[i].numero_jogador = i+1;
  45. jogadores[i].posicao = 1;
  46. jogadores[i].vez = 1;
  47. jogadores[i].dado = 0;
  48. }
  49. int ordem[] = { -1, -1, -1, -1 };
  50.  
  51. do{ /*Verifica o número que cada Jogador tirou*/
  52. for (i=0;i<num_jogadores;i++) /*Mostra o número que cada Jogador tirou*/
  53. {
  54. jogadores[i].dado = jogar_Dado();
  55. printf("O jogador %d tirou: %d\n", jogadores[i].numero_jogador, jogadores[i].dado);
  56. }
  57. printf("%d\n", verificar_dados());
  58. system("pause");
  59. } while(!verificar_dados()); /*Chama a Função verificar_dados*/
  60.  
  61.  
  62. for(i=0;i<num_jogadores;i++)/*Ordena os números que foram tirados no dado*/
  63. {
  64. if(jogadores[i].dado > ordem[0])
  65. {
  66. ordem[3]=ordem[2];
  67. ordem[2]=ordem[1];
  68. ordem[1]=ordem[0];
  69. ordem[0]=jogadores[i].dado;
  70. }
  71. else
  72. {
  73. if(jogadores[i].dado > ordem[1])
  74. {
  75. ordem[3]=ordem[2];
  76. ordem[2]=ordem[1];
  77. ordem[1]=jogadores[i].dado;
  78. }
  79. else
  80. {
  81. if(jogadores[i].dado > ordem[2])
  82. {
  83. ordem[3]=ordem[2];
  84. ordem[2]=jogadores[i].dado;
  85. }
  86. else
  87. {
  88. ordem[3] = jogadores[i].dado;
  89. }
  90. }
  91. }
  92. }
  93.  
  94. i = 0;
  95. do {/*Ordena os Jogadores de acordo com os respectivos números tirados no dado*/
  96. if (jogadores[i].dado == ordem[0])
  97. jogadores[i].vez = 1;
  98. else if (jogadores[i].dado == ordem[1])
  99. jogadores[i].vez = 2;
  100. else if (jogadores[i].dado == ordem[2])
  101. jogadores[i].vez = 3;
  102. else
  103. jogadores[i].vez = 4;
  104. i++;
  105. } while (i < num_jogadores);
  106.  
  107. for (i = 0; i < num_jogadores; i++) /*Ordena os jogadores*/
  108. {
  109. struct Jogador temp;
  110.  
  111. if (jogadores[i].vez != i+1)
  112. {
  113. temp = jogadores[jogadores[i].vez-1];
  114. jogadores[jogadores[i].vez-1] = jogadores[i];
  115. jogadores[i] = temp;
  116. }
  117. }
  118.  
  119. int escolha[] = { 0, 0, 0, 0 };
  120. i = 0;
  121. do /* Os Jogadores escolhem a cor que desejam jogar */
  122. {
  123. printf("\nEscolha sua cor:\n0-preto\n1-amarelo\n2-azul\n3-vermelho");
  124. fflush(stdin);
  125. scanf("%d", &jogadores[i].cor);
  126.  
  127. if (escolha[jogadores[i].cor])
  128. {
  129. jogadores[i].cor = -1;
  130. printf("\nA cor ja foi escolhida\n");
  131. }
  132. else
  133. {
  134. printf("Jogador %d - %s\n", jogadores[i].numero_jogador, cor[jogadores[i].cor]);
  135. escolha[jogadores[i].cor] = 1;
  136. i++;
  137. }
  138. if (i == num_jogadores) break;
  139. } while (1);
  140.  
  141. system("pause");
  142.  
  143. i = 0;
  144. do{ /*Determina a posição de cada Jogador*/
  145. printf("POSICOES\n");
  146. for (j = 0; j < num_jogadores; j++){
  147. imprimir_posicoes();
  148. }
  149. system("pause");
  150. i++;
  151. i %= num_jogadores;
  152. } while(!andar(&jogadores[i]));
  153. system("pause");
  154. }
  155.  
  156. /* Função que mostra o número que saiu no dado */
  157. int jogar_Dado()
  158. {
  159. return (rand()%6 + 1);
  160. }
  161.  
  162. /*Verifica se os jogadores não tiraram números iguais no dado*/
  163. int verificar_dados()
  164. {
  165. int i, j;
  166. for(i = num_jogadores; i >= 0; i--){
  167. for(j = num_jogadores; j >= 0; j--){
  168. if (j == i) continue;
  169. if (jogadores[i].dado == jogadores[j].dado)
  170. return 0;
  171. }
  172. }
  173. return 1;
  174. }
  175.  
  176. /* Função que irá mover os jogadores pelas casas de acordo com o número sorteado no dado*/
  177. int andar(struct Jogador *jogador_atual)
  178. {
  179. int i,j;
  180. if (jogador_atual->anda == 0){
  181. printf("O pirata saiu do calabouco\n");
  182. jogador_atual->anda = 1;
  183. return 0;
  184. }
  185. i=jogar_Dado();
  186. jogador_atual->posicao += i;
  187. if(jogador_atual->posicao == 4 || jogador_atual->posicao == 8 || jogador_atual->posicao == 12)
  188. {
  189. printf("O pirata ficou preso no calabouco!\n");
  190. jogador_atual->anda=0;
  191. return 0;
  192. }
  193. else
  194. {
  195. if(jogador_atual->posicao == 5 || jogador_atual->posicao == 15)
  196. {
  197. printf("Casa da sorte, ande 2 casas!");
  198. jogador_atual->posicao+=2;
  199. return 0;
  200. }
  201. else
  202. {
  203. if(jogador_atual->posicao==9 || jogador_atual->posicao==14)
  204. {
  205. printf("Casa do azar, volte duas casas!");
  206. jogador_atual->posicao-=2;
  207. return 0;
  208. }
  209. else
  210. {
  211. if(jogador_atual->posicao==10)
  212. {
  213. printf("Casa MapaPista");
  214. jogador_atual->posicao=18;
  215. return 0;
  216. }
  217. else
  218. {
  219. if(jogador_atual->posicao >= 20){
  220. jogador_atual->posicao = 20;
  221. printf("O jogador %d ganhou!\n", jogador_atual->numero_jogador);
  222. return 1;
  223. }
  224. }
  225. }
  226. }
  227. }
  228. }
  229. /* Imprime o tabuleiro e as posições dos jogadores */
  230. void imprimir_posicoes(){
  231. int i, j;
  232. printf("\nTABULEIRO: || || || # $ || || # A P || # || A $ || || || || ||\n");
  233. for (i = 0; i < num_jogadores; i++){
  234. printf("\nJogador %d: ", jogadores[i].cor);
  235. for (j = 0; j < 20; j++){
  236. if (jogadores[i].posicao-1 == j)
  237. putchar(48+i);
  238. else
  239. putchar(' ');
  240. putchar(' ');
  241. }
  242. printf("\n");
  243. }
  244. }
Add Comment
Please, Sign In to add comment