Salve, programmo da poco in C++, quindi so pochi elementi di base e vorrei continuare ad usare quelli quali la switch ed il do..
Ora posto, purtroppo non in spoiler dato che non lo trovo, il codice del programma e vorrei sapere dove è l'errore perché, durante la prima battaglia, anche se non si hanno magie, il programma o le utilizza, o fa premere due volte lo stesso tasto per poi fare un'azione di combattimento in automatico o non ricordo cos'altro . Nel caso della terza magia quale quella della scimmia esso funziona bene dato che il nemico muore, ma negli altri due casi va in tilt. Grazie

codice:
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    //generali
    int risposta;
    //scelte
    int sceltainiziale;
    int sceltamagia;
    int sceltabattaglia;
    //statistiche
    int atkmio=50;
    int difmio=50;
    int magiafuoco=0;
    int magiatempo=0;
    int magiascimmia=0;
    int hpmio=1000;
    int mpfuoco=30;
    int mptempo=30;
    int mpscimmia=30;
    //statistiche nemici 1
    int atknemico1=50;
    int difnemico1=30;
    int hpnemico1=150;
        cout<<"Sei il figlio illeggittimo del re, assaggia la vendetta e conquista il trono che ti spetta."<<endl<<endl;
        cout<<" Queste sono le tue statistiche ATK=50; DANNO MAGIA=0; DIF=50; PUNTI MAGIA=30; HP=1000."<<endl<<endl;
        cout<<"Sei davanti al castello di tuo padre, combatti i guerrieri."<<endl<<endl;
        cout<<"Hai due possibilità, cosa vuoi fare? Aumentare il tuo attacco [1], aumentare la tua difesa[2] o imparare una magia[3], cosa scegli?"<<endl<<endl;
        cin>>sceltainiziale;
        switch (sceltainiziale)
        {
               case 1: 
                    cout<<"Hai deciso di aumentare il tuo attacco, hai ricevuto una spada con del fuoco attorno[Shishkebab, attacco + 30!]"<<endl<<endl;
                     atkmio = atkmio+30;
                      mpfuoco = mpfuoco-30;
                      mptempo= mptempo- 30;
                      mpscimmia= mpscimmia - 30;
                     
                     break;
                     
               case 2: 
               cout<<"Hai deciso di aumentare la tua difesa, hai ricevuto uno scudo e un'armatura di maglia[scudo del re, armatura di maglia, difesa +30!]"<<endl<<endl;
               difmio = difmio+30;
               mpfuoco = mpfuoco-30;
               mptempo= mptempo- 30;
               mpscimmia= mpscimmia - 30;
               break;
               
               case 3:
                    cout<<" Hai deciso di imparare una magia, premi un tasto a caso tra 1, 2, 3 e imparerai una magia."<<endl<<endl;
                    cin>>sceltamagia;
                    switch (sceltamagia)
                    {
                           case 1:
                                cout<<"Hai imparato la magia del fuoco che potrai usare in alcune occasioni nella battaglia. [magia+47!]Questa magia ti diminurà gli mp di 3"<<endl<<endl;
                                magiafuoco = magiafuoco+47;
                                mptempo= mptempo- 30;
                                mpscimmia= mpscimmia - 30;
                                break;
                                case 2:
                                     cout<<"Hai imparato la magia del tempo, tu sarai superveloce e i tuoi nemici saranno lentissimi[magia +67]Questa magia ti diminuirà gli mp di 5."<<endl<<endl;
                                      magiatempo = magiatempo+67;
                                      mpfuoco= mpfuoco- 30;
                                      mpscimmia= mpscimmia - 30;
                                      break;
                                      case 3:
                                           cout<<"Hai imparato la magia più potente, complimenti, trasformerai il tuo avversario in una scimmia con hp di 0 e vincerai. La potrai usare contro chi vuoi, una sola volta, tranne contro il boss finale.[magia + 1000!] Questa magia ti diminuirà i tuoi mp a 0."<<endl<<endl;
                                           magiascimmia = magiascimmia+1000; 
                                           mpfuoco= mpfuoco- 30;
                                           mptempo= mptempo - 30; 
                                           }//sceltamagia
                                           }//sceltainiziale
