Advertisement
Guest User

kk

a guest
Jan 16th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.02 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <string>
  4.  
  5. //#define PION 1
  6. //#define POZIOM 2
  7.  
  8. enum Orientacja{PION=1, POZIOM};
  9.  
  10. using namespace std;
  11.  
  12. class Gracz{
  13. private:
  14.     char pola [10][10];
  15.     char strzaly[10][10];
  16.     int licznik;
  17. public:
  18.     char get_pole(int x, int y);
  19.     bool czy_zatopione(int licznik, int zatopione);
  20.     void buduj_statek(int ilumasztowiec, int statki);
  21.     void strzelaj();
  22.     bool czy_mozna_postawic_statek(int x, int y, int ilumasztowiec, Orientacja orientacja);
  23.     bool czy_mozna_postawic_maszt(int x, int y);
  24.     void uzupelnij_wypisz();
  25.  
  26. };
  27.  
  28.  
  29.  
  30. char Gracz::get_pole (int x, int y){
  31.     if (x<10 && y<10 && x>=0 && y>=0){
  32.         return pola[x][y];
  33.     }
  34.  
  35.     return '@';
  36. };
  37. bool Gracz::czy_zatopione(int licznik, int zatopione){
  38.     if (licznik == zatopione)
  39.     {
  40.         return true;
  41.     }
  42.     return false;
  43.  
  44. };
  45.  
  46. bool Gracz::czy_mozna_postawic_maszt(int x, int y){
  47.     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) != '@') ||
  48.         (get_pole(x-1,y-1) !='O' && get_pole(x-1,y-1) != '@') || (get_pole(x,y-1) !='O' && get_pole(x,y-1) != '@') ||
  49.         (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) != '@')||
  50.         (get_pole(x,y+1) !='O' && get_pole(x,y+1) != '@') || (get_pole(x+1,y+1) !='O' && get_pole(x+1,y+1) != '@'))
  51.     {
  52.         return  false;
  53.     }
  54.     return true;
  55.  
  56.  
  57. };
  58.  
  59. bool Gracz::czy_mozna_postawic_statek(int x, int y, int ilumasztowiec, Orientacja orientacja){
  60.     if (orientacja == PION)
  61.     {
  62.         for (int i=0; i<ilumasztowiec; i++)
  63.         {
  64.             if(!czy_mozna_postawic_maszt(x, y+i))
  65.             {
  66.                 return false;
  67.             }
  68.         }
  69.     }
  70.     else if(orientacja == POZIOM)
  71.     {
  72.         for (int i=0; i<ilumasztowiec; i++)
  73.         {
  74.             if(!czy_mozna_postawic_maszt(x+i, y))
  75.             {
  76.                 return false;
  77.             }
  78.         }
  79.     }
  80.     return true;
  81. };
  82.  
  83.  
  84.  
  85.  
  86. void Gracz::uzupelnij_wypisz(){
  87.     for(int i=0; i<10; i++)
  88.     {
  89.  
  90.         for (int j=0;j<10;j++){
  91.  
  92.             pola[j][i]='O';
  93.         }
  94.  
  95.         cout<<endl;
  96.     }
  97.  
  98.  
  99.     cout<<"X0123456789  \n";          
  100.     for(int i=0; i<10; i++)
  101.     {
  102.         cout<<i;
  103.         for (int j=0;j<10;j++){
  104.             cout<<pola[j][i];
  105.         }
  106.  
  107.         cout<<endl;
  108.     }
  109.  
  110.  
  111.     for(int i=0; i<10; i++)
  112.     {
  113.  
  114.         for (int j=0;j<10;j++){
  115.  
  116.             strzaly[j][i]='.';
  117.         }
  118.  
  119.         cout<<endl;
  120.     }
  121.  
  122.  
  123. };
  124.  
  125.  
  126.  
  127. void Gracz::buduj_statek(int ilumasztowiec, int statki){
  128.     for (int i=0; i<statki; i++){
  129.         licznik = 0;
  130.         Orientacja orientacja;
  131.         int x,y;
  132.         char znak;
  133.         if (ilumasztowiec == 4){
  134.             znak = '4';
  135.         }
  136.         else if (ilumasztowiec == 3){
  137.             znak = '3';
  138.         }
  139.         else if (ilumasztowiec == 2){
  140.             znak = '2';
  141.         }
  142.         else if (ilumasztowiec == 1){
  143.             znak = '1';
  144.         }
  145.         while(true){
  146.             cout<<"Podaj orientacje : 1.Pionowa 2.Pozioma"<<endl;
  147.             while(true){
  148.                 cin>>orientacja;
  149.                 if (orientacja != PION && orientacja != POZIOM){
  150.                     cout<<"Zla orientacja, prosze podac ponownie: (1.Pionowa 2.Pozioma)"<<endl;
  151.                     continue;
  152.                 }
  153.                 else
  154.                 {
  155.                     break;
  156.                 }
  157.             }
  158.             cout<<"Podaj x i y (zakres od 0 do 9)"<<endl;
  159.             while (true){
  160.                 cin>>x;
  161.                 cin>>y;
  162.                 if (x>=0 && x<10 && y>=0 && y<10){
  163.                     break;
  164.                 }
  165.                 else
  166.                 {
  167.                     cout<<"Zle wspolrzedne, prosze podac ponownie (zakres od 0 do 9) "<<endl;
  168.                     continue;
  169.                 }
  170.             }
  171.  
  172.             if (czy_mozna_postawic_statek(x,y,ilumasztowiec,orientacja) && orientacja == PION ){
  173.                 for (int i =0; i<ilumasztowiec; i++){
  174.                     pola[x][y+i] = znak;
  175.                     licznik++;
  176.  
  177.                 }
  178.             }
  179.             else if (czy_mozna_postawic_statek(x,y,ilumasztowiec,orientacja) && orientacja == POZIOM ){
  180.                 for (int i =0; i<ilumasztowiec; i++){
  181.                     pola[x+i][y] = znak;
  182.                     licznik++;
  183.  
  184.                 }
  185.             }
  186.             else
  187.             {
  188.                 cout<<"Nie mozna postawic statku na wybranych polach, stawiamy od nowa :)"<<endl;
  189.                 continue;
  190.             }
  191.             break;
  192.         }
  193.  
  194.  
  195.  
  196.  
  197.  
  198.         cout<<"X0123456789  \n";          
  199.         for(int i=0; i<10; i++)
  200.         {
  201.             cout<<i;
  202.             for (int j=0;j<10;j++){
  203.                 cout<<pola[j][i];
  204.             }
  205.  
  206.             cout<<endl;
  207.         }
  208.     }
  209. };
  210.  
  211. void Gracz::strzelaj(){
  212.     int zatopione = 0;
  213.     while(true){
  214.         bool trafiony = true;
  215.         cout<<"podaj wspolrzedne strzalu:";
  216.         int x,y;
  217.         cin>>x;
  218.         cin>>y;
  219.         for (int i = 0; i<10; i++){
  220.             for (int j = 0; j<10; j++){
  221.                 if (get_pole(x,y) != '4' && get_pole(x,y) != '3' && get_pole(x,y) != '2' && get_pole(x,y) != '1' ){
  222.                     trafiony = false;
  223.                 }  
  224.             }
  225.  
  226.         }
  227.         if (trafiony == true){
  228.             cout<<"trafiony, podaj kolejny strzal";
  229.             strzaly[x][y] = '/';
  230.             pola [x][y] = 'T';
  231.             zatopione++;
  232.             if (czy_zatopione(licznik,zatopione) == true){
  233.                 cout<<"koniec gry";
  234.                 break;
  235.                 exit (0);
  236.             }
  237.             continue;
  238.  
  239.  
  240.         }
  241.         else {
  242.             cout<<"pudlo";
  243.             strzaly[x][y] = 'X';
  244.  
  245.         }
  246.  
  247.  
  248.  
  249.     }
  250.     cout<<"X0123456789  \n";          
  251.     for(int i=0; i<10; i++)
  252.     {
  253.         cout<<i;
  254.         for (int j=0;j<10;j++){
  255.             cout<<strzaly[j][i];
  256.         }
  257.  
  258.         cout<<endl;
  259.     }
  260.  
  261.     cout<<"X0123456789  \n";          
  262.     for(int i=0; i<10; i++)
  263.     {
  264.         cout<<i;
  265.         for (int j=0;j<10;j++){
  266.             cout<<pola[j][i];
  267.         }
  268.  
  269.         cout<<endl;
  270.     }
  271.  
  272.  
  273.  
  274.  
  275. };
  276.  
  277.  
  278. int main(){
  279.  
  280.  
  281.  
  282.  
  283.  
  284.     Gracz g;
  285.  
  286.     g.uzupelnij_wypisz();
  287.     g.buduj_statek(4,3);
  288.  
  289.  
  290.     g.strzelaj();
  291.  
  292.  
  293.  
  294.  
  295.  
  296.     return 0;
  297. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement