Advertisement
Guest User

Pro4

a guest
Dec 21st, 2014
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.21 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "Header.h"
  4. //afegir header
  5.  
  6.  
  7. struct Tauler
  8. {
  9.     int F; // número de files del tauler
  10.     int C; // número de columnes del tauler
  11.     char* dadesEnunciat; // punter a array on es guarden les dades de l’enunciat del joc, és a dir una matriu de dues dimensions amb ‘X’ on no hi ha res i amb ‘M’ on hi ha mines
  12.     char* dadesJoc; // punter a array on es guarden les dades de la partida, és a dir una matriu de dues dimensions on en els llocs no
  13.     // descoberts hi ha ‘X’, en els descoberts un número amb el número de mines adjacents i una ‘@’ si s’ha excavat en una mina
  14.     int casellesPendents; // número de caselles pendents de destapar per a guanyar la partida
  15. };
  16.  
  17. struct Mina{
  18.     int i; // coordenada x de la mina
  19.     int j; // coordenada y de la mina
  20. };
  21.  
  22. struct Excavacio{
  23.     int i; // coordenada x de l’excavació
  24.     int j; // coordenada y de l’excavació
  25. };
  26.  
  27. int ReadInteger(){
  28.     int i = 0;
  29.     char c = getchar();
  30.     char buffer[128];
  31.     while (c == ' ' || c == '\n')c = getchar();
  32.     while (c != ' ' && c != '\n' && c != EOF)
  33.     {
  34.         buffer[i] = c;
  35.         i++;
  36.         c = getchar();
  37.     }
  38.     buffer[i] = '\0';
  39.     return atoi(buffer);
  40.  
  41. }
  42.  
  43. Mina* LlegirMines(int numMines)
  44. {
  45.     Mina* p_mina = new Mina[numMines];
  46.     for (int cont = 0; cont < numMines; cont++)
  47.     {
  48.         p_mina[cont].i = ReadInteger();
  49.         p_mina[cont].j = ReadInteger();
  50.     }
  51.  
  52.     return p_mina;
  53.     //Funció que llegeix les mines, les fica en un array dinàmic i retorna un punter que apunta a l’array
  54. }
  55.  
  56. void DestruirMines(Mina* p_mina)
  57. {
  58.     delete[] p_mina;
  59.     //Funció que allibera la memòria dinàmica reservada per a les mines
  60. }
  61.  
  62. Excavacio* LlegirExcavacions(int numExcavacions)
  63. {
  64.     Excavacio* p_excavacio = new Excavacio[numExcavacions];
  65.     for (int cont = 0; cont < numExcavacions; cont++)
  66.     {
  67.         p_excavacio[cont].i = ReadInteger();
  68.         p_excavacio[cont].j = ReadInteger();
  69.         return p_excavacio;
  70.         //Funció que llegeix les excavacions, les fica en un array dinàmic i retorna un punter que apunta a l'array
  71.     }
  72. }
  73.  
  74. void DestruirExcavacions(Excavacio* p_excavacio)
  75. {
  76.     delete[] p_excavacio;
  77.     //Funció que allibera la memòria dinàmica reservada per a les excavacions
  78. }
  79.  
  80. Tauler* CrearTauler(int F, int C)
  81. {
  82.     Tauler* p_tauler = new Tauler[F, C];
  83.     return p_tauler;
  84.     //Funció que reserva la memòria dinàmica per a un tauler i retorna un punter que apunta al tauler creat
  85. }
  86.  
  87. void DestruirTauler(Tauler* p_tauler)
  88. {
  89.     delete[] p_tauler;
  90.     //Funció que allibera la memòria dinàmica reservada per al tauler
  91.  
  92. }
  93.  
  94. void ImprimirCasella(Tauler* p_tauler, char* dades, int fila, int columna)
  95. {
  96.     p_tauler[fila, columna];
  97.     printf("%d", &dades[fila, columna]); // FALTA ALGO O ESTA MAL DIRECTAMENT O NO :)
  98.     //Funció que imprimeix la casella situada a les coordenades [fila, columna] de les dades i tauler indicat
  99. }
  100.  
  101. void ModificarCasella(Tauler* p_tauler, char* dades, int fila, int columna, char valor)
  102. {
  103.     // UN SET ELEMENT?
  104.     //Funció que modifica la casella situada a les coordenades [fila, columna] de les dades i tauler indicat
  105. }
  106.  
  107. void ImprimirTaulerDades(Tauler* p_tauler, char* dades)
  108. {
  109.     for (int i = 0; i<p_tauler->F; i++)
  110.     {
  111.         for (int j = 0; j< p_tauler->C; j++)
  112.         {
  113.             printf("%d", &dades);
  114.         }
  115.     }
  116.     //Funció que imprimeix les dades indicades del tauler indicat
  117. }
  118.  
  119. int CalcularMinesAdjacents(Tauler* p_tauler, int fila, int columna)
  120.     {
  121.         int minaadjacent = 0;
  122.         if (fila == 0)
  123.         {
  124.             if (columna == 0)
  125.             {
  126.                 if (p_tauler->dadesEnunciat[(fila*(p_tauler->C) + columna) + 1] == 'M')
  127.                 {
  128.                     minaadjacent++;
  129.                 }
  130.                 if (p_tauler->dadesEnunciat[(fila*(p_tauler->C) + columna) + p_tauler->C] == 'M')
  131.                 {
  132.                     minaadjacent++;
  133.                 }
  134.                 if (p_tauler->dadesEnunciat[(fila*(p_tauler->C) + columna) + p_tauler->C + 1] == 'M')
  135.                 {
  136.                     minaadjacent++;
  137.                 }
  138.                 return minaadjacent;
  139.             }
  140.         }
  141.         //Funció que retorna el número de mines adjacents a una certa posició
  142.     }
  143.  
  144. void ActualitzarTaulerEnunciat(Tauler* p_tauler, Mina* mines, int numMines)
  145. {
  146.     //Funció que aplica les mines a les dades de l'enunciat (substitueix les 'X' per 'M')
  147. }
  148.  
  149. void ActualitzarTaulerJoc(Tauler* p_tauler, Excavacio* excavacions, int numExcavacions)
  150. {
  151.     //Funció que aplica totes les jugades del fitxer d'entrada i indica quin és el resultat de la partida
  152. }
  153.  
  154. void InicialitzarTaulers(Tauler* p_tauler, int F, int C)
  155. {
  156.     p_tauler;
  157.     for (int i = 0; i<p_tauler->F; i++)
  158.     {
  159.         for (int j = 0; j< p_tauler->C; j++)
  160.         {
  161.            
  162.         }
  163.     }
  164.     //Funció que inicialitza les dades de l'enunciat i del joc amb 'X' a tot arreu
  165. }
  166.  
  167. int main()
  168. {
  169.     int files = ReadInteger();
  170.     int columnes = ReadInteger();
  171.     int numMines = ReadInteger();
  172.     int numExcavacions = ReadInteger();
  173.     Tauler* tauler = CrearTauler(files, columnes);
  174.     Mina* mines = LlegirMines(numMines);
  175.     Excavacio* excavacions = LlegirExcavacions(numExcavacions);
  176.     InicialitzarTaulers(tauler, files, columnes);
  177.     ActualitzarTaulerEnunciat(tauler, mines, numMines);
  178.     ActualitzarTaulerJoc(tauler, excavacions, numExcavacions);
  179.     ImprimirTaulerDades(tauler, tauler->dadesEnunciat);
  180.     printf("---\n");
  181.     ImprimirTaulerDades(tauler, tauler->dadesJoc);
  182.     DestruirTauler(tauler);
  183.     DestruirMines(mines);
  184.     DestruirExcavacions(excavacions);
  185.     // Return correct
  186.     return 0;
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement