Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z char

Ostatnio zmodyfikowano 2011-10-23 15:23
Autor Wiadomość
marcin107
Temat założony przez niniejszego użytkownika
Problem z char
» 2011-10-23 13:58:33
Witam mam problem z składnią, konkretnie kompilator ostrzega mnie przed tym że char jest za krótki.
objaśnienia np: zmienna mgwklvl odpowiada za poziom umiejętności których jest 3.

C/C++
int mgwklvl = 0;
int mgstrlvl = 0;
int buflvl = 0;
int ultilvl = 0;
char spell;

void spelluse()
{
    using namespace std;
   
    if( spell < 1 )
    {
        cout << "Nie opanowales jeszcze tej umiejentnosci\n";
        Sleep( 2000 );
        przebieggry();
    }
   
    if( manaja >= spellcost )
    {
        switch( wybor )
        {
        case 2: { obrazenia0(); break; }
        case 3: { obrazenia2(); break; }
        case 4: { buf(); break; }
        case 5: { ulti(); break; }
        }
    }
}

void menuataku()
{
    using namespace std;
   
    cout << "1 - Atak fizyczny\n";
    cout << "2 - Slaby atak magiczny(30 many)\n";
    cout << "3 - Mocny atak magiczny (koszt 50 many)\n";
    cout << "4 - Buf (+" << bufheal << " hp (koszt 60 many))\n";
    cout << "5 - Ultimate (koszt 100 many)(200dmg + obrazenia magiczne)\n\n";
    cin >> wybor;
   
    switch( wybor )
    {
    case 1:
        {
            obrazenia1();
            break;
        }
    case 2:
        {
            spell = 'mgwklvl';
            spellcost = 30;
            spelluse();
            break;
        }
    case 3:
        {
            spell = 'mgstrlvl';
            spellcost = 50;
            spelluse();
            break;
        }
    case 4:
        {
            spell = 'buflvl';
            spellcost = 60;
            spelluse();
            break;
        }
    case 5:
        {
            spell = 'ultilvl';
            spellcost = 100;
            spelluse();
            break;
        }
        default:
        {
            cout << "Nie ma takiej opcji\n";
            Sleep( 2000 );
            przebieggry();
        }
    }
    runda++;
}

Czy można jakoś zastąpić tego char ? Używając zmiennej string nie można użyć operatora matematycznego do warunku, a określając char zmienna[x] wyskakuje błąd w warunku.

Proszę o pomoc.
P-42560
m4tx
» 2011-10-23 14:15:10
C/C++
char spell;
//[...]
spell = 'mgwklvl';
//[...]
if( spell < 1 )

Tu nie ma w ogóle żadnej logiki. Przypisujesz ciąg znaków do zmiennej, która może przechować tylko 1 znak, a potem sprawdzasz, czy ta zmienna ma wartość poniżej 1? Yyy... LOL?
P-42561
marcin107
Temat założony przez niniejszego użytkownika
» 2011-10-23 14:30:26
Chodzi mi raczej o to że przypisuje zmiennej char nazwe innej zmiennej która ma wartość
int mgwklvl = 0;
char spell;
spell = 'mgwklvl';
Chodzi tu jakby o to że do chara jest przypisywana za każdym razem nazwa zmiennej z switch(wybor) która jest wywoływana w warunku.

Czyli jeżeli if( spell < 1 )
a spell ze switch(wybor) = 'mgwklvl';
to if( mgwklvl < 1 )
P-42564
m4tx
» 2011-10-23 14:33:07
Czyli jeżeli if( spell < 1 )
a spell ze switch(wybor) = 'mgwklvl';
to if( mgwklvl < 1 )

No cóż... Niestety tak nie jest :P Możesz natomiast usunąć apostrofy i będzie działać, tylko że wtedy jak zmienisz wartość zmiennej mgwklvl, to zmienna spell nie zaaktualizuje się.
P-42565
marcin107
Temat założony przez niniejszego użytkownika
» 2011-10-23 15:23:17
Wartość zmiennej może zmienić się po pokonaniu przeciwnika ale nie w trakcie walki, czy aktualizacja będzie, dzięki za pomoc.
P-42569
« 1 »
  Strona 1 z 1