Metoda do porównywania

Odpowiedz Nowy wątek
2016-07-08 22:41
0

Otóż mam mały problem z metodą w mojej klasie bo nie odczytuje ona wartosci z klasy "przyjaznej" i przez to porównanie wartości obydwu obiektów traci sens

main.cpp
#include <iostream>
#include <stdio.h>
#include "respawn.h"

using namespace std;

main()
{
    Potwor mon;
    mon.load();
    mon.show();
    mon.respawn();

    Postac ch;
    ch.load(); //metoda oddziedziczona po klasie Character
    ch.show(); //metoda oddziedziczona po klasie Character

    ch.porownaj();
    return 0;
}
 respawn.h

#include <iostream>
#include <stdio.h>
using namespace std;
class Character //klasa z ktorej dziedzicza klasy Postac i Potwor !
    {
protected:
    string nazwa, np, nP;
    int x, y;
    int sila;
    int wytrzymalosc;
    float zdrowie;
    int inteligencja, zrecznosc;
    char odp;
    int wynik, wynik1;

public:
    void load();
    void show();
    void respawn();
};

class Postac : public Character {
public:
    Postac(string = "Mr.Nobody", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Postac(); //destruktor
    friend class Potwor;
    void porownaj();
};

class Potwor : public Character {
public:
    Potwor(string = "Potwor", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Potwor(); //destruktor
    friend class Postac;
    friend void porownaj();
    void load();
    void show();
    void respawn();
};
 respawn.cpp
#include <iostream>
#include <cstdlib>
#include <stdio.h>
#include "respawn.h"
using namespace std;
int wynik, wynik1;
void Character::load() // metoda wczytujaca dane postaci
{
    cout << "Czy chcesz wprowadzić Atrybuty Postaci(t/n)?";
    cin >> odp;
    if (odp == 't' || odp == 'T') {
        cout << "\nPodaj \033[3;96mNazwe Postaci\033[0m:";
        cin >> nazwa;
        cout << "Podaj \033[93mSile\033[0m " << nazwa << "'a:";
        cin >> sila;
        cout << "Podaj \033[95mWytrzymalosc\033[0m " << nazwa << "'a:";
        cin >> wytrzymalosc;
        cout << "Podaj Ilosc \033[91mZdrowia\033[0m " << nazwa << "'a:";
        cin >> zdrowie;
        cout << "Podaj \033[32mZrecznosc\033[0m " << nazwa << "'a:";
        cin >> zrecznosc;
        cout << "Podaj \033[94mInteligencje\033[0m " << nazwa << "'a:";
        cin >> inteligencja;
        cout << "\n";
    }
}
void Character::show() // metoda ukazująca dane postaci
{
    system("clear");
    cout << "\033[3;96mNazwa Postaci\033[0m:" << nazwa << endl
         << "\033[93mSila\033[0m:" << sila << endl
         << "\033[95mWytrzymalosc\033[0m:" << wytrzymalosc << endl
         << "\033[91mZdrowie\033[0m:" << zdrowie << endl
         << "\033[32mZrecznosc\033[0m:" << zrecznosc << endl
         << "\033[94mInteligencja\033[0m:" << inteligencja << endl;
    nP = nazwa;
    wynik1 = sila + wytrzymalosc + zrecznosc + inteligencja / zdrowie;
}

Postac::Postac(string n, int s, int w, float zdr, int zr,
    int intel) // konstruktor klasy Postac
{
    nazwa = n;
    sila = s;
    wytrzymalosc = w;
    zdrowie = zdr;
    zrecznosc = zr;
    inteligencja = intel;
}
Postac::~Postac() // destruktor klasy Postac
{
    cout << "\nJezeli widzisz ten komunikat to znaczy,ze twoj komputer zniknie "
            "za…1…2…3 BOOM!"
         << endl;
}

void Potwor::load() // metoda wczytująca dane potworka
{
    cout << "Czy chcesz wprowadzić Atrybuty Potwora(t/n)?";
    cin >> odp;
    if (odp == 't' || odp == 'T') {
        cout << "\nPodaj \033[3;96mNazwe Potwora\033[0m:";
        cin >> nazwa;
        cout << "Podaj \033[93mSile\033[0m " << nazwa << "'a:";
        cin >> sila;
        cout << "Podaj \033[95mWytrzymalosc\033[0m " << nazwa << "'a:";
        cin >> wytrzymalosc;
        cout << "Podaj Ilosc \033[91mZdrowia\033[0m " << nazwa << "'a:";
        cin >> zdrowie;
        cout << "Podaj \033[32mZrecznosc\033[0m " << nazwa << "'a:";
        cin >> zrecznosc;
        cout << "Podaj \033[94mInteligencje\033[0m " << nazwa << "'a:";
        cin >> inteligencja;
        cout << "\n";
    }
}
void Potwor::show() // metoda ukazująca dane potworka
{
    system("clear");
    cout << "\033[3;96mNazwa Potwora\033[0m:" << nazwa << endl
         << "\033[93mSila\033[0m:" << sila << endl
         << "\033[95mWytrzymalosc\033[0m:" << wytrzymalosc << endl
         << "\033[91mZdrowie\033[0m:" << zdrowie << endl
         << "\033[32mZrecznosc\033[0m:" << zrecznosc << endl
         << "\033[94mInteligencja\033[0m:" << inteligencja << endl;
    np = nazwa;
    wynik = sila + wytrzymalosc + zrecznosc + inteligencja / zdrowie;
}

void Potwor::respawn() // metoda do respawnu potworkow ver.Pre-Alpha
{

    cout << "\nIle chcesz tych Potworów?" << endl;
    cin >> x;
    cout << "++++++++++++++++++++++++++++++++++++++++++\n";
    for (y = 1; y <= x; y++) {
        cout << "+  " << y << " " << nazwa << "                              +"
             << endl;
    } // koniec fora
    cout << "++++++++++++++++++++++++++++++++++++++++++\n";
} // koniec voida

Potwor::Potwor(string n, int s, int w, float zdr, int zr,
    int intel) // konstruktor
{
    nazwa = n;
    sila = s;
    wytrzymalosc = w;
    zdrowie = zdr;
    zrecznosc = zr;
    inteligencja = intel;
}
Potwor::~Potwor() // destruktor
{
    cout << "\nMozna dzialac na nowo :D" << endl;
}

void Postac::porownaj()
{
    if (wynik < wynik1) {
        cout << np << " Przegralby z " << nP;
    }
    else if (wynik > wynik1)
        cout << np << " Wygralby z " << nP;
    else if (wynik == wynik1) {
        cout << "Bylby remis";
    }
}
edytowany 1x, ostatnio: SadBoy98, 2016-07-09 01:14
http://format.krzaq.cc i edycja posta, bo tego czytać nie idzie - twonek 2016-07-08 23:23

Pozostało 580 znaków

2016-07-09 05:05
2
int main()

Bez using namespace std w pliku nagłówkowym.
Bez #include <stdio.h> - po co mieszać C do tego?
Nazwij zmienne sensownie - co to jest np, nP, wynik, wynik1?

Nie używaj zmiennych globalnych

int wynik, wynik1;

W tym przypadku nic nie robią bo modyfikujesz zmienne wewnątrz klasy, ale generalnie mogą mocno mieszać.

Przecież metoda porownaj() bierze zarówno wynik jak i wynik1 z tego samego obiektu, więc niby gdzie jest odczytanie wartości z klasy przyjaznej?

To jak zrobić aby odczytywała z obu obiektów ? - SadBoy98 2016-07-09 09:27

Pozostało 580 znaków

2016-07-09 09:48
0

Kod z nagłówka

respawn.h
#include <iostream>

