2017-12-05 14 views
-1
void walka(Postac p, Przeciwnik e, int walkaa) 
{ 
    if (p.szybkosc < 0) 
    { 
     p.szybkosc = 0; 
    } 
walka: 
    walkaa = p.szybkosc - e.szybkosc; 
    if (walkaa > 0) 
    { 
     do 
     { 
      cout << "Zadajesz " << p.sila << " obrażeń." << endl << endl; 
      e.zycie -= p.sila; 
      cout << "Życie: " << p.zycie << " Życie przeciwnika: " << e.zycie << endl << endl; 
      if (e.zycie <= 0) 
      { 
       cout << "Wygrałeś!" << endl; 
       goto koniecwalki; 
      } 
      walkaa -= e.szybkosc; 
     } while (walkaa > 0); 
     goto walka; 
    } 
    else 
    { 
     do 
     { 
      cout << "Otrzymujesz " << e.sila << " obrażeń." << endl << endl; 
      p.zycie -= e.sila; 
      cout << "Życie: " << p.zycie << " Życie przeciwnika: " << e.zycie << endl << endl; 
      if (p.zycie <= 0) 
      { 
       cout << "Zostałeś pokonany." << endl; 
       goto koniecwalki2; 
      } 
      walkaa += p.szybkosc; 
     } while (walkaa < 0); 
    } 
    goto walka; 
koniecwalki: 
    cout << "Przegrana" << endl; 
koniecwalki2: 

} 

1> Others.cpp(202):エラーC2059:構文エラー: '}'エラーC2059:構文エラー: '}' C++

第202行はこれの終わりに最後の中括弧で関数。 なぜこのエラーが出るのか分かりません。私はそれを数回前に持っていましたが、たびにそれを取り除かなければならなかったランダムな追加のブラケットでした。

+0

これらのgotoジャンプを使用する具体的な理由はありますか? – Ron

+0

また、完全なエラーメッセージをお知らせください。 – Immac

+3

ヒント:常に英語でプログラムしてください。別のヒント:C++でgotoを使わないでください。 –

答えて

4

構文エラーは、あなたがCの宣言では文ではありませんしながら、それはまた、ステートメントC++宣言で標識することができるの文(ありさであることをラベルの後

koniecwalki2: ; 
      ^^^ 
} 

をヌルステートメントを使用しなければならないことを意味)。

gotoステートメントを使用することは悪い考えです。そのため、コードの読み取りと変更が困難になります。

+0

'goto'ステートメントは、コードをデバッグしにくくする可能性があり、セキュリティ上の問題が発生する可能性があります。 – Immac

+0

@ImmacあなたはIBMで働いていなかったようです。彼らは、gotoステートメントの使用に悪影響がないことを非常に迅速に説明します。 –