Advertisement
ithoran

nece

Dec 14th, 2015
326
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.68 KB | None | 0 0
  1. // Polje.h
  2. #pragma once
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. class Polje {
  7. protected:
  8.     int n;
  9.     int m;
  10.     bool **a;
  11. public:
  12.     Polje(int x, int y);
  13.     Polje();
  14.     ~Polje();
  15. };
  16.  
  17. // Polje.cpp
  18. #pragma once
  19. #include "Polje.h"
  20.  
  21. Polje::Polje(int x, int y) {
  22.     n = x;
  23.     m = y;
  24.     a = new bool*[n];
  25.     for (int i = 0; i < n; i++) {
  26.         a[i] = new bool[m];
  27.     }
  28.     for (int i = 0; i < n; i++) {
  29.         for (int j = 0; j < n; j++) {
  30.             cin >> a[i][j];
  31.         }
  32.     }
  33. }
  34.  
  35. Polje::Polje() {
  36. }
  37.  
  38. Polje::~Polje() {
  39.     if (a) {
  40.         for (int i = 0; i < n; i++)
  41.             delete[] a[i];
  42.         delete a;
  43.     }
  44. }
  45.  
  46. // MinesweeperObject.h
  47. #pragma once
  48. #include "Polje.h"
  49.  
  50. class MinesweeperObject : public Polje {
  51. protected:
  52.     int m;
  53.     int brOM;
  54.     char z;
  55. public:
  56.     MinesweeperObject(int m, int brOM, char z);
  57.     MinesweeperObject();
  58.     virtual void komanda(int x, int y, int z) = 0;
  59.     int stampaj() {
  60.         cout << z;
  61.         if (z != '#')
  62.             return 1;
  63.         return 0;
  64.     }
  65.     int brOkolnihMina(int x, int y);
  66. };
  67.  
  68. // MinesweeperObject.cpp
  69. #include "MinesweeperObject.h"
  70. #include "Polje.h"
  71.  
  72. MinesweeperObject::MinesweeperObject() {
  73.     z = '#';
  74. }
  75.  
  76. MinesweeperObject::MinesweeperObject(int m, int brOM, char z) {
  77.     this->m = m;
  78.     this->brOM = brOM;
  79.     this->z = z;
  80. }
  81.  
  82. int MinesweeperObject::brOkolnihMina(int x, int y) {
  83.     int i, j, br = 0;
  84.     for (i = 0; i < 3; i++) {
  85.         for (j = 0; j < 3; j++) {
  86.             if (x - i >= 0 && x - i < n && y - j >= 0 && y - j < m) {
  87.                 if (a[x - i][y - j] == true) {
  88.                     br++;
  89.                 }
  90.             }
  91.         }
  92.     }
  93.     brOM = br;
  94.     return brOM;
  95. }
  96.  
  97. // NeotkrivenoPolje.h
  98. #pragma once
  99. #include "MinesweeperObject.h"
  100. #include "PraznoPolje.h"
  101. #include "PoljeSaMinom.h"
  102. #include "PoljeSaBrojem.h"
  103.  
  104. class NeotkrivenoPolje : public MinesweeperObject {
  105. public:
  106.     void komanda(int x, int y, int z);
  107.     NeotkrivenoPolje() : MinesweeperObject() {}
  108. };
  109.  
  110. // NeotkrivenoPolje.cpp
  111. #include "NeotkrivenoPolje.h"
  112.  
  113. void NeotkrivenoPolje::komanda(int x, int y, int z) {
  114.     if (z == 1) {
  115.         if (a[x - 1][y - 1] == true) {
  116.             cout << "KRAJ IGRE, POGODILI STE MINU!";
  117.             exit(0);
  118.         }
  119.         else {
  120.             if (brOkolnihMina(x, y) == 0)
  121.                 PraznoPolje();
  122.             else {
  123.                 PoljeSaBrojem();
  124.             }
  125.         }
  126.     }
  127.     else
  128.         PoljeSaMinom();
  129. }
  130.  
  131. // PoljeSaMinom.h
  132. #pragma once
  133. #include "MinesweeperObject.h"
  134. #include "NeotkrivenoPolje.h"
  135.  
  136. class PoljeSaMinom : public MinesweeperObject {
  137. public:
  138.     virtual void  komanda(int x, int y, int z) {
  139.         if (z == 2)
  140.             NeotkrivenoPolje(); // top kek
  141. }
  142.     PoljeSaMinom() : MinesweeperObject(1, 0, 'X'){}
  143. };
  144.  
  145. // PraznoPolje.h
  146. #pragma once
  147. #include "MinesweeperObject.h"
  148.  
  149. class PraznoPolje : public MinesweeperObject {
  150. public:
  151.     virtual void komanda(int x, int y, int z) {};
  152.     PraznoPolje() : MinesweeperObject(0, 0, '_') {
  153.     }
  154. };
  155.  
  156. // PoljeSaBrojem
  157. #pragma once
  158. #include "MinesweeperObject.h"
  159.  
  160. class PoljeSaBrojem : MinesweeperObject {
  161. public:
  162.     PoljeSaBrojem() : MinesweeperObject(0, brOM, brOM){}
  163.     virtual void komanda(int x, int y, int z) {};
  164. };
  165.  
  166. // main.cpp
  167. #include <iostream>
  168. #include "Polje.h"
  169. #include "MinesweeperObject.h"
  170. #include "NeotkrivenoPolje.h"
  171. #include "PoljeSaBrojem.h"
  172. #include "PoljeSaMinom.h"
  173. #include "PraznoPolje.h"
  174. using namespace std;
  175.  
  176. void main()
  177. {
  178.     int n, m, f, x, y, s = 0;
  179.     cout << "Unesite velicinu polja:\n";
  180.     cin >> n >> m;
  181.     Polje a(n, m);
  182.     MinesweeperObject **mine;
  183.     mine = new MinesweeperObject*[n];
  184.     for (int i = 0; i < n; i++) {
  185.         mine[i] = new NeotkrivenoPolje[m];
  186.     }
  187.     while (1) {
  188.         cout << "Unesite kordinate polja i funkciju:\n";
  189.         cin >> x >> y >> f;
  190.         mine[x - 1][y - 1].komanda(n, m, f);
  191.         for (int i = 0; i < n; i++)
  192.             for (int j = 0; j < m; j++)
  193.                 s = s + mine[x - 1][y - 1].stampaj();
  194.         if (s == n*m) {
  195.             cout << "Presli ste, cestitamo!";
  196.             return;
  197.         }
  198.     }
  199. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement