elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Problema con Juego de hundir la flota en: 31 Diciembre 2016, 18:21 pm
Hola a todos. Debo hacer un trabajo en el que tengo que programar en c, el juego de hundir la flota para 0 jugadores (la maquina sola), 1 jugador, o dos jugadores. Debe tener un menú, un submenú, poder guardar los tres primeros records, modificar el tamaño de la matriz entre 8, 9 o 10 filas y columnas, crear una nueva partida, cargar una partida i guardar los tres records más altos, con el nombre del jugador y la fecha. Mi problema es que, a parte de no saber como disponer los 4 barcos, que el primero ocupe 4 casillas, el segundo 3, el tercero 2 i el último 1, cuando hago el submenú, ya sea con estructura en switch, o con if, termina el programa sin poder escoger la opción.
De momento tengo esta parte del código. Agradecería mucho la ayuda y, si es posible, tan pronto como sea posible.
(La libreria tipus.h esta destinada al archivo de records)
Código
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <stdbool.h>
  5. #include <string.h>
  6. #include "tipus.h"
  7. #define DIM_MAX 10
  8. #define DIM_MIN 8
  9. #define NOM_MAX             15
  10. #define NUM_JUGADORS_MIN    0
  11. #define NUM_JUGADORS_MAX    2
  12. int main()
  13. {
  14.    char opcion;
  15.    char opcionb;
  16.    char nom[NOM_MAX];
  17.    int jug;
  18.    int num_col, num_fila, dimensio_taulell;
  19.    FILE *f;
  20.    char caracters;
  21.    int records = 0;
  22.    int i = 0;
  23.    int puntuacionMax = 0;
  24.    int puntuacionMax2 = 0;
  25.    f = fopen("records.txt", "r");
  26.    char taulell[DIM_MAX][DIM_MAX], lletra_fila;
  27.    printf("\na. Crear un nuevo juego\n");
  28.    printf("\nb. Cargar un juego\n");
  29.    printf("\ne. Ver podium\n");
  30.    printf("\nf. Salir\n");
  31.    scanf("%c", &opcio);
  32.    switch(opcio)
  33.    {
  34.  
  35.    case 97:
  36.        {
  37.        printf("Ha escogido la opcion a\n");
  38.        printf("introduzca su nombre\n");
  39.        scanf("%s", &nom[NOM_MAX]);
  40.        printf("\nSu nombre es: %s", &nom[NOM_MAX]);
  41.        printf("\nCuantos jugadores hay\n");
  42.        scanf("%i", &jug);
  43.        if(jug!=0)
  44.        {
  45.            printf("ERROR");
  46.            return 0;
  47.        }
  48.        else{
  49.        printf("\na. Crear un nuevo juego\n");
  50.        printf("\nb. Cargar un juego\n");
  51.        printf("\nc. Jugar partida\n");
  52.        printf("\nd. Guardar partida\n");
  53.        printf("\ne. Ver podium\n");
  54.        printf("\nf. Salir\n");
  55.        scanf("%c", &opciob);
  56.        switch(opciob){
  57.        case 97:
  58.  
  59.            break;
  60.        case 98:
  61.            break;
  62.        case 99:
  63.            {
  64.  
  65.            while(dimensio_taulell > DIM_MAX || dimensio_taulell < DIM_MIN)
  66.            {
  67.                printf("Escriba la dimension del tablero (8, 9 o 10):\t");
  68.                scanf("%i", &dimensio_taulell);
  69.                printf("\n");
  70.            }
  71.            printf(" \t");
  72.            for(num_col = 1; num_col <= dimensio_taulell; num_col++)
  73.            {
  74.                printf("%i ", num_col);
  75.            }
  76.            printf("\n");
  77.            num_fila = 0;
  78.            while(num_fila < dimensio_taulell)
  79.            {
  80.                lletra_fila = num_fila + 65;
  81.                printf("%c\t", lletra_fila);
  82.                num_col = 0;
  83.                while(num_col < dimensio_taulell)
  84.                {
  85.                    taulell[num_fila][num_col] = 63;
  86.                    printf("%c ", taulell[num_fila][num_col]);
  87.                    num_col++;
  88.                }
  89.                printf("\n");
  90.                num_fila++;
  91.            }
  92.            }
  93.            return 0;
  94.  
  95.            break;
  96.        }
  97.        }
  98.        }
  99.  
  100.    case 98:
  101.  
  102.    case 100:
  103.        break;
  104.    case 101:
  105.  
  106.        if(f == NULL)
  107.        {
  108.            printf("Jugador \t Puntuacion \t Data\n");
  109.            printf("El nombre de records es: 0\n");
  110.            printf("La puntuacion maxima es: 0\n");
  111.            return 0;
  112.        }
  113.        printf("Jugador \t Puntuacion \t Data\n");
  114.        if(f!=NULL)
  115.        {
  116.            while(!feof(f))
  117.            {
  118.                fscanf(f,"%c",&caracters);
  119.                printf("%c",caracters);
  120.                if(caracters == '\n')
  121.                {
  122.                    records++;
  123.                }
  124.                if(caracters == '\t')
  125.                {
  126.                    fscanf(f,"%i",&puntuacionMax);
  127.                    printf("%i",puntuacionMax);
  128.                    if(puntuacionMax > puntuacionMax2)
  129.                    {
  130.                        puntuacionMax = puntuacionMax2;
  131.                    }
  132.                }
  133.                i++;
  134.            }
  135.        }
  136.        printf("Records: %i\n", records-1);
  137.        printf("Puntuacion max: %i\n", puntuacionMax);
  138.        return 0;
  139.        break;
  140.    case 102:
  141.        exit(-1);
  142.        break;
  143.    }
  144.  
  145.    return 0;
  146.  
  147. }
  148.  

CoAdm: asegurarte de colocar bien las etiquetas GeSHi, es una de apertura y otra de cierre (como en html o cualquier lenguaje de etiquetas, en este caso bbcode)
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines