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; } }

. 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
Rispondi quotando
), @Vinciokaboom in futuro evita, non è molto professionale e può dare fastidio...
