2017-12-05 34 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++

2백2번째 라인이 끝에 마지막 중괄호이고 기능. 왜 지금이 오류가 발생하는지 알 수 없습니다. 나는 그것을 이전에 몇 번씩했지만 매번 제거해야만하는 임의의 추가 브래킷 일 때가있었습니다.

+0

'goto' 점프를 사용해야하는 특별한 이유가 있습니까? – Ron

+0

전체 오류 메시지도 보내 주시겠습니까? – Immac

+3

힌트 : 항상 영어로 프로그램하십시오. 또 다른 힌트 : C++에서 goto를 사용하지 마십시오. –

답변

4

구문 오류가 당신이 C에서 선언 문이없는 동안 선언도 문이다 C++로 (표시 할 수있는 문이다

koniecwalki2: ; 
      ^^^ 
} 

라벨 후 널 문을 사용해야 함을 의미).

goto 문을 사용하는 것은 좋지 않은 생각입니다. 따라서 코드를 읽고 수정할 수 없습니다.

+0

코드를 디버그하기 어렵게 만들고 가능한 보안 문제가 발생할 수있는 goto 문은 말할 것도 없습니다. – Immac

+0

@Immac IBM에서 일하지 않은 것 같습니다. 그들은 goto 문을 사용할 때 아무런 문제가 없다는 것을 매우 빨리 설명합니다. :) –