• 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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+1 głos
868 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,480 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,480 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ź 185 wizyt
+1 głos
0 odpowiedzi 340 wizyt
0 głosów
2 odpowiedzi 577 wizyt
pytanie zadane 14 września 2018 w Systemy operacyjne, programy przez comoto45 Nowicjusz (160 p.)

93,159 zapytań

142,171 odpowiedzi

321,890 komentarzy

62,489 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 453p. - dia-Chann
  2. 453p. - Marcin Putra
  3. 447p. - Łukasz Piwowar
  4. 443p. - CC PL
  5. 431p. - Łukasz Eckert
  6. 428p. - rafalszastok
  7. 423p. - Adrian Wieprzkowicz
  8. 418p. - rucin93
  9. 410p. - Piotr Aleksandrowicz
  10. 408p. - ksalekk
  11. 402p. - Mariusz Fornal
  12. 340p. - ssynowiec
  13. 329p. - nidomika
  14. 319p. - Michal Drewniak
  15. 298p. - Dawid128
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...