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

Delikatna pomoc w C++

Object Storage Arubacloud
0 głosów
223 wizyt
pytanie zadane 21 sierpnia 2018 w C i C++ przez belisima Nowicjusz (120 p.)

Dlaczego przy wyborze (w,s,a,d) kończy program?

#include <iostream>
#include <unistd.h>
#include <ncurses.h>
#include <cstdlib>

using namespace std;

bool player_smierc = false;

int comand;

float hp, dmg, exp, nexp=100;
int lvl=1;
int x = 2, y = 2;

string ruch;

//voidy
void menu();
void gra();
void map();
void stats();
void input();
void logic();
void klasa();

void menu ()
{
    system("clear");
    cout<<"Witaj! ----RPG---"<<endl<<endl;
    cout<<"1. Start gry"<<endl;
    cout<<"2. Wyjście"<<endl;
    cin >>comand;

 switch(comand)
 {
    case 1:
    {
        klasa();
    }break;
    case 2:
    {
        cout<<"Gra zostanie wylaczona!"; sleep(2);
        exit(0);
    }break;
    deflaut:
    {
        cout<<"Nie ma takiej opcji!";sleep(2);
        menu();
    }break;
 }
}
void klasa()
{
    system("clear");
    cout<<"WYBIERZ KLASE: "<<endl<<endl;
    cout<<"1. Wojownik"<<endl;
    cout<<"2. Lowca"<<endl;
    cout<<"3. Mag"<<endl;
    cin >> comand;

    switch(comand)
    {
        case 1:
        {
            hp = 100;
            dmg = 5;
            gra();
        }break;
        case 2:
        {
            hp = 50;
            dmg = 8;
            gra();
        }break;
        case 3:
        {
            hp = 75;
            dmg = 7;
            gra();
        }break;
        default:
        {
            cout<<"Nie ma takiej klasy!"<<endl;
            sleep(2);
            klasa();
        }break;
    }

}

void gra()
{
    system("clear");
    map();
    stats();
    input();
    logic();



}

void map()
{
    if((x==2) && (y==2))
    {
        cout<<"Wioska Startowa"<<endl;

    }
}

void stats()
{
    cout<<"<*>Pozycja gracza na mapie: X: "<<x<<"Y: "<<y<<"<*>"<<endl;
    cout<<"HP/"<<hp<<"      ";
    cout<<"DMG/"<<dmg<<"      ";
    cout<<"LVL/"<<lvl<<"      ";
    cout<<"EXP:"<<exp<<"/"<<nexp<<endl;
}

void input()
{
    cin>>ruch;

    if(ruch=="w")
    {
        y++;

    }
    else if(ruch=="a")
    {
        x=x-1;
    }
    else if(ruch=="s")
    {
        y=y-1;
    }
    else if(ruch=="d")
    {
        y=y+1;
    }
    else
    {
        cout<<"Nie ma takiego polecenia"<<endl;sleep(2);
        gra();
    }

}

void logic()
{
    if(exp>=nexp)
    {
        exp=0;
        lvl++;
        hp+=3;
        dmg+=2;
        nexp=nexp*1.15;

    }

}

 

komentarz 21 sierpnia 2018 przez Secrus Nałogowiec (32,880 p.)
Masz literówkę w pierwszym switchu. Deflaut zamiast default. Daje w komentarzu, bo nie ma związku z problemem.

1 odpowiedź

0 głosów
odpowiedź 21 sierpnia 2018 przez MsMaciek123 Pasjonat (24,760 p.)
Tylko raz wykonujesz void Input
komentarz 21 sierpnia 2018 przez belisima Nowicjusz (120 p.)

Ale gra() jest w mainie:

#include <iostream>
#include "headers.h"

using namespace std;



int main()
{

    menu();

    while(player_smierc)
    {
        gra();
    }

    return 0;

 

komentarz 21 sierpnia 2018 przez Patryk Krajewski Nałogowiec (26,170 p.)
while(player_smierc)
    {
        gra();
    }

Podczas gdy gracz nie żyje to wywołaj funkcję graj. Powinno być na odwrót: "while(!player_smierc)". Po za tym nie powinno być wywołania gra(); w funkcji input. Już to robisz w innym miejscu

komentarz 21 sierpnia 2018 przez belisima Nowicjusz (120 p.)
gra() dziala bo player_smierc mam na false
komentarz 21 sierpnia 2018 przez Patryk Krajewski Nałogowiec (26,170 p.)
gra() się wywołuję w funkcji klasa(), a nie w tej pętli. while(true) - Nieskończona pętla. while(false) - Pętla, która ani razu się nie wykona. W twoim przypadku dzieję się te drugie.
1
komentarz 21 sierpnia 2018 przez belisima Nowicjusz (120 p.)
Dziekuję. Na razie raczkuję w C++.

Podobne pytania

0 głosów
2 odpowiedzi 249 wizyt
pytanie zadane 26 lutego 2019 w C i C++ przez de1vee Nowicjusz (220 p.)
0 głosów
2 odpowiedzi 1,773 wizyt
pytanie zadane 4 października 2016 w C i C++ przez Tymek Nowicjusz (160 p.)
–1 głos
1 odpowiedź 1,708 wizyt
pytanie zadane 24 października 2018 w C i C++ przez Paweł123 Nałogowiec (33,500 p.)

92,624 zapytań

141,482 odpowiedzi

319,822 komentarzy

62,005 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!

...