    class Character //klasa z ktorej dziedzicza klasy Postac i Potwor !
    {
protected:
    std::string nazwa, np, nP; //nazwa <- nazwa ogólna potwora,bądź postaci która po tej klasie dziedziczy, np<-nazwa potworka gdyż nie wiem jak wczytać ją z metody load() do metody porownaj() nP<-nazwa postaci też z tych samych pobudek;
    int x, y;
    int sila;
    int wytrzymalosc;
    float zdrowie;
    int inteligencja, zrecznosc;
    char odp;
    int wynik1, wynik; //wartości do porównywania kto by wygrał gdyby doszło do ewentualnego pojedynku

public:
    virtual void load() = 0;
    virtual void show() = 0;
};

class Postac : public Character {

public:
    Postac(std::string = "Mr.Nobody", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Postac(); //destruktor
    friend class Potwor;
    void load();
    void show();
    void porownaj();
};

class Potwor : public Character {
public:
    Potwor(std::string = "Potwor", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Potwor(); //destruktor
    friend class Postac;
    friend void porownaj();
    void load();
    void show();
    void respawn();
};
edytowany 2x, ostatnio: SadBoy98, 2016-07-09 09:50

Pozostało 580 znaków

2016-07-09 15:22
0

Postac dziedzicząca po Character? Nie dość, że mieszanie polskiego i angielskiego to lingwistycznie nie ma sensu.

int Monster::getScore()
{
    return score;
}

void Hero::compare(const Monster& monster)
{
    if (score < monster.getScore())
        ...
}
edytowany 1x, ostatnio: twonek, 2016-07-09 15:22
Pokaż pozostałe 2 komentarze
aha,to dzięki czyli proponujesz aby stworzyć metodę getScore tak ?Jeżeli tak to gdzie ją umieścić :) - SadBoy98 2016-07-09 21:27
w klasie Monster co widac po sygnaturze - twonek 2016-07-09 21:29
w taki sposób jak pokazałeś czy inaczej? - SadBoy98 2016-07-09 21:32
Zakładam, że przerobiłeś rozdział z książki/tutoriala o klasach i znasz składnię implementacji metod klasy. Ja tylko pokazuję przykład jak można to zrobic, a jak to sobie zaimplementujesz to już Twoja wola. - twonek 2016-07-09 21:34
ok działa ale mam pytanko jak masz <code=cpp> void Hero::compare(const Monster& monster)</code> to monster to jest obiekt tak? - SadBoy98 2016-07-09 21:38

Pozostało 580 znaków

2016-07-09 22:23
0
respawn.h
#include <iostream>

class Character //klasa z ktorej dziedzicza klasy Postac i Potwor !
    {
protected:
    std::string nazwa, np, nP; //nazwa <-ogólna potwora,bądź postaci która po tej klasie dziedziczy, np<-nazwa potworka gdyż nie wiem jak wczytać ją z metody load() do metody porownaj() nP<-nazwa postaci też z tych samych pobudek;
    int x, y;
    int sila;
    int wytrzymalosc;
    float zdrowie;
    int inteligencja, zrecznosc;
    char odp;
    int wynik1, wynik; //wartości do porównywania kto by wygrał gdyby doszło do ewentualnego pojedynku

public:
    virtual void load() = 0;
    virtual void show() = 0;
};

class Postac : public Character {

public:
    Postac(std::string = "Mr.Nobody", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Postac(); //destruktor
    friend class Potwor;
    void load(); // *tu pokazuje log błąd
    void show();
    void porownaj(const Potwor& monster);
};

class Potwor : public Character {
public:
    Potwor(std::string = "Potwor", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Potwor(); //destruktor
    friend class Postac;
    friend void porownaj();
    void load();
    void show();
    void respawn();
    int getScore();
};
respawn.cpp
#include <iostream>
#include <cstdlib>
#include "respawn.h"
using namespace std;

void Postac::load() //metoda wczytujaca dane postaci
{
    cout << "Czy chcesz wprowadzić Atrybuty Postaci(t/n)?";
    cin >> odp;
    if (odp == 't' || odp == 'T') {
        cout << "\nPodaj \033[3;96mNazwe Postaci\033[0m:";
        cin >> nazwa;
        cout << "Podaj \033[93mSile\033[0m " << nazwa << "'a:";
        cin >> sila;
        cout << "Podaj \033[95mWytrzymalosc\033[0m " << nazwa << "'a:";
        cin >> wytrzymalosc;
        cout << "Podaj Ilosc \033[91mZdrowia\033[0m " << nazwa << "'a:";
        cin >> zdrowie;
        cout << "Podaj \033[32mZrecznosc\033[0m " << nazwa << "'a:";
        cin >> zrecznosc;
        cout << "Podaj \033[94mInteligencje\033[0m " << nazwa << "'a:";
        cin >> inteligencja;
        cout << "\n";
    }
}
void Postac::show() //metoda ukazująca dane postaci
{
    system("clear");
    cout << "\033[3;96mNazwa Postaci\033[0m:" << nazwa << endl
         << "\033[93mSila\033[0m:" << sila << endl
         << "\033[95mWytrzymalosc\033[0m:" << wytrzymalosc << endl
         << "\033[91mZdrowie\033[0m:" << zdrowie << endl
         << "\033[32mZrecznosc\033[0m:" << zrecznosc << endl
         << "\033[94mInteligencja\033[0m:" << inteligencja << endl;
    nP = nazwa;
    wynik1 = sila + wytrzymalosc + zrecznosc + inteligencja / zdrowie;
}

Postac::Postac(string n, int s, int w, float zdr, int zr, int intel) //konstruktor klasy Postac
{
    nazwa = n;
    sila = s;
    wytrzymalosc = w;
    zdrowie = zdr;
    zrecznosc = zr;
    inteligencja = intel;
}
Postac::~Postac() //destruktor klasy Postac
{
    cout << "\nJezeli widzisz ten komunikat to znaczy,ze twoj komputer zniknie za…1…2…3 BOOM!" << endl;
}

void Potwor::load() //metoda wczytująca dane potworka
{
    cout << "Czy chcesz wprowadzić Atrybuty Potwora(t/n)?";
    cin >> odp;
    if (odp == 't' || odp == 'T') {
        cout << "\nPodaj \033[3;96mNazwe Potwora\033[0m:";
        cin >> nazwa;
        cout << "Podaj \033[93mSile\033[0m " << nazwa << "'a:";
        cin >> sila;
        cout << "Podaj \033[95mWytrzymalosc\033[0m " << nazwa << "'a:";
        cin >> wytrzymalosc;
        cout << "Podaj Ilosc \033[91mZdrowia\033[0m " << nazwa << "'a:";
        cin >> zdrowie;
        cout << "Podaj \033[32mZrecznosc\033[0m " << nazwa << "'a:";
        cin >> zrecznosc;
        cout << "Podaj \033[94mInteligencje\033[0m " << nazwa << "'a:";
        cin >> inteligencja;
        cout << "\n";
    }
}
void Potwor::show() //metoda ukazująca dane potworka
{
    system("clear");
    cout << "\033[3;96mNazwa Potwora\033[0m:" << nazwa << endl
         << "\033[93mSila\033[0m:" << sila << endl
         << "\033[95mWytrzymalosc\033[0m:" << wytrzymalosc << endl
         << "\033[91mZdrowie\033[0m:" << zdrowie << endl
         << "\033[32mZrecznosc\033[0m:" << zrecznosc << endl
         << "\033[94mInteligencja\033[0m:" << inteligencja << endl;
    np = nazwa;
    wynik = sila + wytrzymalosc + zrecznosc + inteligencja / zdrowie;
}

void Potwor::respawn() //metoda do respawnu potworkow ver.Pre-Alpha
{

    cout << "\nIle chcesz tych Potworów?" << endl;
    cin >> x;
    cout << "++++++++++++++++++++++++++++++++++++++++++\n";
    for (y = 1; y <= x; y++) {
        cout << "+  " << y << " " << nazwa << "                              +" << endl;
    } //koniec fora
    cout << "++++++++++++++++++++++++++++++++++++++++++\n";
} //koniec voida

Potwor::Potwor(string n, int s, int w, float zdr, int zr, int intel) //konstruktor
{
    nazwa = n;
    sila = s;
    wytrzymalosc = w;
    zdrowie = zdr;
    zrecznosc = zr;
    inteligencja = intel;
}
Potwor::~Potwor() //destruktor
{
    cout << "\nMozna dzialac na nowo :D" << endl;
}

int Potwor::getScore()
{
    return wynik;
}

void Postac::porownaj(const Potwor& monster)
{
    if (wynik1 > monster.getScore())

        cout << np << " Przegralby z " << nP;

    if (wynik1 < monster.getScore())

        cout << np << "Wygralby z " << nP;

    if (wynik1 == monster.getScore())

        cout << "Bylby remis";
}

*Log:

|28|error: ‘Potwor’ does not name a type| void load(); //z klasy Postać 

moze mi ktos w tym pomoc bo nie wiem gdzie tu jest problem :(

edytowany 3x, ostatnio: SadBoy98, 2016-07-09 23:02
w porządku poprawiłem :) - SadBoy98 2016-07-09 22:43
Jeśli były to błędy kompilacji - czy przy błędzie wkleiłeś linię kodu, której dotyczy? Silnik 4programmers nie numeruje kodu, zatem błąd w linii 95: blabla niewiele nam mówi, bo nikt nie będzie liczył gdzie jest ta 95-ta linia. - twonek 2016-07-09 22:51
czy teraz jest lepiej? :) - SadBoy98 2016-07-09 23:03

Pozostało 580 znaków

2016-07-09 22:31
0
\033[93m

Weź to wyciągnij do jakichś stałych z sensownymi nazwami, bo teraz zaśmiecasz kod niezrozumiałymi krzaczkami.

const char[] cośtam = "\033[93m";
...
cout << cośtam << "Bla bla bla...";
edytowany 1x, ostatnio: Azarien, 2016-07-09 22:32
Pokaż pozostałe 4 komentarze
nie, powinno być puste [] i nie powinno być błędu. - Azarien 2016-07-10 02:43
no to nie wiem jak ale błąd niestety jest… - SadBoy98 2016-07-10 02:56
nie no, bez jaj. const char napis[] = &quot;Ala ma kota&quot;; - Azarien 2016-07-10 03:10
a swoją drogą nie można zamiast tego chara dać niewiem stringa np. ? - SadBoy98 2016-07-10 03:16

Pozostało 580 znaków

2016-07-09 23:07
0

Sam komunikat wynika z tego, że w momencie gdy masz friend class Potwor ta klasa jeszcze nie istnieje, więc kompilator nie wie z czym chcesz się zaprzyjaźnić.
Natomiast w ogóle wywal te wszystkie friend, bo nie są do niczego potrzebne i często są oznaką kiepskiego kodu.

Pokaż pozostałe 6 komentarzy
Jak się nazywa obiekt typu Potwor? Użyj go jako argument do funkcji porownaj(). I po prostu ch.porównaj(monster), a nie ch.porownaj(&amp;monster). - twonek 2016-07-10 00:22
ch.porównaj(mon) //czyli mon to obiekt klasy Potwor i błąd po kompilacji : error: no matching function for call to ‘Postac::porownaj(Potwor&)’| - SadBoy98 2016-07-10 00:36
coś źle wkleiłeś kod tej funkcji do klasy Postac - twonek 2016-07-10 00:39
void porownaj(const Potwor& monster); <- wywołanie tej metody w klasie Postac a kod funkcji w respawn.cpp jest ten sam co podałem wyżej :) - SadBoy98 2016-07-10 00:44
pokaż najnowszą wersję kodu, razem z main.cpp - twonek 2016-07-10 00:49

Pozostało 580 znaków

2016-07-10 00:53
0
main.cpp
#include <iostream>
#include "respawn.h"

using namespace std;

main()
{
Potwor mon;
mon.load();
mon.show();
mon.respawn();

Postac ch;
ch.load(); //metoda oddziedziczona po klasie Character
ch.show(); //metoda oddziedziczona po klasie Character

ch.porownaj(mon);
return 0;
}
respawn.h
#include <iostream>

class Character //klasa z ktorej dziedzicza klasy Postac i Potwor !
    {
protected:
    std::string nazwa, np, nP; //nazwa <-ogólna potwora,bądź postaci która po tej klasie dziedziczy, np<-nazwa potworka gdyż nie wiem jak wczytać ją z metody load() do metody porownaj() nP<-nazwa postaci też z tych samych pobudek;
    int x, y;
    int sila;
    int wytrzymalosc;
    float zdrowie;
    int inteligencja, zrecznosc;
    char odp;
    int wynik1, wynik; //wartości do porównywania kto by wygrał gdyby doszło do ewentualnego pojedynku
    const char white[10]  = "\033[0m";
    const char red[10]    = "\033[91m";
    const char green[10]  = "\033[32m";
    const char yellow[10] = "\033[93m";
    const char blue[10]   = "\033[94m";
    const char purple[10] = "\033[95m";
    const char Italic_cyan[10] = "\033[3;96m";

public:
    virtual void load() = 0;
    virtual void show() = 0;
};

class Postac : public Character {

public:
    Postac(std::string = "Mr.Nobody", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Postac(); //destruktor
    class Potwor;
    void load();
    void show();
    void porownaj(const Potwor& monster);
};

class Potwor : public Character {
public:
    Potwor(std::string = "Potwor", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Potwor(); //destruktor
    class Postac;
    void porownaj();
    void load();
    void show();
    void respawn();
    int getScore();
};
respawn.cpp
#include <iostream>
#include <cstdlib>
#include "respawn.h"
using namespace std;

void Postac::load() //metoda wczytujaca dane postaci
{
    cout << "Czy chcesz wprowadzić Atrybuty Postaci(t/n)?";
    cin >> odp;
    if (odp == 't' || odp == 'T') {
        cout << "\nPodaj "<<Italic_cyan<<"Nazwe Postaci"<<white<<":";
        cin >> nazwa;
        cout << "Podaj "<<yellow<<"Sile"<<white<< nazwa << "'a:";
        cin >> sila;
        cout << "Podaj "<<purple<<"Wytrzymalosc"<<white<< nazwa << "'a:";
        cin >> wytrzymalosc;
        cout << "Podaj Ilosc "<<red<<"Zdrowia"<<white << nazwa << "'a:";
        cin >> zdrowie;
        cout << "Podaj "<<green<<"Zrecznosc"<<white<< nazwa << "'a:";
        cin >> zrecznosc;
        cout << "Podaj "<<blue<<"Inteligencje"<<white<< nazwa << "'a:";
        cin >> inteligencja;
        cout << "\n";
    }
}
void Postac::show() //metoda ukazująca dane postaci
{
    system("clear");
    cout <<Italic_cyan<<"Nazwa Postaci"<<white<<":" << nazwa << endl
         <<yellow<<"Sila"<<white<<":" << sila << endl
         <<purple<<"Wytrzymalosc"<<white<<":" << wytrzymalosc << endl
         <<red<<"Zdrowie"<<white<<":" << zdrowie << endl
         <<green<<"Zrecznosc"<<white<<":" << zrecznosc << endl
         <<blue<<"Inteligencja"<<white<<":" << inteligencja << endl;
    nP = nazwa;
    wynik1 = sila + wytrzymalosc + zrecznosc + inteligencja / zdrowie;
}

Postac::Postac(string n, int s, int w, float zdr, int zr, int intel) //konstruktor klasy Postac
{
    nazwa = n;
    sila = s;
    wytrzymalosc = w;
    zdrowie = zdr;
    zrecznosc = zr;
    inteligencja = intel;
}
Postac::~Postac() //destruktor klasy Postac
{
    cout << "\nJezeli widzisz ten komunikat to znaczy,ze twoj komputer zniknie za…1…2…3 BOOM!" << endl;
}

void Potwor::load() //metoda wczytująca dane potworka
{
    cout << "Czy chcesz wprowadzić Atrybuty Potwora(t/n)?";
    cin >> odp;
    if (odp == 't' || odp == 'T') {
        cout << "\nPodaj "<<Italic_cyan<<"Nazwe Potwora"<<white<<":";
        cin >> nazwa;
        cout << "Podaj "<<yellow<<"Sile"<<white<< nazwa << "'a:";
        cin >> sila;
        cout << "Podaj "<<purple<<"Wytrzymalosc"<<white<< nazwa << "'a:";
        cin >> wytrzymalosc;
        cout << "Podaj Ilosc "<<red<<"Zdrowia"<<white<< nazwa << "'a:";
        cin >> zdrowie;
        cout << "Podaj "<<green<<"Zrecznosc"<<white<< nazwa << "'a:";
        cin >> zrecznosc;
        cout << "Podaj "<<blue<<"Inteligencje"<<white<< nazwa << "'a:";
        cin >> inteligencja;
        cout << "\n";
    }
}
void Potwor::show() //metoda ukazująca dane potworka
{
    system("clear");
    cout <<Italic_cyan<<"Nazwa Potwora"<<white<<":" << nazwa << endl
         <<yellow<< "Sila" <<white<":"<< sila << endl
         <<purple<<"Wytrzymalosc"<<white<<":" << wytrzymalosc << endl
         <<red<<"Zdrowie"<<white<<":"<< zdrowie << endl
         <<green<<"Zrecznosc"<<white<<":"<< zrecznosc << endl
         <<blue<<"Inteligencja"<<white<<":" << inteligencja << endl;
    np = nazwa;
    wynik = sila + wytrzymalosc + zrecznosc + inteligencja / zdrowie;
}

void Potwor::respawn() //metoda do respawnu potworkow ver.Pre-Alpha
{

    cout << "\nIle chcesz tych Potworów?" << endl;
    cin >> x;
    cout << "++++++++++++++++++++++++++++++++++++++++++\n";
    for (y = 1; y <= x; y++) {
        cout << "+  " << y << " " << nazwa << "                              +" << endl;
    } //koniec fora
    cout << "++++++++++++++++++++++++++++++++++++++++++\n";
} //koniec voida

Potwor::Potwor(string n, int s, int w, float zdr, int zr, int intel) //konstruktor
{
    nazwa = n;
    sila = s;
    wytrzymalosc = w;
    zdrowie = zdr;
    zrecznosc = zr;
    inteligencja = intel;
}
Potwor::~Potwor() //destruktor
{
    cout << "\nMozna dzialac na nowo :D" << endl;
}

int Potwor::getScore()
{
    return wynik;
}

void Postac::porownaj(const Potwor& monster)
{
    if (wynik1 > monster.getScore())

        cout << np << " Przegralby z " << nP;

    if (wynik1 < monster.getScore())

        cout << np << "Wygralby z " << nP;

    if (wynik1 == monster.getScore())

        cout << "Bylby remis";
}
int main() i użwaj formattera: http://format.krzaq.cc - twonek 2016-07-10 00:56

Pozostało 580 znaków

2016-07-10 01:00
0

Masz class Potwor wewnątrz klasy Postac, przez co funkcja porównaj oczekuje argumentu typu Postac::Potwor. Wywal to.
Wcześniej mówiąc wywal te wszystkie friend miałem na myśli całe linie, a nie tylko słowo friend.

edytowany 1x, ostatnio: twonek, 2016-07-10 01:01
w porządku wywaliłem ale teraz pokazuje mi błąd:error: ‘Potwor’ does not name a type w linii void porownaj(const Potwor& monster); w klasie Postac - SadBoy98 2016-07-10 01:07
w porządku wywaliłem ale teraz pokazuje mi błąd:" error: ‘Potwor’ does not name a type " w linii void porownaj(const Potwor& monster); w klasie Postac - SadBoy98 2016-07-10 01:46

Pozostało 580 znaków

2016-07-10 01:46
0

w porządku wywaliłem ale teraz pokazuje mi błąd:error: ‘Potwor’ does not name a type w linii void porownaj(const Potwor& monster); w klasie Postac -

Bo Potwor został zadeklarowany po Postac, więc wewnątrz Postac kompilator nie wie co to jest Potwor. Przenieś Potwor przed Postac, albo najlepiej każda klasa jest we własnych plikach .h/.cpp, czyli Postac.h Postac.cpp oraz Potwor.h Potwor.cpp.

Pozostało 580 znaków

2016-07-10 02:16
0

Okej zrobiłem to jak chciałeś czyli rozdzieliłem klasy na nagłówki i tak to u mnie wygląda :

main.cpp
#include <iostream>
#include "Potwor.h"
#include "Postac.h"

using namespace std;

int main()
{
Potwor mon;
mon.load();
mon.show();
mon.respawn();

Postac ch;
ch.load(); //metoda oddziedziczona po klasie Character
ch.show(); //metoda oddziedziczona po klasie Character

ch.porownaj(mon);
return 0;
}
Postac.h 

#include <iostream>

class Postac : public Character {

public:
    Postac(std::string = "Mr.Nobody", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Postac(); //destruktor

    void load();
    void show();
    void porownaj(const Potwor& monster);
};
Postac.cpp
#include <iostream>
#include <cstdlib>
#include "Potwor.h"
#include "Postac.h"
using namespace std;

void Postac::load() //metoda wczytujaca dane postaci
{
    cout << "Czy chcesz wprowadzić Atrybuty Postaci(t/n)?";
    cin >> odp;
    if (odp == 't' || odp == 'T') {
        cout << "\nPodaj "<<Italic_cyan<<"Nazwe Postaci"<<white<<":";
        cin >> nazwa;
        cout << "Podaj "<<yellow<<"Sile"<<white<< nazwa << "'a:";
        cin >> sila;
        cout << "Podaj "<<purple<<"Wytrzymalosc"<<white<< nazwa << "'a:";
        cin >> wytrzymalosc;
        cout << "Podaj Ilosc "<<red<<"Zdrowia"<<white << nazwa << "'a:";
        cin >> zdrowie;
        cout << "Podaj "<<green<<"Zrecznosc"<<white<< nazwa << "'a:";
        cin >> zrecznosc;
        cout << "Podaj "<<blue<<"Inteligencje"<<white<< nazwa << "'a:";
        cin >> inteligencja;
        cout << "\n";
    }
}
void Postac::show() //metoda ukazująca dane postaci
{
    system("clear");
    cout <<Italic_cyan<<"Nazwa Postaci"<<white<<":" << nazwa << endl
         <<yellow<<"Sila"<<white<<":" << sila << endl
         <<purple<<"Wytrzymalosc"<<white<<":" << wytrzymalosc << endl
         <<red<<"Zdrowie"<<white<<":" << zdrowie << endl
         <<green<<"Zrecznosc"<<white<<":" << zrecznosc << endl
         <<blue<<"Inteligencja"<<white<<":" << inteligencja << endl;
    nP = nazwa;
    wynik1 = sila + wytrzymalosc + zrecznosc + inteligencja / zdrowie;
}

Postac::Postac(string n, int s, int w, float zdr, int zr, int intel) //konstruktor klasy Postac
{
    nazwa = n;
    sila = s;
    wytrzymalosc = w;
    zdrowie = zdr;
    zrecznosc = zr;
    inteligencja = intel;
}
Postac::~Postac() //destruktor klasy Postac
{
    cout << "\nJezeli widzisz ten komunikat to znaczy,ze twoj komputer zniknie za…1…2…3 BOOM!" << endl;
}

void Postac::porownaj(const Potwor& monster)
{
    if (wynik1 > monster.getScore())

        cout << np << " Przegralby z " << nP;

    if (wynik1 < monster.getScore())

        cout << np << "Wygralby z " << nP;

    if (wynik1 == monster.getScore())

        cout << "Bylby remis";
}
Potwor.h 
#include <iostream>
#include "Character.h"

class Potwor : public Character {
public:
    Potwor(std::string = "Potwor", int = 5, int = 5, float = 100, int = 5, int = 5); //konstruktor i wartosci domyslne tego konstruktora
    ~Potwor(); //destruktor

