Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1.  
  2. #include <stdio.h>
  3. #define N 5
  4. #define M 5
  5. #define L 50
  6.  
  7. void readBoard(int board[N][M])
  8. {
  9. for(int i=0; i<N;i++)
  10. {
  11. for(int j=0; j<M;j++)
  12. {
  13. scanf("%d", &board[i][j]);
  14. }
  15. }
  16. }
  17. void readGame(int steps[L], int * numOfSteps)
  18. {
  19. int current = 0;
  20. int counter = 0;
  21. int step =0;
  22. while(scanf("%d", &step) != 0 && step != -1)
  23. {
  24. steps[current++] = step;
  25. counter++;
  26. }
  27. *numOfSteps = counter / 2;
  28. }
  29. int isCellLegal(int x, int y)
  30. {
  31. if(x <0 || y < 0)
  32. return 0;
  33. if(x > N || y > M)
  34. return 0;
  35.  
  36. return 1;
  37. }
  38. int isBomb(int Board[N][M], int x, int y)
  39. {
  40. if(Board[x][y] == -1)
  41. return 1;
  42. return 0;
  43. }
  44. int performStep(int Board[N][M], int x, int y , int* BombsRevealed)
  45. {
  46. if(Board[x][y] == -1)
  47. return -1;
  48. int value = Board[x][y];
  49. for(int i = x - value; i <= x + value; i++)
  50. {
  51. if(i < 0 || i > N)
  52. continue;
  53. for(int j = y - value; j <= y + value;j++)
  54. {
  55. if( j< 0 || j > M)
  56. continue;
  57. if(Board[i][j] == -1)
  58. *BombsRevealed = *BombsRevealed + 1;
  59. Board[i][j] = 0;
  60. }
  61. }
  62. return 0;
  63. }
  64. int isWinner(int Board[N][M])
  65. {
  66. for(int i=0; i<N;i++)
  67. {
  68. for(int j=0; j<M;j++)
  69. {
  70. if(Board[i][j] == 0)
  71. return 0;
  72. if(Board[i][j] != 0 && Board[i][j] != -1)
  73. return 0;
  74. }
  75. }
  76. return 1;
  77. }
  78. int playGame(int Board[N][M], int steps[L], int numOfSteps, int *totalBombsRevealed)
  79. {
  80. int index = 0;
  81. int stepsNumber =0;
  82.  
  83. while(isWinner(Board) == 0)
  84. {
  85. if (performStep(Board,steps[index++], steps[index], totalBombsRevealed) == -1)
  86. return -1;
  87. index += 2;
  88. stepsNumber++;
  89. if(stepsNumber == numOfSteps)
  90. return 0;
  91. }
  92. return 1;
  93. }
  94.  
  95. int main()
  96. {
  97. int Board[N][M] = {{0}};
  98. readBoard(Board);
  99. int steps[L] = {0};
  100. int stepsNr1 =0;
  101. int bombsRev1 =0;
  102. int *stepsNumber= &stepsNr1;
  103. int *bombsRev = &stepsNr1;
  104. readGame(steps, stepsNumber);
  105. printf("%d\n", playGame(Board, steps, *stepsNumber, bombsRev));
  106. printf("%d\n", *bombsRev);
  107. return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement