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

Prośba o ocenę 2 tyg. nauki [C++] na podstawie prostej gry tekstowej

Object Storage Arubacloud
+1 głos
588 wizyt
pytanie zadane 5 listopada 2016 w C i C++ przez justKaPi Początkujący (250 p.)

Hejka! Od 2 tygodni regularnie uczę się C++
Wczoraj zacząłem tworzyć pseudo tekstowego RPG'a.

 

Ocenicie progres,składnie, estetyke,etc?

Wszelakie porady mile widziane :D

#include <iostream>
#include <cstdlib>
#include <time.h>
#include <conio.h>
using namespace std;

string hero;
string enemy;
//hero
int lvl_hero=1;
int hp_hero=25;
int hp_hero_max=25;
int hero_str=1;
int dmg_hero;
int hero_weapon;
//wybor/zmienne
int enemy_val;
int choice;
int stan=0;
//przeciwnik 1
int dmg_enemy_1;
int hp_enemy_1=10;
int hp_enemy_1_max=10;
//przeciwnik 2
int dmg_enemy_2;
int hp_enemy_2=15;
int hp_enemy_2_max=15;
//ekwipunek
int weapon_1;
string weapon_1_name = "Miecz [1-3 DMG]";
int weapon;
int potion=0;
int gold=0;
//statystyki
int tura=0;
int pojedynek=0;


int main(){

    cout << "Witaj poszukiwaczu przygod! Jak sie nazywasz?" << endl;
    cin >>hero;
    cout << "Milo mi Cie poznac " << hero << "!" << endl;
    cout << endl;
    getch();

    cout << "Otrzymano "<<weapon_1_name << endl;
    cout << endl;
    weapon=1;


    do{
    cout << endl;
    cout <<"-------------------------"<<endl;
    cout << "1.Rozpocznij walke!" << endl;
    cout << "2.Zobacz statystyki!" << endl;
    cout << "3.Zobacz ekwipunek!" << endl;
    cout << endl;
    cout << "4.Wypij miksture!(+10 HP)"<< "["<<potion<<"] szt."<<endl;
    cout << "5.Kup miksture! (50 Zlota)" << endl;
    cout << "6.Zresetuj Gre" << endl;
    cout << endl;
    cout <<"-------------------------"<<endl;
    cout <<"HP("<<hp_hero<<"/"<<hp_hero_max<<")"<<endl;
    cout <<"Zloto("<<gold<<")"<< endl;



    cout<<endl;
    cin>>choice;
    if(choice==1){
    stan=1;

        srand(time(NULL));
        enemy_val=rand()%2+1;
        if(enemy_val==1){

    do{

    cout << "Pojawia sie przeciwnik!" << endl;
    cout << "-------------------------" << endl;
    cout <<"To Dziki Pies! ("<<hp_enemy_1_max<< "HP)" << endl;
    getch();
    do{
    cout << endl;
    srand(time(NULL));
        dmg_enemy_1=rand()%2+1;
    cout <<"Przeciwnik uderza! Zadano " <<dmg_enemy_1<<" obrazen!" << endl;
    hp_hero = hp_hero-dmg_enemy_1;

    cout <<"Twoje HP: " <<hp_hero<< " " << endl;
    cout <<"HP Przeciwnika: " <<hp_enemy_1<< " " << endl;
    getch();
    cout << endl;

    srand(time(NULL));
    dmg_hero=rand()%3+1;
    cout <<"Atakujesz przeciwnika! Zadano " <<dmg_hero<<" obrazen!" << endl;

    hp_enemy_1=hp_enemy_1-dmg_hero;
    cout <<"Twoje HP: " <<hp_hero<< " " << endl;
    cout <<"HP Przeciwnika: " <<hp_enemy_1<< " " << endl;
    tura++;
    getch();
    }while(hp_hero >0 && hp_enemy_1 >0);
    stan =0;
 if(hp_enemy_1<=0){
        gold += 50;
        cout << endl;
        cout<<"--------------------------"<<endl;
        cout << "Przeciwnik pokonany!" << endl;
        cout<<"--------------------------"<<endl;
        cout<<endl;
        cout << "Otrzymano [Zloto 50]" << endl;
        cout << endl;
        hp_enemy_1=hp_enemy_1_max;
    pojedynek++;



    }else{
    gold -= 50;
    cout << "Przegrales! Utracono[Zloto 50]" << endl;

    }



    }while(stan==1);




    }if(enemy_val==2){
        do{

    cout << "Pojawia sie przeciwnik!" << endl;
    cout << "-------------------------" << endl;
    cout <<"To Ghul! ("<<hp_enemy_2_max<< "HP)" << endl;
    getch();
    do{
        srand(time(NULL));
        dmg_enemy_2=rand()%4+1;
    cout << endl;

    cout <<"Przeciwnik uderza! Zadano " <<dmg_enemy_2<<" obrazen!" << endl;
    hp_hero = hp_hero-dmg_enemy_2;


    cout <<"Twoje HP: " <<hp_hero<< " " << endl;
    cout <<"HP Przeciwnika: " <<hp_enemy_2<< " " << endl;
    getch();
    cout << endl;
    if(hp_hero <=0 || hp_enemy_2 <=0){

        break;
    }
    srand(time(NULL));
    dmg_hero=rand()%3+1;
    cout <<"Atakujesz przeciwnika! Zadano " <<dmg_hero<<" obrazen!" << endl;

    hp_enemy_2=hp_enemy_2-dmg_hero;
    cout <<"Twoje HP: " <<hp_hero<< " " << endl;
    cout <<"HP Przeciwnika: " <<hp_enemy_2<< " " << endl;
    tura++;
    getch();
    }while(hp_hero >0 && hp_enemy_2 >0);
    stan =0;
 if(hp_enemy_2<=0){
        gold += 75;
        potion +=1;
        cout << endl;
        cout<<"--------------------------"<<endl;
        cout << "Przeciwnik pokonany!" << endl;
        cout<<"--------------------------"<<endl;
        cout<<endl;
        cout << "Otrzymano [Zloto 75]" << endl;
        cout << "Otrzymano [Mikstura]" << endl;
        cout<<endl;
        hp_enemy_2=hp_enemy_2_max;

    pojedynek++;


    }else{
        if(gold>=50){
    gold -= 50;
        }
    cout<<endl;
    cout << "Przegrales! Utracono[Zloto 50]" << endl;
    cout<<endl;




    }






    }while(stan==1);







    }

    }
    if(choice==2){
        stan=2;
        cout<<"Statystyki"<<endl;
        cout<<"-------------------"<<endl;
        cout<<"Imie: " <<hero<<endl;
        cout<<"Poziom Postaci("<<lvl_hero<<")" << endl;
        cout<<"Obecne HP(" <<hp_hero<< ")" << endl;
        cout<<"Max HP(" <<hp_hero_max<< ")" << endl;
        cout<<"Liczba pojedynkow(" << pojedynek <<")"<< endl;
        cout<<"Liczba tur ("<<tura<<")"<<endl;
        cout<<"-------------------"<<endl;

        cout<< endl;
        cout<<"Kliknij dowolny przycisk aby powrocic do menu"<<endl;
        getch();
        stan=0;
        cout<<endl;



    }

    if(choice==3){
        stan=3;
        cout<<"Ekwipunek"<<endl;
        cout<<"-------------------"<<endl;
        cout<<"Bron(" <<weapon_1_name<< ")" << endl;
        cout<<"Mikstury (" <<potion<< ")" << endl;
        cout<<"Zloto ("<<gold<<")"<<endl;
        cout<<"-------------------"<<endl;

        cout<< endl;
        cout<<"Kliknij dowolny przycisk aby powrocic do menu"<<endl;
        getch();
        stan=0;
        cout<<endl;

    }
    if(choice==4){
        if(hp_hero==hp_hero_max){}
        if(hp_hero_max-11<hp_hero){
        hp_hero+=(hp_hero_max-hp_hero);

        }else{

        cout << endl;
        cout << "Odnowiono 10HP!" << endl;
        cout << endl;
        hp_hero +=10;
        cout <<"HP("<<hp_hero<<"/"<<hp_hero_max<<")"<<endl;


        stan=0;
        }



    }
    if(choice==5){
        if(gold<50){
            cout << "Niewystarczająca ilosc zlota!" << endl;
            break;
        }
        gold-=50;
        potion+=1;


    }
    if(choice==6){
        tura=0;
        pojedynek=0;
        gold=0;
        hp_hero=hp_hero_max;
        potion=0;
    }






}while(stan==0);
return 0;
}

 

2 odpowiedzi

+4 głosów
odpowiedź 5 listopada 2016 przez Konrad Nabożny Stary wyjadacz (13,460 p.)
Znam ten ból, też często dostawałem po łapskach za conio.h i w końcu się nauczyłem.

Kilka słów ode mnie.

- SRAND(TIME(NULL)) DEFINIUJEMY TYLKO RAZ NA POCZĄTKU PROGRAMU!

- unikaj przedstawianych przez Pana Mirosława zmiennych globalnych i przerzuć się na lokalne.

- cout << "Otrzymano [Zloto 75]" << endl; - tego typu dane wypisuj ZAWSZE za pomocą zmiennych. Może zdarzyć się sytuacja że przez takie coś nie zauważysz że w zmiennej siedzą śmieci i zdziwisz się gdy zobaczysz tajemnicze liczby na ekranie.

- osobiście zrobiłbym porządek w klamrach (Code::Blocks oferuje ciekawą rzecz. PPM na polu tekstowe w którym piszesz->Format using AStyle)
komentarz 5 listopada 2016 przez Avernis Nałogowiec (27,400 p.)
Poczekaj. Programuję od półtora roku i nie spotkałem się z twoim podpunktem 3. Wyjaśnij proszę jak wypisywanie bez zmiennych może na nie wpłynąć?
komentarz 5 listopada 2016 przez niezalogowany
komentarz 5 listopada 2016 przez Konrad Nabożny Stary wyjadacz (13,460 p.)
Co do mojego podpunktu 3. Chodziło mi o to, że wypisujemy że dostajemy te 75 złota, a tak na prawdę pod zmienną którą używamy gdzieś w tamtym miejscu mogą kryć się śmieci. Gracz widzi że dostał 75 golda? Fajnie, po 10 minutach patrzy na stan ogólny a tam -4732132
–5 głosów
odpowiedź 5 listopada 2016 przez manjaro Nałogowiec (37,390 p.)
conio.h dziękuję dobranoc. Dalej nawet nie czytam.
3
komentarz 5 listopada 2016 przez justKaPi Początkujący (250 p.)
Rozwiń myśl.
1
komentarz 5 listopada 2016 przez criss Mędrzec (172,590 p.)
Chodzi o to, że conio.h jako że korzysta z WinAPI - działa tylko na Windowsie. Ale uczysz się dopiero 2 tygodnie, a programik to mała apka konsolowa wyświetlająca kilka napisów, więc nie wiem co z tego, że nie jest multiplatformowa :-:
6
komentarz 5 listopada 2016 przez justKaPi Początkujący (250 p.)
Ja się na razie jaram, że to działa, a wy mi tu z multiplatformowością wyjeżdżacie XDDD
komentarz 5 listopada 2016 przez manjaro Nałogowiec (37,390 p.)

Ja się na razie jaram, że to działa

Sęk w tym że u mnie to nie działa...

komentarz 5 listopada 2016 przez justKaPi Początkujący (250 p.)
Wystarczy, że usuniesz conio.h i wszystkie getch();.

 

Chyba
3
komentarz 5 listopada 2016 przez Kodeman Gaduła (4,480 p.)

Oczywiście jak w 90% komentarzy narzekanie jak conio.h jest złe, ale podanie zamiennika dobrego już jest za trudne. Sęk w tym, że cin i getchar wymagają wciśnięcia entera. Sam mam więcej doświadczenia ale wcześniej ignorowałem takie komentarze, bo nadal mam jakiś gram wiedzy w tonie możliwości c++. Możesz stworzyć własną funkcję getch: http://4programmers.net/C/FAQ/W%C5%82asna_implementacja_funkcji_getch()

albo rzuć okiem na bibliotekę curses.h  Sam jeszcze Ci nie mogę powiedzieć czy to działa, bo też dopiero zabrałem się za naukę

1
komentarz 5 listopada 2016 przez manjaro Nałogowiec (37,390 p.)
edycja 5 listopada 2016 przez manjaro
Bardzo proszę o sensowny argument za co te minusy!

Front-end developer przy tworzeniu strony internetowej dba o to aby była obsługiwana przez firefoxa, przez chroma, a nawet przez inne dziadowskie przeglądarki typu IE. Musi zadbać też o to aby jego strona dobrze wyświetlała się na laptopach, smartfonach, telewizorach czy rzutnikach.

Tutaj autor nie zadbał i jego program nie działa na Macu, Linuksie, BSD. A ja wytykając błąd dostaję minusy. Dziękuję za obiektywizm.

Mamy tu kółko wzajemnej adoracji użytkowników Windowsa.
komentarz 5 listopada 2016 przez criss Mędrzec (172,590 p.)

@manjaro

Oczywiście jak w 90% komentarzy narzekanie jak conio.h jest złe, ale podanie zamiennika dobrego już jest za trudne. 

 Ale uczysz się dopiero 2 tygodnie, (...) więc nie wiem co z tego, że nie jest multiplatformowa :-:

 Twoja odpowiedź nic nie wnosi i nie tłumaczy twojej opinii w żaden sposób. Poza tym, jak już pisałem, autor uczy się od ledwo dwóch tygodni, więc czepianie się o brak multiplatformowości jest bez sensu. Minusy są pewnie nie dlatego, że wytknąłeś błąd, tylko dlatego, że to zrobiłeś i nie wyjaśniłeś.

komentarz 5 listopada 2016 przez manjaro Nałogowiec (37,390 p.)
1. Autor prosił o ocenę więc dostał ocenę. Nie używać conio.h więc myślę że jednak chyba coś wniosłem do tematu.

2. Skoro używa jakiejś biblioteki to chyba wie skąd się ta biblioteka bierze i jakie jest jej działanie.

Podobne pytania

0 głosów
1 odpowiedź 149 wizyt
+1 głos
0 odpowiedzi 326 wizyt
0 głosów
2 odpowiedzi 461 wizyt
pytanie zadane 14 września 2018 w Systemy operacyjne, programy przez comoto45 Nowicjusz (160 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...