2012-05-06 1 views
1

나는 VC++로 간단한 ball Bouncing 프로그램을 만들었다.
이 프로그램의 목표는 공이 마름모로 튀어 나와야한다는 것입니다. 그것은 마름모꼴에서 벗어날 수 없다.
성공적으로 실행되는 것으로 보이지만 왼쪽 및 오른쪽 모서리에 붙어 있습니다.
이 문제를 해결하는 방법? 공이 좌우 코너로 갈 때 equlation의 조건이 중복되었다고 생각합니다 ...
이 문제를 해결하기위한 다른 알고리즘을 제안 해 주시겠습니까?
나는이 문제를 while(!isInside(getNextPos(circle))) { updateDirectionVector(circle); }
과 같이 만들려고 시도했지만 임의 값이 매번 변경 되었기 때문에 이렇게 할 수 없습니다. (반복 타이머 사용)
이것은이 프로그램의 알고리즘으로 모서리를 제외하고는 작동합니다.
C++ Ball은 마름모로 튀어 오름

up: 
while(1) goDownSideCircle; 
if(StuckOnDownSide) goto down; 
down: 
while(1) goUpSideCircle; 
if(StuckOnUpSide) goto up; 
+0

코드가 실제로 들여 쓰여졌습니까? 그렇다면, 네가 운이 없다는 것이 두려워 ... 아니면 여기에 붙여 넣기 때문인가? – Aamir

+0

여기에 새 Linux 커널을 구현하지 않으시겠습니까? 그런데 goto 키워드는 가치가 떨어집니다. 가능한 한 많이 피하십시오. – sarepta

+0

코드를 읽고 이해하려는 사람들이 쉽게 만들려면 코드를 수평으로 스크롤 할 필요가 없도록 포맷해야합니다. 또한 모든 수치 상수를 적절한 설명 적 이름의 상수로 바꾸고 계산 결과를 적절하게 명명 된 변수로 결합하십시오. – irobot

답변

0

문제가 해결되었습니다.
해결 된 알고리즘 :

RandValue; 
    while(1){ 
    DrawCircle(Center_X,Center_Y); 
    Center_X+=Rand_X; Center_Y+=Rand_Y; 
    check=false; 
    Check_X=Center_X; Check_Y=Center_Y; 
    while(BorderCheck){ 
    RandValue; 
    Check_X+=Rand_X; Check_Y+=Rand_Y; 
    check=true;} 
    if(check){ 
    Center_X=Check_X; Center_Y=Check_Y;}}