if (hpnemico1<=0)
            {
                       cout<<"Hai ucciso il tuo nemico!"<<endl<<endl;
                       }
                       else
                       {
                                do
    {
    cout<<"I tuoi hp:"<<hpmio<<endl;
    cout<<"I tuoi mpfuoco:"<<mpfuoco<<endl;
    cout<<"I tuoi mptempo:"<<mptempo<<endl;
    cout<<"I tuoi mpscimmia:"<<mpscimmia<<endl;
    cout<<"Hp del nemico"<<hpnemico1<<endl;
    cout<<"Un nemico! Cosa vuoi fare? [1] usa attacco, [2] usa magia fuoco, [3] usa magia tempo, [4] usa magia scimmia, [5] difenditi."<<endl;
   
cin>>sceltabattaglia;
switch (sceltabattaglia)
{
       case 1:
            cout<<"Hai attaccato il primo nemico, i suoi hp scendono!"<<endl<<endl;
            hpnemico1=hpnemico1 - (atkmio-difnemico1);
            cout<<"Ugh!"<<endl;
            cout<<"Ti attacca anche lui, i tuoi hp scendono!"<<endl<<endl;
            hpmio= hpmio- atknemico1;
            if (hpnemico1<=0)
            {cout<<"hai ucciso il nemico!"<<endl<<endl;
            cout<<"COMPLIMENTI, HAI VINTO!"<<endl;
            cout<<"premi [0] ";
            cin>>risposta;}
            else {
            cout<<"Premi [1]"<<endl<<endl;
            cin>>risposta;}
           
            break;
       case 2:
            if (mpfuoco<3)
            {
                  cout<<"Non puoi usarla. Premi [2](non sbagliare tasto)";
                  cin>>risposta;
                  }//chiusura if finiti mp
                  else
                  {cout<<"Hai attaccato il primo nemico con la magia del fuoco"<<endl<<endl;     
            hpnemico1=hpnemico1 - (magiafuoco-difnemico1);
            mpfuoco= mpfuoco - 3;
              if (hpnemico1<=0)
            {cout<<"hai ucciso il nemico!"<<endl<<endl;
            cout<<"COMPLIMENTI, HAI VINTO!"<<endl;
            cout<<"premi [0] ";
            cin>>risposta;}//chiusura if
            else {
            cout<<"Premi [1]"<<endl<<endl;
            cin>>risposta;}//chiusura else 
            break;
            }//chiusura else magia fuoco
       case 3:
               if (mptempo<5)
            {
                  cout<<"Non puoi usarla. Premi [2](non sbagliare tasto)";
                  cin>>risposta;
                  }//chiusura if finiti mp
                  else
                  {cout<<"Hai attaccato il nemico con la magia del tempo!"<<endl<<endl;     
            hpnemico1=hpnemico1 - (magiatempo-difnemico1);
            mptempo= mptempo - 5;
              if (hpnemico1<=0)
            {cout<<"hai ucciso il nemico!"<<endl<<endl;
            cout<<"COMPLIMENTI, HAI VINTO!"<<endl;
            cout<<"premi [0] ";
            cin>>risposta;}//chiusura if
            else {
            cout<<"Premi [1]"<<endl<<endl;
            cin>>risposta;}//chiusura else 
            break;
            }//chiusura else magia tempo
       case 4:
              if (mpscimmia<30)
            {
                  cout<<"Non puoi usarla. Premi [2](non sbagliare tasto)";
                  cin>>risposta;
                  }//chiusura if finiti mp
                  else
                  {cout<<"Hai attaccato il nemico con la magia della scimmia, spero tu l'abbia usata bene!"<<endl<<endl;     
            hpnemico1=hpnemico1 - (magiascimmia-difnemico1);
            mpscimmia= mpscimmia - 30;
              if (hpnemico1<=0)
            {cout<<"Hai ucciso il nemico!"<<endl<<endl;
            cout<<"COMPLIMENTI, HAI VINTO!"<<endl;
            cout<<"premi [0] ";
            cin>>risposta;}//chiusura if
            else {
            cout<<"Premi [1]"<<endl<<endl;
            cin>>risposta;}//chiusura else 
            break;
            }//chiusura else magia scimmia 
       case 5:
            cout<<"Hai decido di difenderti dall'attacco del nemico!";
            hpmio=hpmio - (atknemico1-difmio);
            cout<<" Il nemico ti ha colpito!"<<endl<<endl;
            break;
            }//chiusura switchbattaglia
            }//chiusura do
            while (risposta==1);
                      cout<<"Complimenti, ora si va avanti!"<<endl;     
                system("PAUSE");
return 0;
}
}