Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <assert.h>
- #include <time.h>
- #include <stdlib.h>
- struct jugador{
- char *nombre;
- int puntaje;
- };
- struct jugador puntajeEnCero(struct jugador jugadorInicial){
- jugadorInicial.puntaje=0;
- return jugadorInicial;
- }
- char ** creaGrilla(int cantJugadores){
- int i, j;
- char** grilla;
- char *categorias[]={"Jugador", "Letra", "Personas", "Colores", "Animales", "Flores", "Frutas", "Países", "Puntos"};
- //contamos con 7 categorías, una columna para los jugadores, una para las letras elegidas y otra para los puntos.
- grilla=malloc(sizeof(char*)*10);
- for (i=0; i<10; i++){
- //grilla[0][i] es un char y le estoy asignando un string. Necesitaría cambiar grilla
- grilla[0][i]=*categorias[i];
- for (j=0; j<cantJugadores; j++){
- grilla[j][i]=' ';
- }
- }
- return grilla;
- }
- void imprimeGrilla(char ** grilla, int cantJugadores){
- printf("-----------------------------------\n");
- int i;
- //imprime solo el primer caracter por el problema de grilla
- for (i=0; i<cantJugadores; i++){
- 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]);
- printf("-----------------------------------\n");
- }
- }
- char elegirLetra(){
- int i;
- char letraNumero;
- srand(time(NULL));
- int r = rand();//devuelve un entero entre 0 and RAND_MAX
- letraNumero=r%27;
- //defino un array de char que contiene las letras del abecedario
- char abecedario[26];
- abecedario[0]='a';
- for(i=1; i<26; i++){
- abecedario[i]=abecedario[i-1]+1;
- }
- return abecedario[letraNumero];
- }
- //devuelve 1 si se encuentra presente la letra en el array. Caso contrario, devuelve 0.
- int estaLetra(char letra, char* letrasElegidas, int longitud){
- int i;
- for (i=0; i<longitud; i++){
- if (letrasElegidas[i]==letra){
- return 1;
- }
- }
- return 0;
- }
- char** recuentoPuntajes(char **grilla, char ** jugadores, int cantJugadores){
- //supongo que las palabras en cada categoría corresponden a dicha categoría y que empiezan con la letra elegida.
- //considero que todas las palabras están escritas en minúscula, sin errores de ortografía y con tildes.
- int i, j, columna;
- char palabraAComparar;
- //palabras escritas solo por un jugador
- for (columna=2; columna<10; columna++){
- for (j=1; j<cantJugadores+1; j++){
- for (i=1; i<cantJugadores+1; i++){
- palabraAComparar=grilla[j][columna];
- if ((palabraAComparar!=grilla[i][columna]) && (j!=i)){
- jugadores[j].puntaje+=10;
- }
- }
- }
- }
- //palabras repetidas
- for (columna=2; columna<10; columna++){
- for (j=1; j<cantJugadores+1; j++){
- for (i=1; i<cantJugadores+1; i++){
- palabraAComparar=grilla[j][columna];
- if ((palabraAComparar==grilla[i][columna]) && (j!=i)){
- jugadores[j].puntaje+=5;
- }
- }
- }
- }
- //único jugador que encontró una palabra
- for (columna=2; columna<10; columna++){
- for (j=1; j<cantJugadores+1; j++){
- for (i=1; i<cantJugadores; i++){
- palabraAComparar=grilla[j][columna];
- if ((palabraAComparar!=grilla[i][columna]) && (grilla[i][columna]==' ')){
- jugadores[j].puntaje+=20;
- }
- }
- }
- }
- return jugadores;
- }
- //devuelve 0 si no hay un ganador, en caso contrario devuelve 1.
- int hayGanador(char **grilla, char *jugadores, int cantJugadores){
- int i;
- for (i=0; i<cantJugadores; i++){
- if (jugadores[i].puntaje>200){
- return 1;
- }
- }
- return 0;
- }
- void jugar(){
- int cantJugadores, i, j;
- char letra, letrasElegidas[27];
- char **grilla;
- printf("Ingrese la cantidad de jugadores (máximo 5): ");
- scanf("%d", &cantJugadores);
- //si no es válido el número
- while (cantJugadores>5 || cantJugadores<1){
- printf("Ingrese la cantidad de jugadores (máximo 5): ");
- scanf("%d", &cantJugadores);
- }
- //creo un array de cantJugadores de punteros y en cada posición creo una estructura de tipo jugador.
- struct jugador jugadores[cantJugadores];
- for (i=0; i<cantJugadores; i++){
- puntajeEnCero(jugadores[i]);
- printf("Jugador %d: ingrese su nombre: \n", i+1);
- gets (jugadores[i].nombre);
- }
- grilla=creaGrilla(cantJugadores);
- if (hayGanador(grilla, jugadores, cantJugadores)==0){
- letra=elegirLetra();
- //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.
- if (estaLetra(letra, letrasElegidas, 27)==0){
- printf("La letra elegida es %c: \n", letra);
- for (i=0; i<cantJugadores; i++){
- for (j=2; j<9; j++){
- printf("%s: ingrese %s", jugadores[i].nombre, grilla[0][j]);
- scanf("%s", &grilla[i][j]);
- }
- }
- jugadores=recuentoPuntajes(grilla, jugadores, cantJugadores);
- imprimeGrilla(grilla, cantJugadores);
- }
- } else {
- printf("Hay un ganador!");
- }
- }
- int main(){
- jugar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement