Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <string>
- //#define PION 1
- //#define POZIOM 2
- enum Orientacja{PION=1, POZIOM};
- using namespace std;
- class Gracz{
- private:
- char pola [10][10];
- char strzaly[10][10];
- int licznik;
- public:
- char get_pole(int x, int y);
- bool czy_zatopione(int licznik, int zatopione);
- void buduj_statek(int ilumasztowiec, int statki);
- void strzelaj();
- bool czy_mozna_postawic_statek(int x, int y, int ilumasztowiec, Orientacja orientacja);
- bool czy_mozna_postawic_maszt(int x, int y);
- void uzupelnij_wypisz();
- };
- char Gracz::get_pole (int x, int y){
- if (x<10 && y<10 && x>=0 && y>=0){
- return pola[x][y];
- }
- return '@';
- };
- bool Gracz::czy_zatopione(int licznik, int zatopione){
- if (licznik == zatopione)
- {
- return true;
- }
- return false;
- };
- bool Gracz::czy_mozna_postawic_maszt(int x, int y){
- if ( (get_pole (x, y) != 'O') || (get_pole(x+1, y) !='O' && get_pole(x+1, y) !='@') || (get_pole(x-1,y) != 'O' && get_pole(x-1,y) != '@') ||
- (get_pole(x-1,y-1) !='O' && get_pole(x-1,y-1) != '@') || (get_pole(x,y-1) !='O' && get_pole(x,y-1) != '@') ||
- (get_pole(x+1,y-1) !='O' && get_pole(x+1,y-1) != '@') || (get_pole(x-1,y+1) !='O' && get_pole(x-1,y+1) != '@')||
- (get_pole(x,y+1) !='O' && get_pole(x,y+1) != '@') || (get_pole(x+1,y+1) !='O' && get_pole(x+1,y+1) != '@'))
- {
- return false;
- }
- return true;
- };
- bool Gracz::czy_mozna_postawic_statek(int x, int y, int ilumasztowiec, Orientacja orientacja){
- if (orientacja == PION)
- {
- for (int i=0; i<ilumasztowiec; i++)
- {
- if(!czy_mozna_postawic_maszt(x, y+i))
- {
- return false;
- }
- }
- }
- else if(orientacja == POZIOM)
- {
- for (int i=0; i<ilumasztowiec; i++)
- {
- if(!czy_mozna_postawic_maszt(x+i, y))
- {
- return false;
- }
- }
- }
- return true;
- };
- void Gracz::uzupelnij_wypisz(){
- for(int i=0; i<10; i++)
- {
- for (int j=0;j<10;j++){
- pola[j][i]='O';
- }
- cout<<endl;
- }
- cout<<"X0123456789 \n";
- for(int i=0; i<10; i++)
- {
- cout<<i;
- for (int j=0;j<10;j++){
- cout<<pola[j][i];
- }
- cout<<endl;
- }
- for(int i=0; i<10; i++)
- {
- for (int j=0;j<10;j++){
- strzaly[j][i]='.';
- }
- cout<<endl;
- }
- };
- void Gracz::buduj_statek(int ilumasztowiec, int statki){
- for (int i=0; i<statki; i++){
- licznik = 0;
- Orientacja orientacja;
- int x,y;
- char znak;
- if (ilumasztowiec == 4){
- znak = '4';
- }
- else if (ilumasztowiec == 3){
- znak = '3';
- }
- else if (ilumasztowiec == 2){
- znak = '2';
- }
- else if (ilumasztowiec == 1){
- znak = '1';
- }
- while(true){
- cout<<"Podaj orientacje : 1.Pionowa 2.Pozioma"<<endl;
- while(true){
- cin>>orientacja;
- if (orientacja != PION && orientacja != POZIOM){
- cout<<"Zla orientacja, prosze podac ponownie: (1.Pionowa 2.Pozioma)"<<endl;
- continue;
- }
- else
- {
- break;
- }
- }
- cout<<"Podaj x i y (zakres od 0 do 9)"<<endl;
- while (true){
- cin>>x;
- cin>>y;
- if (x>=0 && x<10 && y>=0 && y<10){
- break;
- }
- else
- {
- cout<<"Zle wspolrzedne, prosze podac ponownie (zakres od 0 do 9) "<<endl;
- continue;
- }
- }
- if (czy_mozna_postawic_statek(x,y,ilumasztowiec,orientacja) && orientacja == PION ){
- for (int i =0; i<ilumasztowiec; i++){
- pola[x][y+i] = znak;
- licznik++;
- }
- }
- else if (czy_mozna_postawic_statek(x,y,ilumasztowiec,orientacja) && orientacja == POZIOM ){
- for (int i =0; i<ilumasztowiec; i++){
- pola[x+i][y] = znak;
- licznik++;
- }
- }
- else
- {
- cout<<"Nie mozna postawic statku na wybranych polach, stawiamy od nowa :)"<<endl;
- continue;
- }
- break;
- }
- cout<<"X0123456789 \n";
- for(int i=0; i<10; i++)
- {
- cout<<i;
- for (int j=0;j<10;j++){
- cout<<pola[j][i];
- }
- cout<<endl;
- }
- }
- };
- void Gracz::strzelaj(){
- int zatopione = 0;
- while(true){
- bool trafiony = true;
- cout<<"podaj wspolrzedne strzalu:";
- int x,y;
- cin>>x;
- cin>>y;
- for (int i = 0; i<10; i++){
- for (int j = 0; j<10; j++){
- if (get_pole(x,y) != '4' && get_pole(x,y) != '3' && get_pole(x,y) != '2' && get_pole(x,y) != '1' ){
- trafiony = false;
- }
- }
- }
- if (trafiony == true){
- cout<<"trafiony, podaj kolejny strzal";
- strzaly[x][y] = '/';
- pola [x][y] = 'T';
- zatopione++;
- if (czy_zatopione(licznik,zatopione) == true){
- cout<<"koniec gry";
- break;
- exit (0);
- }
- continue;
- }
- else {
- cout<<"pudlo";
- strzaly[x][y] = 'X';
- }
- }
- cout<<"X0123456789 \n";
- for(int i=0; i<10; i++)
- {
- cout<<i;
- for (int j=0;j<10;j++){
- cout<<strzaly[j][i];
- }
- cout<<endl;
- }
- cout<<"X0123456789 \n";
- for(int i=0; i<10; i++)
- {
- cout<<i;
- for (int j=0;j<10;j++){
- cout<<pola[j][i];
- }
- cout<<endl;
- }
- };
- int main(){
- Gracz g;
- g.uzupelnij_wypisz();
- g.buduj_statek(4,3);
- g.strzelaj();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement