Guest User

Untitled

a guest
Jul 22nd, 2018
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.35 KB | None | 0 0
  1. //
  2. //  main.cpp
  3. //  KKnitter_ProgramSemestralny_Rycerz
  4. //
  5. //  Created by Konrad Knitter on 04.04.2012.
  6. //  Copyright 2012 klotek@gmail.com. All rights reserved.
  7. //
  8.  
  9. #include <iostream>
  10. #include <string>
  11. #include <fstream.h>
  12. #include <time.h>
  13.  
  14. using namespace std;
  15.  
  16. int wczytajBazePrzedmiotow(char* scieszka);
  17.  
  18. class Przedmioty{
  19.     protected:
  20.         int typ;
  21.     public:
  22.         string nazwa;
  23.         int dub;
  24.         int max_dub;
  25.         int sila, zrecznosc, inteligencja;
  26. };
  27.  
  28. class Zbroje : public Przedmioty{
  29.     public:
  30.         Zbroje();
  31.         Zbroje(string nazwa, int dub, int sila, int zrecznosc, int inteligencja, int armor);
  32.     private:
  33.         int armor;
  34. };
  35.  
  36. Zbroje::Zbroje(){
  37.     nazwa = "Brak";
  38.     typ = 1;
  39.     max_dub = 0;
  40.     dub = 0;
  41.     sila = 0;
  42.     zrecznosc = 0;
  43.     inteligencja = 0;
  44.     armor = 0;
  45. }
  46.  
  47. Zbroje::Zbroje(string nazwa,int dub,int sila,int zrecznosc,int inteligencja,int armor){
  48.     this -> nazwa        = nazwa;
  49.     this -> max_dub      = dub;
  50.     this -> dub          = this -> max_dub;
  51.     this -> sila         = sila;
  52.     this -> zrecznosc    = zrecznosc;
  53.     this -> inteligencja = inteligencja;
  54.     this -> armor        = armor;
  55.     this -> typ          = 1;
  56. }
  57.  
  58. class Bronie : public Przedmioty{
  59.     public:
  60.         Bronie();  
  61.         Bronie(string nazwa, int dub, int sila, int zrecznosc, int inteligencja, int atak, int armor, double szyb);
  62.     private:
  63.         int atak;
  64.         int armor;
  65.         double szybkosc;
  66. };
  67.  
  68. Bronie::Bronie(string nazwa, int dub, int sila, int zrecznosc, int inteligencja, int atak, int armor, double szyb){
  69.     this -> nazwa        = nazwa;
  70.     this -> max_dub      = dub;
  71.     this -> dub          = this -> max_dub;
  72.     this -> sila         = sila;
  73.     this -> zrecznosc    = zrecznosc;
  74.     this -> inteligencja = inteligencja;
  75.     this -> armor        = armor;
  76.     this -> atak         = atak;
  77.     this -> szybkosc     = szyb;
  78.     this -> typ          = 2;
  79. }
  80.  
  81. Bronie::Bronie(){
  82.     nazwa = "Brak";
  83.     max_dub = 0;
  84.     typ = 2;
  85.     dub = 0;
  86.     sila = 0;
  87.     zrecznosc = 0;
  88.     inteligencja = 0;
  89.     armor = 0;
  90.     atak = 0;
  91.     szybkosc = 0.0;
  92. }
  93.  
  94. class Postac{
  95.     public:
  96.         int poziom;
  97.         void zadajDMG(int wartosc);
  98.         void zabij();
  99.         ~Postac();
  100.         bool czyZyje();
  101.         int pobierzArmor();
  102.         int pobierzAtak();
  103.         friend void walka(Postac &gracz, Postac &wrog);
  104.     protected:
  105.         int atak;
  106.         double zycie;
  107.         int maxzycie;
  108.         int armor;
  109.         string imie;
  110.         int sila, zrecznosc, inteligencja;
  111. };
  112.  
  113. void Postac::zadajDMG(int wartosc){
  114.     double dmg = (double)(wartosc*((100-(this->pobierzArmor())))/100);
  115.     zycie = zycie - dmg;
  116.     cerr << "Zadano " << dmg << " obrazeń postaci o nazwie " << this->imie << "." << endl;
  117.     cerr << this -> imie << " ma teraz " << this -> zycie << " z " << this -> maxzycie << " zycia." << endl;
  118. }
  119.  
  120. void Postac::zabij(){
  121.     cerr << this -> imie << " został zabity.";
  122.     this -> ~Postac();
  123. }
  124.  
  125. int Postac::pobierzAtak() {
  126.     return (this->atak);
  127. }
  128. int Postac::pobierzArmor(){
  129.     return (this->atak);
  130. }
  131.  
  132. bool Postac::czyZyje(){
  133.     if ((this -> zycie) > 0) return 1;
  134.     this -> zabij();
  135.     return 0;
  136. }
  137.  
  138. void walka(Postac &gracz, Postac &wrog){
  139.     while (gracz.czyZyje() || wrog.czyZyje()) {
  140.         wrog.zadajDMG(gracz.pobierzAtak());
  141.         gracz.zadajDMG(wrog.pobierzAtak());
  142.     }
  143. }
  144.  
  145. Postac::~Postac(){
  146.  
  147. };
  148.  
  149. class Rycerz : public Postac{
  150.     private:
  151.         bool gracz;
  152.         friend Przedmioty;
  153.         Przedmioty* Ekwipunek[6];
  154.         Rycerz& operator ++();
  155.     public:
  156.         Rycerz(bool gracz = 0, string imie = "Brak");
  157.  
  158. };
  159.  
  160. Rycerz::Rycerz(bool gracz, string imie){
  161.     if (gracz) {
  162.         poziom = 1;
  163.         maxzycie = 100;
  164.         zycie = maxzycie;
  165.         atak = 10;
  166.         armor = 10;
  167.         sila = 10;
  168.         zrecznosc = 10;
  169.         inteligencja = 10;
  170.         this->gracz = gracz;
  171.         this->imie = imie;
  172.         cerr << "Stworzono gracza o imieniu " << imie << " posiada on " << zycie << " zycia na " << poziom << " poziomie. " << endl;
  173.     } else {
  174.        
  175.     }
  176. }
  177.  
  178. Rycerz &Rycerz::operator++(){
  179.     (this -> poziom)++;
  180.     (this -> maxzycie) += 10;
  181.     (this -> zycie) = (this -> maxzycie);
  182.     (this -> atak)++;
  183.     (this -> sila)++;
  184.     (this -> zrecznosc)++;
  185.     (this -> inteligencja)++;
  186.    
  187.     cerr << this -> imie << " zdobył nowy poziom doświadczenia.";
  188.    
  189.     return *this;
  190. }
  191.  
  192. class Potwory : public Postac{
  193.     public:
  194.         Potwory(int poziom_gracza);
  195. };
  196.  
  197. Potwory::Potwory(int poziom_gracza){
  198.     srand(time(0));
  199.     poziom       = poziom_gracza + (((rand())%5) - 3);
  200.     maxzycie     = 100 + poziom*10;
  201.     zycie        = maxzycie;
  202.     atak         = 10 + poziom;
  203.     sila         = 10 + poziom;
  204.     zrecznosc    = 10 + poziom;
  205.     inteligencja = 10 + poziom;
  206.     imie = "Potwor";
  207.     cerr << "Stworzono potwora o imieniu " << imie << " posiada on " << zycie << " zycia." << endl;
  208. }
  209. Zbroje* bazaZ;
  210. Bronie* bazaB;
  211. int wczytajBazePrzedmiotow(char* scieszka){
  212.     ifstream plik;
  213.     int typ, dub, sila, zrecznosc, intel, armor, atak, def;
  214.     double szybkosc;
  215.     string nazwa;
  216.     plik.open(scieszka, ios::in);
  217.     int z, b, az = 0, ab = 0;
  218.     plik >> z >> b;
  219.     bazaZ = new Zbroje[z];
  220.     bazaB = new Bronie[b];
  221.     while (!plik.eof()){
  222.         plik >> typ;
  223.         switch (typ) {
  224.             case 1:
  225.                 plik >> nazwa >> dub >> sila >> zrecznosc >> intel >> armor;
  226.                 bazaZ[az] = Zbroje(nazwa, dub, sila, zrecznosc, intel, armor);
  227.                 az++;
  228.                 break;
  229.             case 2:
  230.                 plik >> nazwa >> dub >> sila >> zrecznosc >> intel >> atak >> armor >> szybkosc;
  231.                 bazaB[ab] = Bronie(nazwa, dub, sila, zrecznosc, intel, atak, armor, szybkosc);
  232.                 ab++;
  233.                 break;
  234.             default:
  235.                 cerr << "Blad bazy." << endl;
  236.                 return 3;
  237.                 break;
  238.         }
  239.     }
  240.     plik.close();
  241.     return 0;
  242. }
  243.  
  244. int main (int argc, const char * argv[])
  245. {
  246.     Rycerz* Gracz;
  247.     Potwory* Potwor;
  248.     Gracz   = new Rycerz(1, "Konrad");
  249.     Potwor  = new Potwory(Gracz -> poziom);
  250.     // Gracz -> walka (Potwor);
  251.     wczytajBazePrzedmiotow("baza_przedmioty.txt");
  252.     Gracz++;
  253.     return 0;
  254. }
Add Comment
Please, Sign In to add comment