Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define N 5
- #define M 5
- #define L 50
- void readBoard(int board[N][M])
- {
- for(int i=0; i<N;i++)
- {
- for(int j=0; j<M;j++)
- {
- scanf("%d", &board[i][j]);
- }
- }
- }
- void readGame(int steps[L], int * numOfSteps)
- {
- int current = 0;
- int counter = 0;
- int step =0;
- while(scanf("%d", &step) != 0 && step != -1)
- {
- steps[current++] = step;
- counter++;
- }
- *numOfSteps = counter / 2;
- }
- int isCellLegal(int x, int y)
- {
- if(x <0 || y < 0)
- return 0;
- if(x > N || y > M)
- return 0;
- return 1;
- }
- int isBomb(int Board[N][M], int x, int y)
- {
- if(Board[x][y] == -1)
- return 1;
- return 0;
- }
- int performStep(int Board[N][M], int x, int y , int* BombsRevealed)
- {
- if(Board[x][y] == -1)
- return -1;
- int value = Board[x][y];
- for(int i = x - value; i <= x + value; i++)
- {
- if(i < 0 || i > N)
- continue;
- for(int j = y - value; j <= y + value;j++)
- {
- if( j< 0 || j > M)
- continue;
- if(Board[i][j] == -1)
- *BombsRevealed = *BombsRevealed + 1;
- Board[i][j] = 0;
- }
- }
- return 0;
- }
- int isWinner(int Board[N][M])
- {
- for(int i=0; i<N;i++)
- {
- for(int j=0; j<M;j++)
- {
- if(Board[i][j] == 0)
- return 0;
- if(Board[i][j] != 0 && Board[i][j] != -1)
- return 0;
- }
- }
- return 1;
- }
- int playGame(int Board[N][M], int steps[L], int numOfSteps, int *totalBombsRevealed)
- {
- int index = 0;
- int stepsNumber =0;
- while(isWinner(Board) == 0)
- {
- if (performStep(Board,steps[index++], steps[index], totalBombsRevealed) == -1)
- return -1;
- index += 2;
- stepsNumber++;
- if(stepsNumber == numOfSteps)
- return 0;
- }
- return 1;
- }
- int main()
- {
- int Board[N][M] = {{0}};
- readBoard(Board);
- int steps[L] = {0};
- int stepsNr1 =0;
- int bombsRev1 =0;
- int *stepsNumber= &stepsNr1;
- int *bombsRev = &stepsNr1;
- readGame(steps, stepsNumber);
- printf("%d\n", playGame(Board, steps, *stepsNumber, bombsRev));
- printf("%d\n", *bombsRev);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement