c++ liczby pseudolosowe

0

Robie sobie projekt, gre rpg ktora jest po prostu robiona w celu powtorzenia i przecwiczenia c++.
Jest taki problem, ze ta liczba nie do konca losuje sie jak powinna, spojrzcie na kod a zrozumiecie o co chodzi.
Probowalem juz srand(time(NULL)); i na poczatku i wszedzie. Za kadym razem losuje 6 i 5

string menu_miejsce()
{
    string atak1, atak2;
    float zdrowie=25;
    float enemy1_hp=25;
    float atak=rand()%6+1;
    float atak_przeciwnik=rand()%5+1;
    string atak3;
    system("cls");
    cout<<"Gdzie chcesz sie udac?:"<<endl;
    cout<<endl;
    cout<<"1. Stara Wioska"<<endl;
    cout<<"2. Bagienne Koszary"<<endl;
    cout<<"3. Arena"<<endl;
    cout<<"4. Powrot"<<endl;

    menu_miejsce2=getch();
    switch(menu_miejsce2)
    {
    case '1':
    system("cls");
    cout<<"Podroz do stara wioska"<<endl;
    Sleep(3000);
    system("cls");
    cout<<"Przeszukujesz szuflade"<<endl;
    Sleep(1000);
    cash += rand() % 16 + 1;;
    cout << '\a';
    cout<<"Znajdujesz przyprawy warte: "<<cash<<"Zlota!"<<endl;
    Sleep(1000);
    system("cls");
    cout<<"Powrot do miasta..."<<endl;
    Sleep(1000);
    main();
    break;

    case '2':

    break;

    case '3':
    cout<<"Witaj na Arenie wybierz przeciwnika:"<<endl;
    Sleep(3000);
    cout<<endl;
    cout<<"1. Karl Ramirez - znany bandyta z rozrob w barze"<<endl;
    cout<<"Wymagania aby walczyc z Karl Ramirez: lvl=1"<<endl;
    menu_arena=getch();
    switch(menu_arena)
    {
    case '1':

    system("cls");
    cout<<"Rozpoczyna sie walka"<<endl;
    Sleep(1000);
    cout<<"Twoje zdrowie: "<<zdrowie<<endl;
    cout<<"Twoj miecz: "<<miecz<<endl;
    cout<<"____________________________"<<endl;
    cout<<"Zdrowie przeciwnika: "<<enemy1_hp<<endl;
    cout<<"Bron przeciwnika: "<<"Drewniana palka"<<endl;
    cout<<endl;
    cout<<endl;
    Sleep(3000);
    cout<<"____________________________"<<endl;
    do
    {
    srand(time(NULL));
    cout<<"Wykonaj atak masz na to 2 sekundy!"<<endl;
    cin>>atak3;
    if(atak3== "atak")
    {
    cout << '\a';
    cout<<"Wykonales udany atak!"<<endl;
    cout<<endl;
    enemy1_hp -= atak;
    cout<<"Zadales obrazen:"<<atak<<endl;
    cout<<"Zdrowie przeciwnika: "<<enemy1_hp<<endl;
    cout<<endl;
    }
    Sleep(2000);
    zdrowie -= atak_przeciwnik;
    cout<<endl;
    cout<<"Przeciwnik atakuje za "<<atak_przeciwnik<<endl;
    cout<<"Twoje zdrowie: "<<zdrowie<<endl;
    Sleep(2000);
    }while((zdrowie >= 0)||(enemy1_hp >= 0));

    break;
    }
    break;
    case '4':
    system("cls");
    main();
    break;
    }
}
break;!

Untitled.png

2

Brzydziej tego chyba by się nie dało napisać.
Z system ("cls") i wywołaniem main(), jeden kod stąd do podłogi, bez najmniejszej próby by to miało choć zarys struktury.

Jest to jest "powtarzanie C++" to gratuluję. To jest anty-edukacjs

0

w kodzie

srand(time(NULL));

jest w funkcji string menu_miejsce() i na dodatek po zmiennych float atak=rand()%6+1; float atak_przeciwnik=rand()%5+1; a powinien być w int main()

przeczytaj
https://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Pseudolosowe-liczby-calkowite/290

2

Nawet jeśli kompilator ci na to pozwala, wywoływanie funkcji main jest nielegalne i może prowadzić do dziwnych błędów potem.

1
enedil napisał(a):

Nawet jeśli kompilator ci na to pozwala, wywoływanie funkcji main jest nielegalne i może prowadzić do dziwnych błędów potem.

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

6.8.3.1 main function [basic.start.main]

....
3 The function main shall not be used within a program. The linkage (6.5) of main is implementation-defined. A
program that defines main as deleted or that declares main to be inline, static, or constexpr is ill-formed.
The main function shall not be declared with a linkage-specification (10.5). A program that declares a variable
main at global scope or that declares the name main with C language linkage (in any namespace) is ill-formed.
The name main is not otherwise reserved. [ Example: Member functions, classes, and enumerations can be
called main, as can entities in other namespaces. — end example ]

1 użytkowników online, w tym zalogowanych: 0, gości: 1