Szczepan86

Obiekty - gra przygodowa

Apr 17th, 2020
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.11 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Lokacja {
  6.   private:
  7.     string nazwa, opis;
  8.     int x, y;
  9.  
  10.   public:
  11.     Lokacja(string nazwaLokacji, string opisLokacji, int pozycjaX, int pozycjaY) {
  12.       nazwa = nazwaLokacji;
  13.       opis = opisLokacji;
  14.       x = pozycjaX;
  15.       y = pozycjaY;
  16.     }
  17.  
  18.     Lokacja() {
  19.       nazwa = "";
  20.       opis = "";
  21.       x = 0;
  22.       y = 0;
  23.     }
  24.  
  25.     void wyswietl() {
  26.       cout << ":: " << nazwa << " (" << x << ", " << y << ")" << endl;
  27.       cout << opis << endl;
  28.     }
  29.  
  30.     int pozycjaX() {
  31.       return x;
  32.     }
  33.  
  34.     int pozycjaY() {
  35.       return y;
  36.     }
  37. };
  38.  
  39. class Swiat {
  40.   private:
  41.     Lokacja listaLokacji[100];
  42.     int nastepnaLokacja = 0;
  43.  
  44.     bool sprawdzLokacje(int x, int y) {
  45.       for (int i=0; i<nastepnaLokacja; i++) {
  46.         if (listaLokacji[i].pozycjaX() == x && listaLokacji[i].pozycjaY() == y) {
  47.           return true;
  48.         }
  49.       }
  50.       return false;      
  51.     }
  52.  
  53.   public:
  54.     void dodajLokacje(Lokacja lokacja) {
  55.       listaLokacji[nastepnaLokacja] = lokacja;
  56.       nastepnaLokacja++;
  57.     }
  58.  
  59.     Lokacja pobierzLokacje(int x, int y) {
  60.       for (int i=0; i<nastepnaLokacja; i++) {
  61.         if (listaLokacji[i].pozycjaX() == x && listaLokacji[i].pozycjaY() == y) {
  62.           return listaLokacji[i];
  63.         }
  64.       }
  65.       return Lokacja();
  66.     }
  67.  
  68.     bool sprawdzPolnoc(int x, int y) {
  69.       if (sprawdzLokacje(x, y+1)) return true;
  70.       return false;
  71.     }
  72.  
  73.     bool sprawdzPoludnie(int x, int y) {
  74.       if (sprawdzLokacje(x, y-1)) return true;
  75.       return false;
  76.     }
  77.  
  78.     bool sprawdzWschod(int x, int y) {
  79.       if (sprawdzLokacje(x+1, y)) return true;
  80.       return false;
  81.     }
  82.  
  83.     bool sprawdzZachod(int x, int y) {
  84.       if (sprawdzLokacje(x-1, y)) return true;
  85.       return false;
  86.     }
  87.  
  88.     void wyswietlWyjscia(int x, int y) {
  89.       cout << "Wyjścia:";
  90.       if (sprawdzPolnoc(x, y)) cout << " północ";
  91.       if (sprawdzPoludnie(x, y)) cout << " południe";
  92.       if (sprawdzWschod(x, y)) cout << " wschód";
  93.       if (sprawdzZachod(x, y)) cout << " zachód";
  94.       cout << endl;
  95.     }
  96. };
  97.  
  98. class Bohater {
  99.   private:
  100.     string imie;
  101.     int x, y;
  102.  
  103.   public:
  104.     Bohater(string imieBohatera, int pozycjaX, int pozycjaY) {
  105.       imie = imieBohatera;
  106.       x = pozycjaX;
  107.       y = pozycjaY;
  108.     }
  109.  
  110.     void idzNaPolnoc(Swiat swiat) {
  111.       if (swiat.sprawdzPolnoc(x, y)) {
  112.         y++;
  113.         cout << "Idziesz na północ..." << endl;
  114.       } else {
  115.         cout << "Nie możesz tam pójść!" << endl;
  116.       }
  117.     }
  118.  
  119.     void idzNaPoludnie(Swiat swiat) {
  120.       if (swiat.sprawdzPoludnie(x, y)) {
  121.         y--;
  122.         cout << "Idziesz na południe..." << endl;
  123.       } else {
  124.         cout << "Nie możesz tam pójść!" << endl;
  125.       }
  126.     }
  127.  
  128.     void idzNaWschod(Swiat swiat) {
  129.       if (swiat.sprawdzWschod(x, y)) {
  130.         x++;
  131.         cout << "Idziesz na wschód..." << endl;
  132.       } else {
  133.         cout << "Nie możesz tam pójść!" << endl;
  134.       }
  135.     }
  136.  
  137.     void idzNaZachod(Swiat swiat) {
  138.       if (swiat.sprawdzZachod(x, y)) {
  139.         x--;
  140.         cout << "Idziesz na zachód..." << endl;
  141.       } else {
  142.         cout << "Nie możesz tam pójść!" << endl;
  143.       }
  144.     }
  145.  
  146.     int pozycjaX() {
  147.       return x;
  148.     }
  149.  
  150.     int pozycjaY() {
  151.       return y;
  152.     }
  153. };
  154.  
  155. int main() {
  156.   Swiat swiat;
  157.   swiat.dodajLokacje(Lokacja("Lokacja startowa", "Opis lokacji startowej", 0, 0));
  158.   swiat.dodajLokacje(Lokacja("Lokacja druga", "Opis lokacji drugiej", 1, 0));
  159.   swiat.dodajLokacje(Lokacja("Lokacja trzecia", "Opis lokacji trzeciej", 0, 1));
  160.  
  161.   Bohater bohater("Mateusz", 0, 0);
  162.  
  163.   string komenda = "";
  164.   while (komenda != "koniec") {
  165.     swiat.pobierzLokacje(bohater.pozycjaX(), bohater.pozycjaY()).wyswietl();
  166.     swiat.wyswietlWyjscia(bohater.pozycjaX(), bohater.pozycjaY());
  167.  
  168.     cout << "Co robisz? ";
  169.     cin >> komenda;
  170.  
  171.     if (komenda == "n") bohater.idzNaPolnoc(swiat);
  172.     if (komenda == "s") bohater.idzNaPoludnie(swiat);
  173.     if (komenda == "e") bohater.idzNaWschod(swiat);
  174.     if (komenda == "w") bohater.idzNaZachod(swiat);
  175.   }
  176. }
Advertisement
Add Comment
Please, Sign In to add comment