Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <conio.h>
- #include <windows.h>
- #include <time.h>
- #include <fstream>
- #include <string>
- #include <iostream>
- #include <vector>
- #include <cstdlib>
- #include <ctime>
- #include <unistd.h>
- using namespace std;
- class Pole
- {
- public:
- Pole(int _value, bool _isOdkryte, bool _isMina, bool _isFlaga);
- ~Pole() { }
- bool getOdkryte() const { return odkryte; }
- bool getMina() const { return mina; }
- bool getFlaga() const { return flaga; }
- void setIsOdkryte(bool _isOdkryte) { odkryte = _isOdkryte; }
- void setIsMina(bool _isMina) { mina = _isMina; }
- void setIsFlaga(bool _isFlaga) { flaga = _isFlaga; }
- int info();
- int value; //wartosc pola
- bool odkryte; //jest odkryte ?
- bool mina; //posiadamine?
- bool flaga; //jest oznaczone flaga ?
- int getValue() const { return value; }
- void setValue(int _value) { value = _value; }
- };
- Pole::Pole(int _value, bool _isOdkryte, bool _isMina, bool _isFlaga)
- {
- _value=0;
- _isOdkryte=false;
- _isMina=false;
- _isFlaga=false;
- }
- class Plansza
- {
- public:
- Plansza(size_t M, size_t N);
- ~Plansza() { }
- void setPole(size_t M, size_t N, Pole& _p) { board[M][N] = _p; };
- Pole& getPole(size_t M, size_t N) { return board[M][N]; }
- void debug_display(); // wyswietla plansze
- bool hasMine(int x, int y); //czy ma miny
- int countMines(int x, int y); //liczenie w okolicy
- void deployMines(size_t M, size_t N); //ustawia miny
- void display();
- void reveal(int x, int y);
- private:
- vector<vector<Pole> > board;
- };
- /*int Pole::info()
- {
- Pole p;
- int a,b,c;
- cout<<"[";
- if(p.odkryte=false){a=1; cout<<a;}
- else {a=0; cout<<a;}
- if(p.mina=false){b=1; cout<<b;}
- else {b=0; cout<<b;}
- if(p.flaga=false){c=1; cout<<c;}
- else {c=0; cout<<c;}
- cout<<"]";
- }*/
- /*void Plansza::debug_display()
- {
- int i,j=0;
- Pole tab[i][j];
- while(j<10){
- for(i=0;i<10;i++){tab[i][j].info();}
- cout<<endl;
- j++;}
- }
- */
- Plansza::Plansza(size_t M, size_t N)
- {
- M=10;
- N=10;
- //tworzenie tablicy pól o wymiarach M, N
- board.resize(N); //ustaw N kolumn
- for(size_t i = 0; i < N; i++) //dla ka?dej kolumny...
- {
- board[i].resize(M); //ustaw M wierszy
- }
- deployMines(M, N);
- }
- void Plansza::deployMines(size_t M, size_t N)
- { int losownik;
- losownik= time(NULL);
- srand(losownik);
- //25 bomb
- for(size_t k = 0; k < 25; k++)
- {
- size_t M = rand() % M; //wylosuj liczbe dla wsporzdnej X
- size_t N = rand() % N; //wylosuj liczbe dla wspolrzednej Y
- if(board[M][N].getMina() == false) //jeoli wylosowane pole NIE jest uzbrojone
- {
- board[M][N].setIsMina(true); //ustaw na uzbrojone
- for(size_t i = (M > 0 ? M-1 : M); i < (M < 9 ? M+2 : M+1); i++)
- {
- for(size_t j = (N > 0 ? N-1 : N); j < (N < 9 ? N+2 : N+1); j++)
- {
- board[i][j].setValue(board[i][j].getValue() + 1);
- }
- }
- }
- }
- }
- bool Plansza::hasMine(int i, int j)
- {
- if (board[i][j].mina=true)
- {
- return true;
- }
- else {return false;}
- }
- int Plansza::countMines(int x, int y)
- {
- x=0;
- int j;
- int i;
- for(int u=0; u<3; u++)
- {
- if(board[i-1][j-1].mina=true){x++;}
- i++;
- }
- if(board[i-1][j].mina=true){x++;}
- if(board[i+1][j].mina=true){x++;}
- for(int z=0; z<3; z++)
- {
- if(board[i-1][j+1].mina=true){x++;}
- i++;
- }
- return x;
- }
- void Plansza::display()
- {
- int i=0;
- int j=0;
- for(j; j<10; j++)
- {
- for(i; i<10; i++)
- {
- if(board[i][j].odkryte=false){cout<<"[]";}
- else if(board[i][j].flaga=true){cout<<"[?]";}
- else if(board[i][j].mina=true){cout<<"[x]";}
- else
- {cout<<"[";
- countMines(i, j);
- cout<<"]";}
- }
- }
- }
- void Plansza::reveal(int x, int y)
- {
- cout <<"wprowadz wspolrzedna x: ";
- cin >> x;
- cout <<"/n wprowadz wspolrzedna y: ";
- cin >> y;
- if(board[x][y].mina=true){cout<<"Koniec gry";}
- else {board[x][y].setIsOdkryte(true);}
- }
- int main()
- {
- int z; int f;
- Plansza p(z,f);
- p.display();
- p.reveal(z, f);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement