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

Mały, wielki, projekt

Object Storage Arubacloud
0 głosów
181 wizyt
pytanie zadane 20 lutego 2017 w C i C++ przez Zapalony Programista Nowicjusz (120 p.)

Witam, zacząłem pisać mały, aczkolwiek ambitny projekt w konsoli. Pierwsze czego nie wiem to, jak zrobić, żeby ten switch mi działał tak długo, aż gracz nie naciśnie 5 lub hajs mu się skończy. Mam tylko jedno wykonanie.  Też nie wiem jak zapisać stringi jak gracz coś wybierze, po to aby je później wyświetlić. Gra w fazie beta będzie tak, że jak gracz wszystko wybierze, to będzie jakieś losowanie obrażeń od kompa. I to na razie tyle, może z czasem rozwinę.

 

#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <conio.h>

using namespace std;

int rundy;

class Gracz
{
    public:
    int bron;
    string imie;
    string noz;
    string krotka;
    string dluga;
    string granaty;
    int hp;
    int pancerz;
    int hajs;
    int waluta;

    void ekwipunek()
    {
        cout<<"Gracz 1 podaj swoje imie : ";
        cin>>imie;
        cout<<endl;

        hajs=1000;

        cout<<"Twoj stan pieniedzy wynosi : "<<hajs<<endl;
        cout<<"Wpisz co chcesz kupic?"<<endl;
        cout<<"1.noz, 2.b_krotka, 3.b_dluga, 4.granaty, 5.koniec"<<endl;
        cin>>bron;
    }

   void wybor()
    {
      while(waluta<99 && '5')
      {
        switch(bron)
        {
        case 1:
        cout<<"Kupiles kose";
        cout<<endl;
        waluta=hajs-100;
        //tez nie wiem jak to zapisać  tak, zeby mozna bylo to pozniej wyswietlic string noz=="kosa";
        break;

        case 2:
        cout<<"Kupiles berette";
        cout<<endl;
        //string krotka="beretta";
        waluta=hajs-300;
        break;

        case 3:
        cout<<"Kupiles awupe";
        cout<<endl;
        //string dluga="awupa";
        waluta=hajs-500;
        break;

        case 4:
        cout<<"Kupiles granata";
        cout<<endl;
        //string granat="granat";
        waluta=hajs-250;
        break;

        case 5:
        cout<<"Twoj stan pieniedzy wynosi : "<<waluta;
        cout<<"Twoje bronie to "<<noz<<" "<<krotka<<" "<<dluga<<" "<<granaty<<endl;

       }
      }
    }
};


int main()
{
   cout<<"Ile rund chcesz zagrac? ";
   cin>>rundy;

   for(int i=1; i<=rundy; i++)
   {
   cout<<endl;
   cout<<"Runda "<<i<<"."<<endl;
   Gracz g1;
   g1.ekwipunek();
   g1.wybor();
   }

    cout << "Hello world!" << endl;
    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 20 lutego 2017 przez Aisekai Nałogowiec (42,190 p.)
Odpowiedź odnośnie switcha:

Zamknij go w pętli z jakąś zmienną która będzie przechowywać wartość czy udało się wybrać dobrą opcję (boolean). Jeżeli użytkownik wybierze coś spoza dostępnych broni (czyli default) to zmieniasz wartość zmiennej na false, jeśli kupił to zmieniasz na true. Podobnie z hajsem. Czyli miałbyś wtedy dwa warunki w pętli, musiałbyś tak dobrać operatory logiczne żeby wyjść z pętli kiedy będziesz chciał.

Co znaczy zapisać Stringi?
komentarz 20 lutego 2017 przez Zapalony Programista Nowicjusz (120 p.)
Jak wybierze bron np kose to zapisz tam na samym początku pod klasą, że ją wybrał, później, żeby to wyświetlić.

Boola nie znam, mógłbyś mi to trochę przybliżyc?
komentarz 20 lutego 2017 przez Aisekai Nałogowiec (42,190 p.)
boolean to jest zmienna typu logicznego. I tak samo możesz "zapamiętać" że user ma kosę (np dodajesz zmienną boolean czyKosa = false i jak kupił to zmieniasz na true) i potem tam gdzie masz wartość true to wypisujesz co ma.
komentarz 21 lutego 2017 przez Aisekai Nałogowiec (42,190 p.)
edycja 21 lutego 2017 przez Aisekai
Albo możesz zrobić też klasę "broń" i nadać jej pola takie jak: koszt, ilość, czy można ponownie kupić (czy można mieć więcej niż 1 sztukę) i dodać ją do tablicy z ekwipunkiem (w przypadku awki czy kosy będziesz miał ilość stała równą 1, w przypadku granatu będziesz mógł zwiększać ilosc) Nwm czy w c++ jest coś takiego jak interfejs, ale jak dobrze pamiętam to było coś takiego jak funkcja zaprzyjaźniona i dzięki niej można zrobić coś takiego, że robisz klasę abstrakcyjna  i z niej dziedzicza takie rzeczy jak awp, kosa, granat etc.
komentarz 22 lutego 2017 przez Zapalony Programista Nowicjusz (120 p.)

Jak zrobię  bool noz = false; i jak wybiorę tą wartość to jest  1 (jak nie to 0), jak usunę wartość false to normalnie nazwa się wyświetla. Zmieniłem inta broń i dałem do while ze switchem i dalej to samo...

#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <conio.h>

using namespace std;

int rundy;

class Gracz
{
    public:
    int bron;
    string imie;
    string noz;
    string krotka;
    string dluga;
    string granaty;
    int hp;
    int pancerz;
    int hajs;
    int waluta;

    void ekwipunek()
    {
        cout<<"Gracz 1 podaj swoje imie : ";
        cin>>imie;
        cout<<endl;

        hajs=1000;

        cout<<"Twoj stan pieniedzy wynosi : "<<hajs<<endl;
        cout<<"Wpisz co chcesz kupic?"<<endl;
        cout<<"1.noz, 2.b_krotka, 3.b_dluga, 4.granaty, 5.koniec"<<endl;
    }

   void wybor()
    {
      while(waluta<99 && '5')
      {
/*
        bool noz = false;
        bool krotka = false;
        bool dluga = false;
        bool granaty = false;
        //bool bron('1') = true;
*/
        cin>>bron;

        switch(bron)
        {
        case 1:
        cout<<"Kupiles kose";
        cout<<endl;
        waluta=hajs-100;
        noz = true;
        noz = "Kosa";
        break;

        case 2:
        cout<<"Kupiles berette";
        cout<<endl;
        waluta=hajs-300;
        krotka = true;
        krotka = "Beretta";
        break;

        case 3:
        cout<<"Kupiles awupe";
        cout<<endl;
        waluta=hajs-500;
        dluga = true;
        dluga = "Awupa";
        break;

        case 4:
        cout<<"Kupiles granata";
        cout<<endl;
        waluta=hajs-250;
        granaty = true;
        granaty = "Granat m1";
        break;

        case 5:
        cout<<"Twoj stan pieniedzy wynosi : "<<waluta;
        cout<<"Twoje bronie to "<<noz<<" "<<krotka<<" "<<dluga<<" "<<granaty<<endl;
       }

        cout<<"Twoje bronie to "<<noz<<" "<<krotka<<" "<<dluga<<" "<<granaty<<endl;
        }
    }
};


int main()
{
   cout<<"Ile rund chcesz zagrac? ";
   cin>>rundy;


   for(int i=1; i<=rundy; i++)
   {
   cout<<endl;
   cout<<"Runda "<<i<<endl;
   Gracz g1;
   g1.ekwipunek();
   g1.wybor();
   }

    cout << "Hello world!" << endl;
    return 0;
}

 

komentarz 23 lutego 2017 przez Aisekai Nałogowiec (42,190 p.)
Chodziło mi o to, że sprawdzasz czy np wartość czyNoz=true, jesli tak to wypisujesz ze ma noz. Natomiast problem z wpisywaniem do czasu az waluta bedzie =0 lub jak uzytkownik zechce przerwac zakup to możesz umieścić to w while z warunkiem takim jak wcześniej napisałem. Możesz rozważyć z broniami, to co napisałem wcześniej o stworzeniu klasy Broń.

Podobne pytania

+1 głos
4 odpowiedzi 169 wizyt
+2 głosów
4 odpowiedzi 477 wizyt
0 głosów
0 odpowiedzi 182 wizyt
pytanie zadane 29 stycznia 2019 w Nasze projekty przez MrxCI Dyskutant (8,260 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...