    void load();
    void show();
    void respawn();
    int getScore() const;
};
Potwor.cpp
#include <iostream>
#include <cstdlib>
#include "Potwor.h"
#include "Postac.h"

using namespace std;

void Potwor::load() //metoda wczytująca dane potworka
{
    cout << "Czy chcesz wprowadzić Atrybuty Potwora(t/n)?";
    cin >> odp;
    if (odp == 't' || odp == 'T') {
        cout << "\nPodaj "<<Italic_cyan<<"Nazwe Potwora"<<white<<":";
        cin >> nazwa;
        cout << "Podaj "<<yellow<<"Sile"<<white<< nazwa << "'a:";
        cin >> sila;
        cout << "Podaj "<<purple<<"Wytrzymalosc"<<white<< nazwa << "'a:";
        cin >> wytrzymalosc;
        cout << "Podaj Ilosc "<<red<<"Zdrowia"<<white<< nazwa << "'a:";
        cin >> zdrowie;
        cout << "Podaj "<<green<<"Zrecznosc"<<white<< nazwa << "'a:";
        cin >> zrecznosc;
        cout << "Podaj "<<blue<<"Inteligencje"<<white<< nazwa << "'a:";
        cin >> inteligencja;
        cout << "\n";
    }
}
void Potwor::show() //metoda ukazująca dane potworka
{
    system("clear");
    cout <<Italic_cyan<<"Nazwa Potwora"<<white<<":" << nazwa <<endl
         <<yellow<< "Sila" <<white<":"<< sila << endl
         <<purple<<"Wytrzymalosc"<<white<<":" << wytrzymalosc << endl
         <<red<<"Zdrowie"<<white<<":"<< zdrowie << endl
         <<green<<"Zrecznosc"<<white<<":"<< zrecznosc << endl
         <<blue<<"Inteligencja"<<white<<":" << inteligencja << endl;
    np = nazwa;
    wynik = sila + wytrzymalosc + zrecznosc + inteligencja / zdrowie;
}

void Potwor::respawn() //metoda do respawnu potworkow ver.Pre-Alpha
{

    cout << "\nIle chcesz tych Potworów?" << endl;
    cin >> x;
    cout << "++++++++++++++++++++++++++++++++++++++++++\n";
    for (y = 1; y <= x; y++) {
        cout << "+  " << y << " " << nazwa << "                              +" << endl;
    } //koniec fora
    cout << "++++++++++++++++++++++++++++++++++++++++++\n";
} //koniec voida

Potwor::Potwor(string n, int s, int w, float zdr, int zr, int intel) //konstruktor
{
    nazwa = n;
    sila = s;
    wytrzymalosc = w;
    zdrowie = zdr;
    zrecznosc = zr;
    inteligencja = intel;
}
Potwor::~Potwor() //destruktor
{
    cout << "\nMozna dzialac na nowo :D" << endl;
}

int Potwor::getScore()
{
    return wynik;
}
Character.h
class Character //klasa z ktorej dziedzicza klasy Postac i Potwor !
    {
protected:
    std::string nazwa, np, nP; //nazwa <-ogólna potwora,bądź postaci która po tej klasie dziedziczy, np<-nazwa potworka gdyż nie wiem jak wczytać ją z metody load() do metody porownaj() nP<-nazwa postaci też z tych samych pobudek;
    int x, y;
    int sila;
    int wytrzymalosc;
    float zdrowie;
    int inteligencja, zrecznosc;
    char odp;
    int wynik1, wynik; //wartości do porównywania kto by wygrał gdyby doszło do ewentualnego pojedynku
    const std::string white  = "\033[0m";
    const std::string red    = "\033[91m";
    const std::string green  = "\033[32m";
    const std::string yellow = "\033[93m";
    const std::string blue  = "\033[94m";
    const std::string purple = "\033[95m";
    const std::string Italic_cyan = "\033[3;96m";

public:
    virtual void load() = 0;
    virtual void show() = 0;
};

Edit: I mój aktualny błąd jaki wyskoczył przy kompilacji :

error: initializer-string for array of chars is too long [-fpermissive]|

i wskazuje na
const char white[] = "\033[0m";
const char red[] = "\033[91m";
const char green[] = "\033[32m";
const char yellow[] = "\033[93m";
const char blue[] = "\033[94m";
const char purple[] = "\033[95m";
const char Italic_cyan[] = "\033[3;96m";


Edit2: Uaktualniłem kod jakby co !
edytowany 2x, ostatnio: SadBoy98, 2016-07-10 21:17
Pokaż pozostałe 4 komentarze
getScore() musi być zdefiniowane jako int getScore() const - twonek 2016-07-10 14:45
ok,zmieniłem ale kolejny mam błąd a mianowicie: error: invalid operands of types ‘const char [2]’ and ‘int’ to binary ‘operator<<’| i wsazuje na linie <<yellow<< "Sila" <<white<":"<< sila << endl - SadBoy98 2016-07-10 20:45
bo zjadłeś jedno &lt; po white - twonek 2016-07-10 21:46
ok,dzięki :) swoją drogą wyskoczył mi błąd do int Potwor::getScore() i dodałem const przed w Potwor.cpp i działa normalnie ale mam pytanko jak chce zwrocic imie tego potworka to tak samo czy troche inaczej trzeba ? - SadBoy98 2016-07-10 21:56

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0