Obliczenie poziomu zdrowia z innej klasy.
Ostatnio zmodyfikowano 2017-10-13 18:04
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 #include <iostream> #include "test.h"
using namespace std;
int main() { glownybohater bohater; bohater.wczytajwalke(); return 0; } test.h #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 #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; } } |
|
YooSy |
» 2017-10-13 14:39:41 Zakładanie tematów na forumSzanuj 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? |
|
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ć).
|
|
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: 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 |
|
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 ;) |
|
Breakermind |
» 2017-10-13 16:51:47 Pisz jak najprościej (nie komplikuj i tak już pojechanych tematów): main.cpp #include <iostream> #include "test.h"
using namespace std;
int main() { glownybohater bohater; poboczna osiol; bohater.wczytajwalke( osiol ); return 0; }
test.h #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 #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: g++ - o start main.cpp test.h test.cpp - std = c++ 11
Chmody: Uruchamiasz z konsoli: No i działa :D |
|
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! |
|
« 1 » |