Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include "Header.h"
- //afegir header
- struct Tauler
- {
- int F; // número de files del tauler
- int C; // número de columnes del tauler
- 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
- 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
- // 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
- int casellesPendents; // número de caselles pendents de destapar per a guanyar la partida
- };
- struct Mina{
- int i; // coordenada x de la mina
- int j; // coordenada y de la mina
- };
- struct Excavacio{
- int i; // coordenada x de l’excavació
- int j; // coordenada y de l’excavació
- };
- int ReadInteger(){
- int i = 0;
- char c = getchar();
- char buffer[128];
- while (c == ' ' || c == '\n')c = getchar();
- while (c != ' ' && c != '\n' && c != EOF)
- {
- buffer[i] = c;
- i++;
- c = getchar();
- }
- buffer[i] = '\0';
- return atoi(buffer);
- }
- Mina* LlegirMines(int numMines)
- {
- Mina* p_mina = new Mina[numMines];
- for (int cont = 0; cont < numMines; cont++)
- {
- p_mina[cont].i = ReadInteger();
- p_mina[cont].j = ReadInteger();
- }
- return p_mina;
- //Funció que llegeix les mines, les fica en un array dinàmic i retorna un punter que apunta a l’array
- }
- void DestruirMines(Mina* p_mina)
- {
- delete[] p_mina;
- //Funció que allibera la memòria dinàmica reservada per a les mines
- }
- Excavacio* LlegirExcavacions(int numExcavacions)
- {
- Excavacio* p_excavacio = new Excavacio[numExcavacions];
- for (int cont = 0; cont < numExcavacions; cont++)
- {
- p_excavacio[cont].i = ReadInteger();
- p_excavacio[cont].j = ReadInteger();
- return p_excavacio;
- //Funció que llegeix les excavacions, les fica en un array dinàmic i retorna un punter que apunta a l'array
- }
- }
- void DestruirExcavacions(Excavacio* p_excavacio)
- {
- delete[] p_excavacio;
- //Funció que allibera la memòria dinàmica reservada per a les excavacions
- }
- Tauler* CrearTauler(int F, int C)
- {
- Tauler* p_tauler = new Tauler[F, C];
- return p_tauler;
- //Funció que reserva la memòria dinàmica per a un tauler i retorna un punter que apunta al tauler creat
- }
- void DestruirTauler(Tauler* p_tauler)
- {
- delete[] p_tauler;
- //Funció que allibera la memòria dinàmica reservada per al tauler
- }
- void ImprimirCasella(Tauler* p_tauler, char* dades, int fila, int columna)
- {
- p_tauler[fila, columna];
- printf("%d", &dades[fila, columna]); // FALTA ALGO O ESTA MAL DIRECTAMENT O NO :)
- //Funció que imprimeix la casella situada a les coordenades [fila, columna] de les dades i tauler indicat
- }
- void ModificarCasella(Tauler* p_tauler, char* dades, int fila, int columna, char valor)
- {
- // UN SET ELEMENT?
- //Funció que modifica la casella situada a les coordenades [fila, columna] de les dades i tauler indicat
- }
- void ImprimirTaulerDades(Tauler* p_tauler, char* dades)
- {
- for (int i = 0; i<p_tauler->F; i++)
- {
- for (int j = 0; j< p_tauler->C; j++)
- {
- printf("%d", &dades);
- }
- }
- //Funció que imprimeix les dades indicades del tauler indicat
- }
- int CalcularMinesAdjacents(Tauler* p_tauler, int fila, int columna)
- {
- int minaadjacent = 0;
- if (fila == 0)
- {
- if (columna == 0)
- {
- if (p_tauler->dadesEnunciat[(fila*(p_tauler->C) + columna) + 1] == 'M')
- {
- minaadjacent++;
- }
- if (p_tauler->dadesEnunciat[(fila*(p_tauler->C) + columna) + p_tauler->C] == 'M')
- {
- minaadjacent++;
- }
- if (p_tauler->dadesEnunciat[(fila*(p_tauler->C) + columna) + p_tauler->C + 1] == 'M')
- {
- minaadjacent++;
- }
- return minaadjacent;
- }
- }
- //Funció que retorna el número de mines adjacents a una certa posició
- }
- void ActualitzarTaulerEnunciat(Tauler* p_tauler, Mina* mines, int numMines)
- {
- //Funció que aplica les mines a les dades de l'enunciat (substitueix les 'X' per 'M')
- }
- void ActualitzarTaulerJoc(Tauler* p_tauler, Excavacio* excavacions, int numExcavacions)
- {
- //Funció que aplica totes les jugades del fitxer d'entrada i indica quin és el resultat de la partida
- }
- void InicialitzarTaulers(Tauler* p_tauler, int F, int C)
- {
- p_tauler;
- for (int i = 0; i<p_tauler->F; i++)
- {
- for (int j = 0; j< p_tauler->C; j++)
- {
- }
- }
- //Funció que inicialitza les dades de l'enunciat i del joc amb 'X' a tot arreu
- }
- int main()
- {
- int files = ReadInteger();
- int columnes = ReadInteger();
- int numMines = ReadInteger();
- int numExcavacions = ReadInteger();
- Tauler* tauler = CrearTauler(files, columnes);
- Mina* mines = LlegirMines(numMines);
- Excavacio* excavacions = LlegirExcavacions(numExcavacions);
- InicialitzarTaulers(tauler, files, columnes);
- ActualitzarTaulerEnunciat(tauler, mines, numMines);
- ActualitzarTaulerJoc(tauler, excavacions, numExcavacions);
- ImprimirTaulerDades(tauler, tauler->dadesEnunciat);
- printf("---\n");
- ImprimirTaulerDades(tauler, tauler->dadesJoc);
- DestruirTauler(tauler);
- DestruirMines(mines);
- DestruirExcavacions(excavacions);
- // Return correct
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement