Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Obliczenie poziomu zdrowia z innej klasy.

Ostatnio zmodyfikowano 2017-10-13 18:04
Autor Wiadomość
folxu
Temat założony przez niniejszego użytkownika
Obliczenie poziomu zdrowia z innej klasy.
» 2017-10-13 14:26:59
Hejka, wie ktoś moze o co chodzi?
Otrzymuje błąd a w sumie to błędy w linii: [w pliku test.cpp]

18 - error: expected unqualified-id before '.' token
19 - error: expected primary-expression before '.' token
20 - error: expected unqualified-id before '.' token
21 - error: expected primary-expression before '.' token

Ogolnie mam dwie klasy:
"glownybohater" i "poboczna" i chcialbym zeby void void glownybohater::wczytajwalke() obliczyl "PZotaloHP" z klasy "poboczna"


Kod:

main.cpp
C/C++
#include <iostream>
#include "test.h"

using namespace std;

int main()
{
    glownybohater bohater;
    bohater.wczytajwalke();
    return 0;
}

test.h
C/C++
#include <iostream>

using namespace std;

class glownybohater
{
public:
    int Atak = 5;
    int Przebicie = 1;
    int Obrona = 4;
    int Zdrowie = 100;
    int ZadanyDMG;
    int ZostaloHP;
   
    void wczytajwalke();
};

class poboczna
{
public:
    int PAtak = 10;
    int PPrzebicie = 10;
    int PObrona = 10;
    int PZdrowie = 200;
    int PZadanyDMG;
    int PZostaloHP;
   
    void Pwczytajwalke();
};


test.cpp

C/C++
#include <iostream>
#include "test.h"
using namespace std;


void glownybohater::wczytajwalke()
{
    int wybor;
   
    cout << "Co chcesz zrobic?" << endl;
    cout << "1. Uderz przeciwnika" << endl;
    cout << "2. Wyjdz z walki" << endl;
    cout << "Twoj wybor:" << endl;
    cin >> wybor;
    switch( wybor )
    {
    case 1:
        glownybohater.ZadanyDMG = glownybohater.Atak + glownybohater.Przebicie;
        cout << "Zadales przeciwnikowi: " << glownybohater.ZadanyDMG << " obrazen " << endl;
        poboczna.PZostaloHP = poboczna.PZdrowie - glownybohater.ZadanyDMG;
        cout << "Przeciwnikowi zostalo: " << poboczna.PZostaloHP << " zdrowia " << endl;
       
        break;
    default:
        cout << "jakis tekst";
        break;
       
    }
   
}
P-165687
YooSy
» 2017-10-13 14:39:41
» Porady dla użytkowników cpp0x.plZakładanie tematów na forum zalecenie
Szanuj czas i zasady.

Nie masz glownybohater w metodzie wczytajealke.
Tak tylko rzuciłem okiem na kod.
Poczytaj o wskaźniku
this
.

Wyjasnij jeszcze krok po kroku co ma się dziać w tej grze.
Masz teraz dwie identyczne klasy. Po co?
P-165688
Breakermind
» 2017-10-13 14:57:34
Usuń to: glownybohater. w metodzie glownybohater::wczytajwalke()

No i nie masz utworzonego objektu poboczna w metodzie lub w main glownybohater::wczytajwalke(tu przekazać możesz object) (musisz albo przekazać albo utworzyć).



P-165690
folxu
Temat założony przez niniejszego użytkownika
» 2017-10-13 15:42:57
no dobra jak usune glowny.bohater z linii to "ZadanyDMG = Atak + Przebicie;" to faktycznie dziala
ale teraz jak zrobić żeby od PZdrowie (klasa poboczna) odjęło ZadanyDMG(klasa glownybohater)

Myslalem o czyms takim:

C/C++
ZadanyDMG = Atak + Przebicie;
cout << "Zadales przeciwnikowi: " << ZadanyDMG << " obrazen " << endl;
poboczna::PZostaloHP = poboczna::PZdrowie - glownybohater::ZadanyDMG;
cout << "Przeciwnikowi zostalo: " << poboczna::PZostaloHP << " zdrowia " << endl;

ale niestety nie dziala xD
P-165698
Breakermind
» 2017-10-13 15:59:55
1) Klasa opisuje tylko strukturę obiektu

2) Musisz utworzyć obiekt żeby z niego korzystać (tak jak tworzysz: int Numer = 2; )

// tworzysz osła
poboczna Osiol = poboczna();
// i bohatera
glownapybohater Lew = glownybohater();
// wczytujesz grę dla osła
Lew.wczytajgre(Osiol);

3) żeby użyć Osła w obiekcie Lew musisz jakoś przekazać Osła do obiektu Lew tak jak byś używał

normalnej funkcji(metody):
Lew.wczytajgre(Osiol);

lub w konstruktorze:
glownapybohater Lew = glownybohater(Osiol);
Lew.wczytajgre(Osiol);

4) Zacznij ładnie nazywać klasy (znacznie lepiej wygląda):
JakasClasa Jony = JakasClasa();

Miej więcej jakoś tak ;)
P-165700
Breakermind
» 2017-10-13 16:51:47
Pisz jak najprościej (nie komplikuj i tak już pojechanych tematów):

main.cpp
C/C++
#include <iostream>
#include "test.h"

using namespace std;

int main()
{
    glownybohater bohater;
    poboczna osiol;
   
    bohater.wczytajwalke( osiol );
    return 0;
}

test.h
C/C++
#include <iostream>

using namespace std;

class poboczna
{
public:
    int PAtak = 10;
    int PPrzebicie = 10;
    int PObrona = 10;
    int PZdrowie = 200;
    int PZadanyDMG;
    int PZostaloHP;
   
    void Pwczytajwalke();
};

class glownybohater
{
public:
   
    int Atak = 5;
    int Przebicie = 1;
    int Obrona = 4;
    int Zdrowie = 100;
    int ZadanyDMG;
    int ZostaloHP;
    glownybohater();
    void wczytajwalke( poboczna osiol );
};

test.cpp
C/C++
#include <iostream>
#include "test.h"

using namespace std;

glownybohater::glownybohater() { }

void glownybohater::wczytajwalke( poboczna osiol )
{
    int wybor;
   
    cout << "Co chcesz zrobic?" << endl;
    cout << "1. Uderz przeciwnika" << endl;
    cout << "2. Wyjdz z walki" << endl;
    cout << "Twoj wybor:" << endl;
    cin >> wybor;
    switch( wybor )
    {
    case 1:
        ZadanyDMG = Atak + Przebicie;
        cout << "Zadales przeciwnikowi: " << ZadanyDMG << " obrazen " << endl;
        osiol.PZostaloHP = osiol.PZdrowie - ZadanyDMG;
        cout << "Przeciwnikowi zostalo: " << osiol.PZostaloHP << " zdrowia " << endl;
       
        break;
    default:
        cout << "jakis tekst";
        break;
       
    }
   
}

Kompilujesz:
C/C++
g++ - o start main.cpp test.h test.cpp - std = c++ 11

Chmody:
C/C++
chmod + x start

Uruchamiasz z konsoli:
C/C++
./ start

No i działa :D
P-165708
folxu
Temat założony przez niniejszego użytkownika
» 2017-10-13 18:04:22
ajajaj no działa xD
Już kminie o co chodzi :D
Dziena!
P-165710
« 1 »
  Strona 1 z 1