Untitled
raw download clone
TEXT
views 52
,
size 4975 b
#include <iostream>
using namespace std;

class Statek {
 public:
  int gruboscKadluba;
  Statek(const string &nazwa, int liczbaArmat, double wspolczynnikSkutecznosciUzbrojenia, int gruboscKadluba)
      : nazwa(nazwa), liczbaArmat(liczbaArmat), wspolSkutecznosciUzbrojenia(wspolczynnikSkutecznosciUzbrojenia),
        gruboscKadluba(gruboscKadluba) {}

  Statek() : nazwa("Domyślna Nazwa Statku"), liczbaArmat(10), wspolSkutecznosciUzbrojenia(0.1), gruboscKadluba(20) {}

  string getNazwa() const {
    return nazwa;
  }
  int getLiczbaArmat() const {
    return liczbaArmat;
  }
  double getWspolSkutUzbrojenia() const {
    return wspolSkutecznosciUzbrojenia;
  }
  int getGruboscKadluba() const {
    return gruboscKadluba;
  }

  virtual bool obrona(double silaUderzenia) {
    double silaObronyStatku = wspolSkutecznosciUzbrojenia * liczbaArmat + gruboscKadluba;
    return silaObronyStatku > silaUderzenia;
  }

  void wyswietl() const {
    cout << "\nNazwa: " << nazwa
         << "\nLiczba Armat: " << liczbaArmat
         << "\nWspolczynnik Skutecznosci Uzbrojenia: " << wspolSkutecznosciUzbrojenia
         << "\nGrubosc Kadluba: " << gruboscKadluba
         << endl;
  }
 private:
  string nazwa;
  int liczbaArmat;
  double wspolSkutecznosciUzbrojenia;
};

class StatekKrolewski: public Statek {

 public:

  StatekKrolewski() : liczbaMarynarzy(50), maxLiczbaMarynarzy(200) {}
  StatekKrolewski(const string &nazwa,
                  int liczbaArmat,
                  double wspolczynnikSkutecznosciUzbrojenia,
                  int gruboscKadluba,
                  int liczbaMarynarzy,
                  int maxLiczbaMarynarzy)
      : Statek(nazwa, liczbaArmat, wspolczynnikSkutecznosciUzbrojenia, gruboscKadluba), liczbaMarynarzy(liczbaMarynarzy),
        maxLiczbaMarynarzy(maxLiczbaMarynarzy) {}

  void naprawKadlub(int grubosc) {
    gruboscKadluba += grubosc;
  }
  
  virtual bool obrona(double silaUderzenia) {
    double silaObronyStatku = getWspolSkutUzbrojenia() * getLiczbaArmat() * liczbaMarynarzy / maxLiczbaMarynarzy + getGruboscKadluba();
    return silaObronyStatku > silaUderzenia;
  }

  void wyswietl() const {
    cout << "\nNazwa: " << Statek::getNazwa()
         << "\nLiczba Armat: " << Statek::getLiczbaArmat()
         << "\nWspolczynnik Skutecznosci Uzbrojenia: " << Statek::getWspolSkutUzbrojenia()
         << "\nGrubosc Kadluba: " << Statek::getGruboscKadluba()
         << "\nLiczba Marynarzy: " << liczbaMarynarzy
         << "\nMaksymalna Liczba Marynarzy: " << maxLiczbaMarynarzy
         << endl;
  }

 private:
  int liczbaMarynarzy;
  int maxLiczbaMarynarzy;
};

class StatekPiratow: public Statek {
 public:
  StatekPiratow() : liczbaPiratow(25), maxLiczbaPiratow(150) {}
  StatekPiratow(const string &nazwa,
                int liczbaArmat,
                double wspolczynnikSkutecznosciUzbrojenia,
                int gruboscKadluba,
                int liczbaPiratow,
                int maxLiczbaPiratow)
      : Statek(nazwa, liczbaArmat, wspolczynnikSkutecznosciUzbrojenia, gruboscKadluba), liczbaPiratow(liczbaPiratow),
        maxLiczbaPiratow(maxLiczbaPiratow) {}

  void naprawKadlub(int grubosc) {
    gruboscKadluba += grubosc;
  }

  virtual bool obrona(double silaUderzenia) {
    double silaObronyStatku = getWspolSkutUzbrojenia() * getLiczbaArmat() * liczbaPiratow / maxLiczbaPiratow + getGruboscKadluba();
    return silaObronyStatku > silaUderzenia;
  }

  void wyswietl() const {
    cout << "\nNazwa: " << Statek::getNazwa()
         << "\nLiczba Armat: " << Statek::getLiczbaArmat()
         << "\nWspolczynnik Skutecznosci Uzbrojenia: " << Statek::getWspolSkutUzbrojenia()
         << "\nGrubosc Kadluba: " << Statek::getGruboscKadluba()
         << "\nLiczba Piratow: " << liczbaPiratow
         << "\nMaksymalna Liczba Piratow: " << maxLiczbaPiratow
         << endl;
  }
 private:
  int liczbaPiratow;
  int maxLiczbaPiratow;
};
int main() {
  Statek domyslnyStatek = Statek();
  Statek zdefiniowanyStatek = Statek("Java", 16, 0.75, 100);
  domyslnyStatek.wyswietl();
  zdefiniowanyStatek.wyswietl();

  StatekPiratow statekPiratow = StatekPiratow("Statek Piratów", 16, 0.5, 80, 40, 120);
  StatekKrolewski statekKrolewski = StatekKrolewski("Statek Królewski", 24, 0.6, 90, 50, 150);

  StatekPiratow &refStatekPiratow = statekPiratow;
  StatekKrolewski &refStatekKrolewski = statekKrolewski;

  refStatekPiratow.wyswietl();
  refStatekKrolewski.wyswietl();
  cout << "\nOpis: \n0 (false) - nie obroni sie \n1 (true) - obroni sie.\n" << endl;
  cout << domyslnyStatek.obrona(10.0) << endl;
  cout << zdefiniowanyStatek.obrona(10.0) << endl;
  cout << domyslnyStatek.obrona(90.0) << endl;
  cout << zdefiniowanyStatek.obrona(90.0) << endl;
  cout << refStatekPiratow.obrona(90.0) << endl;
  cout << refStatekKrolewski.obrona(90.0) << endl;
  return 0;
}
close fullscreen
Login or Register to edit or fork this paste. It's free.