Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // main.cpp
- // KKnitter_ProgramSemestralny_Rycerz
- //
- // Created by Konrad Knitter on 04.04.2012.
- // Copyright 2012 klotek@gmail.com. All rights reserved.
- //
- #include <iostream>
- #include <string>
- #include <fstream.h>
- #include <time.h>
- using namespace std;
- int wczytajBazePrzedmiotow(char* scieszka);
- class Przedmioty{
- protected:
- int typ;
- public:
- string nazwa;
- int dub;
- int max_dub;
- int sila, zrecznosc, inteligencja;
- };
- class Zbroje : public Przedmioty{
- public:
- Zbroje();
- Zbroje(string nazwa, int dub, int sila, int zrecznosc, int inteligencja, int armor);
- private:
- int armor;
- };
- Zbroje::Zbroje(){
- nazwa = "Brak";
- typ = 1;
- max_dub = 0;
- dub = 0;
- sila = 0;
- zrecznosc = 0;
- inteligencja = 0;
- armor = 0;
- }
- Zbroje::Zbroje(string nazwa,int dub,int sila,int zrecznosc,int inteligencja,int armor){
- this -> nazwa = nazwa;
- this -> max_dub = dub;
- this -> dub = this -> max_dub;
- this -> sila = sila;
- this -> zrecznosc = zrecznosc;
- this -> inteligencja = inteligencja;
- this -> armor = armor;
- this -> typ = 1;
- }
- class Bronie : public Przedmioty{
- public:
- Bronie();
- Bronie(string nazwa, int dub, int sila, int zrecznosc, int inteligencja, int atak, int armor, double szyb);
- private:
- int atak;
- int armor;
- double szybkosc;
- };
- Bronie::Bronie(string nazwa, int dub, int sila, int zrecznosc, int inteligencja, int atak, int armor, double szyb){
- this -> nazwa = nazwa;
- this -> max_dub = dub;
- this -> dub = this -> max_dub;
- this -> sila = sila;
- this -> zrecznosc = zrecznosc;
- this -> inteligencja = inteligencja;
- this -> armor = armor;
- this -> atak = atak;
- this -> szybkosc = szyb;
- this -> typ = 2;
- }
- Bronie::Bronie(){
- nazwa = "Brak";
- max_dub = 0;
- typ = 2;
- dub = 0;
- sila = 0;
- zrecznosc = 0;
- inteligencja = 0;
- armor = 0;
- atak = 0;
- szybkosc = 0.0;
- }
- class Postac{
- public:
- int poziom;
- void zadajDMG(int wartosc);
- void zabij();
- ~Postac();
- bool czyZyje();
- int pobierzArmor();
- int pobierzAtak();
- friend void walka(Postac &gracz, Postac &wrog);
- protected:
- int atak;
- double zycie;
- int maxzycie;
- int armor;
- string imie;
- int sila, zrecznosc, inteligencja;
- };
- void Postac::zadajDMG(int wartosc){
- double dmg = (double)(wartosc*((100-(this->pobierzArmor())))/100);
- zycie = zycie - dmg;
- cerr << "Zadano " << dmg << " obrazeń postaci o nazwie " << this->imie << "." << endl;
- cerr << this -> imie << " ma teraz " << this -> zycie << " z " << this -> maxzycie << " zycia." << endl;
- }
- void Postac::zabij(){
- cerr << this -> imie << " został zabity.";
- this -> ~Postac();
- }
- int Postac::pobierzAtak() {
- return (this->atak);
- }
- int Postac::pobierzArmor(){
- return (this->atak);
- }
- bool Postac::czyZyje(){
- if ((this -> zycie) > 0) return 1;
- this -> zabij();
- return 0;
- }
- void walka(Postac &gracz, Postac &wrog){
- while (gracz.czyZyje() || wrog.czyZyje()) {
- wrog.zadajDMG(gracz.pobierzAtak());
- gracz.zadajDMG(wrog.pobierzAtak());
- }
- }
- Postac::~Postac(){
- };
- class Rycerz : public Postac{
- private:
- bool gracz;
- friend Przedmioty;
- Przedmioty* Ekwipunek[6];
- Rycerz& operator ++();
- public:
- Rycerz(bool gracz = 0, string imie = "Brak");
- };
- Rycerz::Rycerz(bool gracz, string imie){
- if (gracz) {
- poziom = 1;
- maxzycie = 100;
- zycie = maxzycie;
- atak = 10;
- armor = 10;
- sila = 10;
- zrecznosc = 10;
- inteligencja = 10;
- this->gracz = gracz;
- this->imie = imie;
- cerr << "Stworzono gracza o imieniu " << imie << " posiada on " << zycie << " zycia na " << poziom << " poziomie. " << endl;
- } else {
- }
- }
- Rycerz &Rycerz::operator++(){
- (this -> poziom)++;
- (this -> maxzycie) += 10;
- (this -> zycie) = (this -> maxzycie);
- (this -> atak)++;
- (this -> sila)++;
- (this -> zrecznosc)++;
- (this -> inteligencja)++;
- cerr << this -> imie << " zdobył nowy poziom doświadczenia.";
- return *this;
- }
- class Potwory : public Postac{
- public:
- Potwory(int poziom_gracza);
- };
- Potwory::Potwory(int poziom_gracza){
- srand(time(0));
- poziom = poziom_gracza + (((rand())%5) - 3);
- maxzycie = 100 + poziom*10;
- zycie = maxzycie;
- atak = 10 + poziom;
- sila = 10 + poziom;
- zrecznosc = 10 + poziom;
- inteligencja = 10 + poziom;
- imie = "Potwor";
- cerr << "Stworzono potwora o imieniu " << imie << " posiada on " << zycie << " zycia." << endl;
- }
- Zbroje* bazaZ;
- Bronie* bazaB;
- int wczytajBazePrzedmiotow(char* scieszka){
- ifstream plik;
- int typ, dub, sila, zrecznosc, intel, armor, atak, def;
- double szybkosc;
- string nazwa;
- plik.open(scieszka, ios::in);
- int z, b, az = 0, ab = 0;
- plik >> z >> b;
- bazaZ = new Zbroje[z];
- bazaB = new Bronie[b];
- while (!plik.eof()){
- plik >> typ;
- switch (typ) {
- case 1:
- plik >> nazwa >> dub >> sila >> zrecznosc >> intel >> armor;
- bazaZ[az] = Zbroje(nazwa, dub, sila, zrecznosc, intel, armor);
- az++;
- break;
- case 2:
- plik >> nazwa >> dub >> sila >> zrecznosc >> intel >> atak >> armor >> szybkosc;
- bazaB[ab] = Bronie(nazwa, dub, sila, zrecznosc, intel, atak, armor, szybkosc);
- ab++;
- break;
- default:
- cerr << "Blad bazy." << endl;
- return 3;
- break;
- }
- }
- plik.close();
- return 0;
- }
- int main (int argc, const char * argv[])
- {
- Rycerz* Gracz;
- Potwory* Potwor;
- Gracz = new Rycerz(1, "Konrad");
- Potwor = new Potwory(Gracz -> poziom);
- // Gracz -> walka (Potwor);
- wczytajBazePrzedmiotow("baza_przedmioty.txt");
- Gracz++;
- return 0;
- }
Add Comment
Please, Sign In to add comment