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]);
- void readGame(int steps[L], int * numOfSteps);
- int isCellLegal(int x, int y);
- int isBomb(int Board[N][M], int x, int y);
- int performStep(int Board[N][M], int x, int y, int * bombsRevealed);
- int isWinner(int Board[N][M]);
- int playGame(int Board[N][M], int Steps[L], int numOfSteps, int *totalBombsRevealed);
- int main()
- {
- int board[N][M]={0};
- int steps[L]={0};
- int temp = 0, temp1 = 0;
- int *numOfSteps = &temp, *totalBombsRevealed = &temp1;
- int k,i,j;
- readBoard(board);
- readGame(steps, numOfSteps);
- k = playGame(board, steps, *numOfSteps, totalBombsRevealed);
- printf("%d\n", k);
- printf("%d\n", *totalBombsRevealed);
- for (i = 0; i < N; i++){
- for (j = 0; j < M; j++){
- printf("%d",board[i][j]);
- printf ("\n");
- }
- }
- return 0;
- }
- void readBoard(int board[N][M])
- {
- int i,j;
- printf("Entered read board\n");
- for (i=0;i<N;i++)
- {for (j=0; j<M;j++)
- {scanf("%d",&board[i][j]);
- }
- }
- for (i = 0; i < N; i++){
- for(j = 0; j < M; j++){
- printf("%d ", board[i][j]);
- }
- printf("\n");
- }
- }
- void readGame(int steps[L], int * numOfSteps)
- {
- int i, m;
- *numOfSteps = 0;
- printf("Entered readGame\n");
- for(i=0; i < L;i++){
- scanf("%d",&m);
- if (m == -1){
- printf("Breaking game scan i %d, scanned -1\n", i);
- break;
- }
- else{
- steps[i] = m;
- /*printf("Steps[%d] = %d\n", i, m);*/
- if (steps[i] %2 == 1){
- *numOfSteps = *numOfSteps + 1;
- printf("NumOfSteps %d\n", *numOfSteps);
- }
- }
- }
- printf("NumOfSteps %d\n", *numOfSteps);
- printf("Steps:\n");
- for(i = 0; i < L/2; i++){
- printf("%d %d\n", steps[2*i], steps[2*i + 1]);
- }
- }
- int isCellLegal(int x, int y){
- if (x>=N || x<0 ||y<0||y>=M )
- return 0;
- return 1 ;
- }
- int isBomb(int Board[N][M], int x, int y)
- {
- if (Board[x][y]== -1)
- {
- printf("Found a bomb x %d, y %d\n", x, y);
- return 1;
- }
- else
- {Board[x][y]=0;
- return 0;
- }
- }
- int performStep(int Board[N][M], int x, int y, int * bombsRevealed){
- int i = 0, j = 0;
- printf("Entered performStep x %d, y %d\n", x, y);
- printf("Board:\n");
- for (i = 0; i < N; i++){
- for (j = 0; j < M; j++){
- printf("%d",Board[i][j]);
- printf ("\n");
- }
- if (isBomb(Board, x, y) == 1){
- printf("Found a bomb x %d, y %d\n", x, y);
- * bombsRevealed = 0;
- return -1;
- }
- printf("Board in place %d %d is %d\n", x, y, Board[x][y]);
- for (i=(-Board[x][y]); i<=Board[x][y]; i++){
- for (j=(-Board[x][y]); j<=Board[x][y]; j++){
- if (isCellLegal(i, j) != 1)
- continue;
- if (isBomb(Board, i, j)==1){
- (*bombsRevealed)++;
- printf("Bombs revealed %d\n");
- }
- Board[i][j]=0;
- }
- }
- }
- return 0;
- }
- int isWinner(int Board[N][M])
- {
- int i, j;
- for (i = 0; i < N; i++){
- for (j = 0; j < M; j++){
- if ((Board[i][j] != -1) && (Board[i][j] != 0))
- return 0;
- }
- }
- return 1;
- }
- int playGame(int Board[N][M], int Steps[L], int numOfSteps, int *totalBombsRevealed){
- int BombsRevealed=0,i,n;
- printf("Entered playgame\n");
- for(i = 0; i < numOfSteps*2; i += 2){
- BombsRevealed = 0;
- n = performStep(Board,Steps[i],Steps[i+1],&BombsRevealed);
- printf("Performed step %d %d, result is %d", Steps[i], Steps[i+1], n);
- if(n == -1){
- return -1;
- }
- *totalBombsRevealed += BombsRevealed;
- if(isWinner(Board) == 1){
- printf("isWinner = 1\n");
- return 1;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement