2017-12-05 3 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): Fehler C2059: Syntaxfehler: '}'error C2059: Syntaxfehler: '}' C++

202. Zeile ist die letzte geschweifte Klammer am Ende dieses Funktion. Ich weiß nicht, warum ich diesen Fehler jetzt bekomme. Ich hatte es früher ein paar Mal, aber jedes Mal war es nur eine zufällige zusätzliche Klammer, die ich entfernen musste.

+0

Gibt es einen bestimmten Grund für die Verwendung dieser 'Goto' Sprünge? – Ron

+0

Könnten Sie uns bitte auch die vollständige Fehlermeldung geben. – Immac

+3

Ein Hinweis: Programm immer auf Englisch programmieren. Ein weiterer Hinweis: Verwenden Sie nicht in C++. –

Antwort

4

Die Syntaxfehler bedeutet, dass Sie eine Null-Anweisung nach dem Label

koniecwalki2: ; 
      ^^^ 
} 

verwenden haben, dass es eine Anweisung, die (in C markiert werden können ++ Erklärungen auch Aussagen sind, während in der C-Deklarationen nicht Aussagen).

Berücksichtigen Sie, dass es eine schlechte Idee ist, goto Anweisungen zu verwenden. Das macht den Code schwierig zu lesen und zu ändern.

+0

Ganz zu schweigen von 'Goto'-Anweisungen, die den Code schwieriger zu debuggen machen und mögliche Sicherheitsprobleme aufwerfen. – Immac

+0

@Immac Es scheint, dass Sie nicht bei IBM gearbeitet haben. Sie würden sehr schnell erklären, dass es nichts Schlechtes an der Verwendung der goto-Anweisung gibt :) –

Verwandte Themen