#include <iostream>
using namespace std;
//#pragma once
class Pole
{
char X; //wspołrzędna X
char Y; //wspołrzędna Y
int status = 0; //przypisany status
enum flaga
{ wolne = 1, zaznaczone = 2, trafione= 3 }; //flaga pola
char znak; // znak pola
public:
Pole();
Pole(const char, const char );
~Pole();
void Wprowadz_Pole(const char,const char);
bool Sprawdz_Wolne(char, char) const;
int Sprawdz_Status(const char, const char);
void Ustaw_Staus(int);
void Ustaw_Znak();
void Pokaz_Znak();
int Zwroc_Zaznaczone();
};
//#include "Pole.h"
//#include <iostream>
//using namespace std;
Pole::Pole()
{
this->X = 0; // NULL jest wskaźnikiem, nie znakiem !
this->Y = 0; // NULL jest wskaźnikiem, nie znakiem !
this->status = wolne;
Ustaw_Znak();
}
Pole::Pole(const char x, const char y)
{
this->X = x;
this->Y = y;
this->status = wolne;
Ustaw_Znak();
}
Pole::~Pole()
{
}
void Pole::Wprowadz_Pole(const char x, const char y)
{
this->X = x;
this->Y = y;
}
int Pole::Sprawdz_Status(const char x, const char y)
{
for (int i = 0; i < 9; ++i) //duza pętla po X
{
if (this->X == x)
{
for (int j = 0; j < 9; ++j)
{
if (this->Y == y)
return this->status;
}
}
}
}
void Pole::Ustaw_Staus(int a)
{
this->status = a;
cout<<"this->status = a;"<<endl;
}
void Pole::Ustaw_Znak()
{
if (this->status == trafione)
this->znak = 'T';
else if (this->status == zaznaczone)
this->znak = 'X'; // TU ZBĘDNA SPACJA
else
this->znak = 'W';
}
void Pole::Pokaz_Znak()
{
cout << this->znak;
}
int Pole::Zwroc_Zaznaczone()
{
return this->zaznaczone;
}
//PLANSZA
//#pragma once
//#include "Pole.h"
class Plansza
{
Pole plansza[9][9];
public:
Plansza();
~Plansza();
void Wyswietl_Plansze();
void Ustaw_Pole(const char, const char, int);
int Zwroc_Zaznaczone(const char, const char);
};
//#include "Plansza.h"
//#include <iostream>
//using namespace std;
Plansza::Plansza()
{
for (char i = 0; i < 9; ++i)
{
for (char j = 0; j < 9; ++j)
{
//plansza[i][j]; // Po kiego ten wiersz ?
plansza[i][j]=Pole(i, j); // Była próba bezpośredniego uruchomienia konstruktora
}
}
}
Plansza::~Plansza()
{
}
void Plansza::Wyswietl_Plansze()
{
for (int i = 0; i <= 9; ++i)
{
for (int j = 0; j <= 9; ++j)
{
cout <<"|"<< " "<<"|";
plansza[i][j];
plansza[i][j].Pokaz_Znak();
}
cout << endl << endl;;
}
}
void Plansza::Ustaw_Pole(const char x, const char y, int a)
{
plansza[x][y].Ustaw_Staus(2);
}
int Plansza::Zwroc_Zaznaczone(const char x, const char y)
{
return plansza[x][y].Zwroc_Zaznaczone(); // Po kiego to Pole:: ?
}
//STATKI
//#pragma once
//#include "Plansza.h"
class Statki
{
Plansza okrety;
public:
Statki();
~Statki();
void Jedno_Masztowiec(const char, const char);
void Dwu_Masztowiec();
void Trzy_Masztowiec();
void Ustaw_Polozenie(const char, const char);
};
//#include "Statki.h"
Statki::Statki()
{
}
Statki::~Statki()
{
}
void Statki::Jedno_Masztowiec(const char x, const char y)
{
Ustaw_Polozenie(x, y);
}
void Statki::Ustaw_Polozenie(const char x, const char y)
{
okrety.Ustaw_Pole(x, y, okrety.Zwroc_Zaznaczone(x,y));
}
int main()
{
Statki s;
s.Ustaw_Polozenie(0,0);
s.Ustaw_Polozenie(8,8);
s.Jedno_Masztowiec(2,3);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8jcHJhZ21hIG9uY2UKY2xhc3MgUG9sZQp7CiAgICBjaGFyIFg7ICAgICAgICAvL3dzcG/FgnJ6xJlkbmEgWAogICAgY2hhciBZOyAgICAgICAgLy93c3BvxYJyesSZZG5hIFkKICAgIGludCBzdGF0dXMgPSAwOyAgICAvL3ByenlwaXNhbnkgc3RhdHVzCiAgICBlbnVtIGZsYWdhCiAgICB7ICAgIHdvbG5lID0gMSwgICAgemF6bmFjem9uZSA9IDIsICB0cmFmaW9uZT0gMyAgfTsgICAgICAgIC8vZmxhZ2EgcG9sYQogICAgY2hhciB6bmFrOyAgLy8gem5hayBwb2xhCiAKcHVibGljOgogICAgUG9sZSgpOwogICAgUG9sZShjb25zdCBjaGFyLCBjb25zdCBjaGFyICk7CiAgICB+UG9sZSgpOwogICAgdm9pZCBXcHJvd2Fkel9Qb2xlKGNvbnN0IGNoYXIsY29uc3QgY2hhcik7CiAgICBib29sIFNwcmF3ZHpfV29sbmUoY2hhciwgY2hhcikgY29uc3Q7CiAgICBpbnQgU3ByYXdkel9TdGF0dXMoY29uc3QgY2hhciwgY29uc3QgY2hhcik7CiAgICB2b2lkIFVzdGF3X1N0YXVzKGludCk7CiAgICB2b2lkIFVzdGF3X1puYWsoKTsKICAgIHZvaWQgUG9rYXpfWm5haygpOwogICAgaW50IFp3cm9jX1phem5hY3pvbmUoKTsKfTsKIAogCi8vI2luY2x1ZGUgIlBvbGUuaCIKLy8jaW5jbHVkZSA8aW9zdHJlYW0+Ci8vdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogClBvbGU6OlBvbGUoKQp7CiAgICB0aGlzLT5YID0gMDsgICAgICAgICAgICAgICAgICAgLy8gTlVMTCBqZXN0IHdza2HFum5pa2llbSwgbmllIHpuYWtpZW0gIQogICAgdGhpcy0+WSA9IDA7ICAgICAgICAgICAgICAgICAgIC8vIE5VTEwgamVzdCB3c2thxbpuaWtpZW0sIG5pZSB6bmFraWVtICEKICAgIHRoaXMtPnN0YXR1cyA9IHdvbG5lOwogICAgVXN0YXdfWm5haygpOwp9ClBvbGU6OlBvbGUoY29uc3QgY2hhciB4LCBjb25zdCBjaGFyIHkpCnsKICAgIHRoaXMtPlggPSB4OwogICAgdGhpcy0+WSA9IHk7CiAgICB0aGlzLT5zdGF0dXMgPSB3b2xuZTsKICAgIFVzdGF3X1puYWsoKTsKIAp9CiAKIApQb2xlOjp+UG9sZSgpCnsKfQogCnZvaWQgUG9sZTo6V3Byb3dhZHpfUG9sZShjb25zdCBjaGFyIHgsIGNvbnN0IGNoYXIgeSkKewogICAgdGhpcy0+WCA9IHg7CiAgICB0aGlzLT5ZID0geTsKfQppbnQgUG9sZTo6U3ByYXdkel9TdGF0dXMoY29uc3QgY2hhciB4LCBjb25zdCBjaGFyIHkpCnsKIAogICAgZm9yIChpbnQgaSA9IDA7IGkgPCA5OyArK2kpICAgIC8vZHV6YSBwxJl0bGEgcG8gWAogICAgewogICAgICAgIGlmICh0aGlzLT5YID09IHgpCiAgICAgICAgewogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDk7ICsraikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKHRoaXMtPlkgPT0geSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy0+c3RhdHVzOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CiAKdm9pZCBQb2xlOjpVc3Rhd19TdGF1cyhpbnQgYSkKewogICAgdGhpcy0+c3RhdHVzID0gYTsKICAgIGNvdXQ8PCJ0aGlzLT5zdGF0dXMgPSBhOyI8PGVuZGw7Cn0Kdm9pZCBQb2xlOjpVc3Rhd19abmFrKCkKewogICAgaWYgKHRoaXMtPnN0YXR1cyA9PSB0cmFmaW9uZSkKICAgICAgICB0aGlzLT56bmFrID0gJ1QnOwogICAgZWxzZSBpZiAodGhpcy0+c3RhdHVzID09IHphem5hY3pvbmUpCiAgICAgICAgdGhpcy0+em5hayA9ICdYJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUVSBaQsSYRE5BIFNQQUNKQQogICAgZWxzZQogICAgICAgIHRoaXMtPnpuYWsgPSAnVyc7CiAKfQp2b2lkIFBvbGU6OlBva2F6X1puYWsoKQp7CiAgICBjb3V0IDw8IHRoaXMtPnpuYWs7Cn0KaW50IFBvbGU6Olp3cm9jX1phem5hY3pvbmUoKQp7CiAgICByZXR1cm4gdGhpcy0+emF6bmFjem9uZTsKfQogCiAKIAovL1BMQU5TWkEKLy8jcHJhZ21hIG9uY2UKLy8jaW5jbHVkZSAiUG9sZS5oIgogCiAKY2xhc3MgUGxhbnN6YQp7CiAgICBQb2xlIHBsYW5zemFbOV1bOV07CiAKcHVibGljOgogICAgUGxhbnN6YSgpOwogICAgflBsYW5zemEoKTsKICAgIHZvaWQgV3lzd2lldGxfUGxhbnN6ZSgpOwogICAgdm9pZCBVc3Rhd19Qb2xlKGNvbnN0IGNoYXIsIGNvbnN0IGNoYXIsIGludCk7CiAgICBpbnQgWndyb2NfWmF6bmFjem9uZShjb25zdCBjaGFyLCBjb25zdCBjaGFyKTsKfTsKIAovLyNpbmNsdWRlICJQbGFuc3phLmgiCi8vI2luY2x1ZGUgPGlvc3RyZWFtPgogCi8vdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApQbGFuc3phOjpQbGFuc3phKCkgCnsKICAgIGZvciAoY2hhciBpID0gMDsgaSA8IDk7ICsraSkKICAgIHsKICAgICAgICBmb3IgKGNoYXIgaiA9IDA7IGogPCA5OyArK2opCiAgICAgICAgewogICAgICAgICAgICAvL3BsYW5zemFbaV1bal07ICAgICAgICAgICAgICAgICAgICAgICAvLyBQbyBraWVnbyB0ZW4gd2llcnN6ID8KICAgICAgICAgICAgcGxhbnN6YVtpXVtqXT1Qb2xlKGksIGopOyAgICAgICAgICAgICAgLy8gQnnFgmEgcHLDs2JhIGJlenBvxZtyZWRuaWVnbyB1cnVjaG9taWVuaWEgIGtvbnN0cnVrdG9yYQogICAgICAgIH0KICAgIH0KfQogCiAKUGxhbnN6YTo6flBsYW5zemEoKQp7Cn0KIAp2b2lkIFBsYW5zemE6Old5c3dpZXRsX1BsYW5zemUoKQp7CiAgICBmb3IgKGludCBpID0gMDsgaSA8PSA5OyArK2kpCiAgICB7CiAKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8PSA5OyArK2opCiAgICAgICAgewogCiAgICAgICAgICAgIGNvdXQgPDwifCI8PCAiICI8PCJ8IjsKICAgICAgICAgICAgcGxhbnN6YVtpXVtqXTsKICAgICAgICAgICAgcGxhbnN6YVtpXVtqXS5Qb2thel9abmFrKCk7CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgZW5kbCA8PCBlbmRsOzsKICAgIH0KIAogCn0Kdm9pZCBQbGFuc3phOjpVc3Rhd19Qb2xlKGNvbnN0IGNoYXIgeCwgY29uc3QgY2hhciB5LCBpbnQgYSkKewogICAgcGxhbnN6YVt4XVt5XS5Vc3Rhd19TdGF1cygyKTsKfQppbnQgUGxhbnN6YTo6Wndyb2NfWmF6bmFjem9uZShjb25zdCBjaGFyIHgsIGNvbnN0IGNoYXIgeSkKewogICAgcmV0dXJuIHBsYW5zemFbeF1beV0uWndyb2NfWmF6bmFjem9uZSgpOyAvLyBQbyBraWVnbyB0byBQb2xlOjogPwogCn0KIAogCiAKLy9TVEFUS0kKLy8jcHJhZ21hIG9uY2UKLy8jaW5jbHVkZSAiUGxhbnN6YS5oIgpjbGFzcyBTdGF0a2kKewogICAgUGxhbnN6YSBva3JldHk7CnB1YmxpYzoKICAgIFN0YXRraSgpOwogICAgflN0YXRraSgpOwogICAgdm9pZCBKZWRub19NYXN6dG93aWVjKGNvbnN0IGNoYXIsIGNvbnN0IGNoYXIpOwogICAgdm9pZCBEd3VfTWFzenRvd2llYygpOwogICAgdm9pZCBUcnp5X01hc3p0b3dpZWMoKTsKICAgIHZvaWQgVXN0YXdfUG9sb3plbmllKGNvbnN0IGNoYXIsIGNvbnN0IGNoYXIpOwp9OwogCi8vI2luY2x1ZGUgIlN0YXRraS5oIgogCiAKU3RhdGtpOjpTdGF0a2koKQp7Cn0KIAogClN0YXRraTo6flN0YXRraSgpCnsKfQp2b2lkIFN0YXRraTo6SmVkbm9fTWFzenRvd2llYyhjb25zdCBjaGFyIHgsIGNvbnN0IGNoYXIgeSkKewogICAgVXN0YXdfUG9sb3plbmllKHgsIHkpOwp9CiAKdm9pZCBTdGF0a2k6OlVzdGF3X1BvbG96ZW5pZShjb25zdCBjaGFyIHgsIGNvbnN0IGNoYXIgeSkKewogICAgb2tyZXR5LlVzdGF3X1BvbGUoeCwgeSwgb2tyZXR5Llp3cm9jX1phem5hY3pvbmUoeCx5KSk7Cn0gCgppbnQgbWFpbigpCiAgewogICBTdGF0a2kgczsKICAgcy5Vc3Rhd19Qb2xvemVuaWUoMCwwKTsKICAgcy5Vc3Rhd19Qb2xvemVuaWUoOCw4KTsKICAgcy5KZWRub19NYXN6dG93aWVjKDIsMyk7CiAgIHJldHVybiAwOwogIH0=