Advertisement
OriReschini

Untitled

Dec 26th, 2016
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.82 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <assert.h>
  3. #include <time.h>
  4. #include <stdlib.h>
  5.  
  6. struct jugador{
  7. char *nombre;
  8. int puntaje;
  9. };
  10.  
  11. struct jugador puntajeEnCero(struct jugador jugadorInicial){
  12. jugadorInicial.puntaje=0;
  13. return jugadorInicial;
  14. }
  15.  
  16. char ** creaGrilla(int cantJugadores){
  17. int i, j;
  18. char** grilla;
  19. char *categorias[]={"Jugador", "Letra", "Personas", "Colores", "Animales", "Flores", "Frutas", "Países", "Puntos"};
  20. //contamos con 7 categorías, una columna para los jugadores, una para las letras elegidas y otra para los puntos.
  21. grilla=malloc(sizeof(char*)*10);
  22. for (i=0; i<10; i++){
  23. //grilla[0][i] es un char y le estoy asignando un string. Necesitaría cambiar grilla
  24. grilla[0][i]=*categorias[i];
  25. for (j=0; j<cantJugadores; j++){
  26. grilla[j][i]=' ';
  27. }
  28. }
  29. return grilla;
  30. }
  31.  
  32.  
  33. void imprimeGrilla(char ** grilla, int cantJugadores){
  34. printf("-----------------------------------\n");
  35. int i;
  36. //imprime solo el primer caracter por el problema de grilla
  37. for (i=0; i<cantJugadores; i++){
  38. printf("|%c|%c|%c|%c|%c|%c|%c|%c|%c|%c|\n", grilla[i][0], grilla[i][1], grilla[i][2], grilla[i][3], grilla[i][4], grilla[i][5], grilla[i][6], grilla[i][7], grilla[i][8], grilla[i][9]);
  39. printf("-----------------------------------\n");
  40. }
  41. }
  42.  
  43. char elegirLetra(){
  44. int i;
  45. char letraNumero;
  46. srand(time(NULL));
  47. int r = rand();//devuelve un entero entre 0 and RAND_MAX
  48. letraNumero=r%27;
  49. //defino un array de char que contiene las letras del abecedario
  50. char abecedario[26];
  51. abecedario[0]='a';
  52. for(i=1; i<26; i++){
  53. abecedario[i]=abecedario[i-1]+1;
  54. }
  55. return abecedario[letraNumero];
  56. }
  57.  
  58.  
  59. //devuelve 1 si se encuentra presente la letra en el array. Caso contrario, devuelve 0.
  60. int estaLetra(char letra, char* letrasElegidas, int longitud){
  61. int i;
  62. for (i=0; i<longitud; i++){
  63. if (letrasElegidas[i]==letra){
  64. return 1;
  65. }
  66. }
  67. return 0;
  68. }
  69.  
  70. char** recuentoPuntajes(char **grilla, char ** jugadores, int cantJugadores){
  71. //supongo que las palabras en cada categoría corresponden a dicha categoría y que empiezan con la letra elegida.
  72. //considero que todas las palabras están escritas en minúscula, sin errores de ortografía y con tildes.
  73. int i, j, columna;
  74. char palabraAComparar;
  75. //palabras escritas solo por un jugador
  76. for (columna=2; columna<10; columna++){
  77. for (j=1; j<cantJugadores+1; j++){
  78. for (i=1; i<cantJugadores+1; i++){
  79. palabraAComparar=grilla[j][columna];
  80. if ((palabraAComparar!=grilla[i][columna]) && (j!=i)){
  81. jugadores[j].puntaje+=10;
  82. }
  83. }
  84. }
  85. }
  86. //palabras repetidas
  87. for (columna=2; columna<10; columna++){
  88. for (j=1; j<cantJugadores+1; j++){
  89. for (i=1; i<cantJugadores+1; i++){
  90. palabraAComparar=grilla[j][columna];
  91. if ((palabraAComparar==grilla[i][columna]) && (j!=i)){
  92. jugadores[j].puntaje+=5;
  93. }
  94. }
  95. }
  96. }
  97. //único jugador que encontró una palabra
  98. for (columna=2; columna<10; columna++){
  99. for (j=1; j<cantJugadores+1; j++){
  100. for (i=1; i<cantJugadores; i++){
  101. palabraAComparar=grilla[j][columna];
  102. if ((palabraAComparar!=grilla[i][columna]) && (grilla[i][columna]==' ')){
  103. jugadores[j].puntaje+=20;
  104. }
  105. }
  106. }
  107. }
  108. return jugadores;
  109. }
  110.  
  111. //devuelve 0 si no hay un ganador, en caso contrario devuelve 1.
  112. int hayGanador(char **grilla, char *jugadores, int cantJugadores){
  113. int i;
  114. for (i=0; i<cantJugadores; i++){
  115. if (jugadores[i].puntaje>200){
  116. return 1;
  117. }
  118. }
  119. return 0;
  120. }
  121.  
  122.  
  123. void jugar(){
  124. int cantJugadores, i, j;
  125. char letra, letrasElegidas[27];
  126. char **grilla;
  127.  
  128. printf("Ingrese la cantidad de jugadores (máximo 5): ");
  129. scanf("%d", &cantJugadores);
  130.  
  131. //si no es válido el número
  132. while (cantJugadores>5 || cantJugadores<1){
  133. printf("Ingrese la cantidad de jugadores (máximo 5): ");
  134. scanf("%d", &cantJugadores);
  135. }
  136.  
  137. //creo un array de cantJugadores de punteros y en cada posición creo una estructura de tipo jugador.
  138. struct jugador jugadores[cantJugadores];
  139. for (i=0; i<cantJugadores; i++){
  140. puntajeEnCero(jugadores[i]);
  141. printf("Jugador %d: ingrese su nombre: \n", i+1);
  142. gets (jugadores[i].nombre);
  143. }
  144.  
  145. grilla=creaGrilla(cantJugadores);
  146. if (hayGanador(grilla, jugadores, cantJugadores)==0){
  147. letra=elegirLetra();
  148.  
  149. //si la letra no se encuentra entre las letras ya elegidas, se le pide a cada jugador que ingrese las palabras en cada categoría.
  150. if (estaLetra(letra, letrasElegidas, 27)==0){
  151. printf("La letra elegida es %c: \n", letra);
  152. for (i=0; i<cantJugadores; i++){
  153. for (j=2; j<9; j++){
  154. printf("%s: ingrese %s", jugadores[i].nombre, grilla[0][j]);
  155. scanf("%s", &grilla[i][j]);
  156. }
  157. }
  158. jugadores=recuentoPuntajes(grilla, jugadores, cantJugadores);
  159. imprimeGrilla(grilla, cantJugadores);
  160. }
  161. } else {
  162. printf("Hay un ganador!");
  163. }
  164. }
  165.  
  166.  
  167. int main(){
  168. jugar();
  169.  
  170. return 0;
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement