0
그래서이 사각형을 벽에서 튀어 나오려고합니다. 나는 코딩에 익숙하지 만, 왜 이런 일이 일어나는지 이해할 수 없다. 그것은 매우 심하게 튀는 것 같습니다. 히트하는 방향을 완전히 바꿔 논리적으로 바운스하지 않습니다.이 사각형을 벽에서 튀어 나오게하려면 어떻게해야합니까?
가장 힘든 문제는 그것이 한 번만 튀는 것입니다. 한 번 옆으로 튀어 오르고 두 번째 벽을 만나면 심연으로 빠져 나갑니다.
void moveTheBox() {
while (inside == true) {
if ((bigBoxX <= 0) || (bigBoxY <= 0) ||
(bigBoxX >= 600 - bigBoxSize) ||
(bigBoxY >= 600 - bigBoxSize)) {
bigBoxDeltaX = bigBoxDeltaX * -1;
bigBoxDeltaY = bigBoxDeltaY * -1;
while ((bigBoxX >= 0) || (bigBoxY >= 0) ||
(bigBoxX <= 600 - bigBoxSize) ||
(bigBoxY <= 600 - bigBoxSize)) {
bigBoxX = bigBoxX + bigBoxDeltaX;
bigBoxY = bigBoxY + bigBoxDeltaY;
repaint();
pause();
}
} else {
bigBoxX = bigBoxX + bigBoxDeltaX;
bigBoxY = bigBoxY + bigBoxDeltaY;
repaint();
pause();
}
}
}
편집 : 여기
그것을 작성하는 데 사용 코드의 조각이다 나는 당신이 게시 사분 후 알아 냈어. 나는 어색한 튀는 문제와 1 바운스 문제를 수정했다.void moveTheBox() {
int i = 0;
while(i == 0){
if ((bigBoxX <= 0) || (bigBoxX >= 600-bigBoxSize)){
bigBoxDeltaX = bigBoxDeltaX * -1;
while((bigBoxX >= 0) || (bigBoxY >=0) || (bigBoxX <= 600-bigBoxSize) || (bigBoxY <= 600 - bigBoxSize)){
bigBoxX = bigBoxX + bigBoxDeltaX;
bigBoxY = bigBoxY + bigBoxDeltaY;
repaint();
pause();
break;
}
}else if ((bigBoxY <= 0) || (bigBoxY >= 600-bigBoxSize)){
bigBoxDeltaY = bigBoxDeltaY * -1;
while((bigBoxX >= 0) || (bigBoxY >=0) || (bigBoxX <= 600-bigBoxSize) || (bigBoxY <= 600 - bigBoxSize)){
bigBoxX = bigBoxX + bigBoxDeltaX;
bigBoxY = bigBoxY + bigBoxDeltaY;
repaint();
pause();
break;
}
}else{
bigBoxX = bigBoxX + bigBoxDeltaX;
bigBoxY = bigBoxY + bigBoxDeltaY;
repaint();
pause();
}
}
}
를 참조하십시오 난 그냥 어색 바운싱 만 1 바운스의 문제 모두를 해결하는 방법을 발견 :
다음은 최종 제품입니다. –
@ user3326720 그의 대답이 만족 스럽다면 질문에 대한 대답으로 선택하십시오. – diazazar
답변을 찾았습니까? @ user3326720 –