Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.03 KB | None | 0 0
  1. #include <stdio.h>
  2. #define N 5
  3. #define M 5
  4. #define L 50
  5.  
  6. void readBoard(int board[N][M]);
  7. void readGame(int steps[L], int * numOfSteps);
  8. int isCellLegal(int x, int y);
  9. int isBomb(int Board[N][M], int x, int y);
  10. int performStep(int Board[N][M], int x, int y, int * bombsRevealed);
  11. int isWinner(int  Board[N][M]);
  12. int playGame(int Board[N][M], int Steps[L], int numOfSteps, int *totalBombsRevealed);
  13.  
  14. int main()
  15. {
  16.     int board[N][M]={0};
  17.     int steps[L]={0};
  18.     int temp = 0, temp1 = 0;
  19.     int *numOfSteps = &temp, *totalBombsRevealed = &temp1;
  20.     int k,i,j;
  21.  
  22.     readBoard(board);
  23.     readGame(steps, numOfSteps);
  24.     k = playGame(board, steps, *numOfSteps, totalBombsRevealed);
  25.  
  26.     printf("%d\n", k);
  27.     printf("%d\n", *totalBombsRevealed);
  28.  
  29.    for (i = 0; i < N; i++){
  30.         for (j = 0; j < M; j++){
  31.             printf("%d",board[i][j]);
  32.             printf ("\n");
  33.         }
  34.     }
  35.     return 0;
  36. }
  37.  
  38. void readBoard(int board[N][M])
  39.   {
  40.  
  41.     int i,j;
  42.     printf("Entered read board\n");
  43.     for (i=0;i<N;i++)
  44.         {for (j=0; j<M;j++)
  45.             {scanf("%d",&board[i][j]);
  46.             }
  47.        }
  48.     for (i = 0; i < N; i++){
  49.         for(j = 0; j < M; j++){
  50.             printf("%d ", board[i][j]);
  51.         }
  52.         printf("\n");
  53.     }
  54.   }
  55. void readGame(int steps[L], int * numOfSteps)
  56. {
  57.     int i, m;
  58.     *numOfSteps = 0;
  59.     printf("Entered readGame\n");
  60.     for(i=0; i < L;i++){
  61.         scanf("%d",&m);
  62.         if (m == -1){
  63.             printf("Breaking game scan i %d, scanned -1\n", i);
  64.             break;
  65.         }
  66.         else{
  67.             steps[i] = m;
  68.             /*printf("Steps[%d] = %d\n", i, m);*/
  69.             if (steps[i] %2 == 1){
  70.                 *numOfSteps = *numOfSteps + 1;
  71.                 printf("NumOfSteps %d\n", *numOfSteps);
  72.             }
  73.         }
  74.     }
  75.     printf("NumOfSteps %d\n", *numOfSteps);
  76.     printf("Steps:\n");
  77.     for(i = 0; i < L/2; i++){
  78.         printf("%d %d\n", steps[2*i], steps[2*i + 1]);
  79.     }
  80. }
  81. int isCellLegal(int x, int y){
  82.     if (x>=N || x<0 ||y<0||y>=M )
  83.         return 0;
  84.     return 1 ;
  85. }
  86.  
  87. int isBomb(int Board[N][M], int x, int y)
  88. {
  89.     if (Board[x][y]== -1)
  90.     {
  91.         printf("Found a bomb x %d, y %d\n", x, y);
  92.         return 1;
  93.     }
  94.     else
  95.     {Board[x][y]=0;
  96.      return 0;
  97.     }
  98. }
  99.  
  100. int performStep(int Board[N][M], int x, int y, int * bombsRevealed){
  101.     int i = 0, j = 0;
  102.     printf("Entered performStep x %d, y %d\n", x, y);
  103.     printf("Board:\n");
  104.     for (i = 0; i < N; i++){
  105.         for (j = 0; j < M; j++){
  106.             printf("%d",Board[i][j]);
  107.             printf ("\n");
  108.     }
  109.     if (isBomb(Board, x, y) == 1){
  110.         printf("Found a bomb x %d, y %d\n", x, y);
  111.         * bombsRevealed = 0;
  112.         return -1;
  113.     }
  114.     printf("Board in place %d %d is %d\n", x, y, Board[x][y]);
  115.  
  116.     for (i=(-Board[x][y]); i<=Board[x][y]; i++){
  117.         for (j=(-Board[x][y]); j<=Board[x][y]; j++){
  118.             if (isCellLegal(i, j) != 1)
  119.                 continue;
  120.             if (isBomb(Board, i, j)==1){
  121.                 (*bombsRevealed)++;
  122.                 printf("Bombs revealed %d\n");
  123.             }
  124.             Board[i][j]=0;
  125.         }
  126.     }
  127.     }
  128.     return 0;
  129.     }
  130.  
  131. int isWinner(int Board[N][M])
  132. {
  133.     int i, j;
  134.     for (i = 0; i < N; i++){
  135.         for (j = 0; j < M; j++){
  136.             if ((Board[i][j] != -1) && (Board[i][j] != 0))
  137.                 return 0;
  138.         }
  139.     }
  140.     return 1;
  141. }
  142.  
  143. int playGame(int Board[N][M], int Steps[L], int numOfSteps, int *totalBombsRevealed){
  144.     int BombsRevealed=0,i,n;
  145.     printf("Entered playgame\n");
  146.     for(i = 0; i < numOfSteps*2; i += 2){
  147.         BombsRevealed = 0;
  148.         n = performStep(Board,Steps[i],Steps[i+1],&BombsRevealed);
  149.         printf("Performed step %d %d, result is %d", Steps[i], Steps[i+1], n);
  150.         if(n == -1){
  151.             return -1;
  152.         }
  153.         *totalBombsRevealed += BombsRevealed;
  154.         if(isWinner(Board) == 1){
  155.             printf("isWinner = 1\n");
  156.             return 1;
  157.         }
  158.     }
  159.     return 0;
  160.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement