• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ Uzywanie zmiennych z innych Klas

VPS Starter Arubacloud
0 głosów
755 wizyt
pytanie zadane 2 kwietnia 2016 w C i C++ przez veryhotshark Obywatel (1,620 p.)
witam mianowici chodzi mi o to że zrobiłem odzielnego void() Menu i tam jest Switch który wywołuje dane metody z klasy i chciałem użyc pętli while z warunkiem (HP!=0) ale piszą że nie ma deklaracji HP w tym voidzie ,a zmienna HP jest w klasie Gracz i która dziedziczy z klasy Postać i konstruktorem klasy Gracz przypisałem HP=1

2 odpowiedzi

0 głosów
odpowiedź 2 kwietnia 2016 przez draghan VIP (106,230 p.)
Podaj kod. Opis jest niejasny.
komentarz 2 kwietnia 2016 przez veryhotshark Obywatel (1,620 p.)
// plik nagłowkowy

#include <iostream>

using namespace std;

void Poczatek();
void Menu();

class Bohater // czyli nasi bohaterowie w grze
{
   public:
   virtual void Atak()=0;
   virtual void Obrona()=0;
   virtual void Przeladowanie()=0;

};

class Ty:public Bohater // czyli nasz boheter
{
   int ammo;

   public:

   int HP;
   Ty(int=1,int=0);
   virtual void Atak();
   virtual void Obrona();
   virtual void Przeladowanie();
};

//plik cpp

#include <iostream>
#include "Kowboj.h"
#include <windows.h>
#include <cstdlib>
#include <conio.h>
#include <cstdio>


using namespace std;

void Poczatek()
{
   Sleep(1000);
   cout<<"-------------------------------"<<endl;
   cout<<"|      GRA   W   KOWBOJE      |"<<endl;
   cout<<"-------------------------------"<<endl;
   Sleep(2000);
   cout<<"Zeby zaatakowac nacisnij : 1"<<endl;
   Sleep(1000);
   cout<<"Zeby zablokowac nacisnij : 2"<<endl;
   Sleep(1000);
   cout<<"Zeby przeladowac nacisnij : 3"<<endl;
   Sleep(1000);
   cout<<"Nacisnij ""enter"" zeby zaczac:";

}

void Menu()
{
   int runda=1;
   int wybor;
   getch(); // pobiera znak z klawiatury zeby zaczac Menu
   cout<<"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\\b\b\b\b\b\b"; // wykasowuje slowo "nacisnij enter..."
   cout<<"Twoja rozgrywka rozpocznie sie za :";
     for (int i=3; i>=0;i--)
    {
       Sleep(1000);
         cout<<i<<"\b";
    }
    system("cls");
   cout<<"1.ATTACK"<<" || "<<"2.BLOCK"<<" || "<<"3.RELOAD"<<endl;
   cout<<"-----------------------------------------------"<<endl;
   Ty atakuj;
    do{
   cout<<"Wybierz : ";
   cin>>wybor;
   switch(wybor) // to musisz wlozyc w petle nieskonczona np. while hp !=0 albo dopoki ktorys z graczy nie jest martwy zrob zmienna
   {
   case 1:
      {
      atakuj.Atak();
      runda--;
      }
   break;
   case 2:
      {
      atakuj.Obrona();
      }
   break;
   case 3:
      {
      atakuj.Przeladowanie();
      }
   break;
   default:
      cout<<"Fail";
   }}while(runda==1);
}

Ty::Ty(int hp,int am)
{
   HP=hp;
   ammo=am;
}

void Ty::Atak()
{
   HP--;
   if(HP==0)
   {
      cout<<"Strzal";
   }
   getchar();
}
void Ty::Obrona()
{
      cout<<"Tarcza";
   getchar();
}

void Ty::Przeladowanie()
{

      if(ammo==6)
      {
         cout<<"pelny magazynek, zmarnowales ruch";
      }
      else
      {
      ammo++;
      cout<<"Ladowanie , masz w magazynku "<<ammo<<" naboji"<<endl;
      }

    getchar();
}

//main

#include <iostream>
#include "Kowboj.h"
#include <windows.h>
#include <cstdlib>
#include <conio.h>
#include <cstdio>


using namespace std;



int main()
{
   Poczatek();
   Menu();

    return 0;
}

mianowicie chciałem żeby switch się wykonywał dopóki HP jest różne od zera ale mówią że hp nie było zdeklarowane

komentarz 2 kwietnia 2016 przez veryhotshark Obywatel (1,620 p.)
narazie zrobiłem zmienną runda i w case 1 dekrementuje ją ale chciałbym żeby było to hp w voidzie atak.
komentarz 3 kwietnia 2016 przez draghan VIP (106,230 p.)

Potrzebujesz przesyłać do funkcji obiekt danej klasy lub tworzyć go w zasięgu tej funkcji.

Z tego co widzę, masz tam jeden obiekt klasy Ty, nazwany atakuj. Jeśli to stan HP tego obiektu chciałbyś badać, piszesz w warunku, np.:

while( atakuj.HP > 0 )
{
   // ...
}

 

komentarz 3 kwietnia 2016 przez veryhotshark Obywatel (1,620 p.)
o dziękuje bardzo
0 głosów
odpowiedź 2 kwietnia 2016 przez KubenQPL Maniak (62,820 p.)
#include /* jakiś kod */ InnaKlasa klasa; klasa.zmienna;
komentarz 2 kwietnia 2016 przez Dawid Shoemaker Nowicjusz (170 p.)
przy założeniu, ze zmienna ta jest publiczna.

Ogólnie jeżeli masz do czynienia z dziedziczeniem, to switch nie powinien być użyty w kodzie. Swticha używasz jedynie podczas tworzenia odpowiedniego obiektu. Gdy już masz stworzony obiekt, wywołujesz na nim odpowiednią metodę, a konkretne zachowanie jest zależne od typu klasy- czyli czysty polimorfizm.

Podeślij kod to zobaczymy co da się zrobić ;)
komentarz 2 kwietnia 2016 przez veryhotshark Obywatel (1,620 p.)
witam kod jest na górze  chodzi mi mianowicie żeby switch się wykonywał dopóki HP jest różne od zera a jeśli wybieramy case 1 gdzie wywołuje metode z klasy to tam się HP dekrementuje i staje się zerem i wtedy program się przerywa

Podobne pytania

0 głosów
1 odpowiedź 185 wizyt
pytanie zadane 21 stycznia 2017 w PHP przez Mistrz0000000 Bywalec (2,780 p.)
0 głosów
3 odpowiedzi 239 wizyt
pytanie zadane 1 kwietnia 2016 w PHP przez Karol Wiczling Początkujący (430 p.)
0 głosów
2 odpowiedzi 489 wizyt

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...