2011-12-12 5 views
1

45도 각도로 창에서 이미지가 튀는 C#으로 Windows Form 프로그램을 만들고 있습니다. 도움이 필요한 부분은 프로그램을 만들어야 만 사용자가 이미지가 튀는 각도를 0에서 90도 사이로 조정할 수 있어야한다는 것입니다. 나는 이것을 할 수있는 간단한 방법을 생각할 수 없으며 정말로 도움이 필요합니다.C# 튀는 공 각도 변경

이것은 지금까지 가지고있는 타이머 코드입니다. intSideposition은 이미지의 왼쪽 값입니다. intTopPosition은 이미지의 최상위 값입니다. intLeftSpeed은 이미지의 수평 속도입니다. intTopSpeed은 이미지의 수직 속도입니다. 817 및 380은 이미지가 튀어 오를 창의 테두리입니다. 현재 이미지는 45도 각도로 바운스됩니다.

//Moves the label by a factor of whatever intLeftSpeed is 
intSidePosition = intSidePosition + intLeftSpeed; 
intTopPosition = intTopPosition + intTopSpeed; 
this.lblSprite.Left = intSidePosition; 
this.lblSprite.Top = intTopPosition; 

//Checks if the sprite has hit the boundaries of the window, causing it to bounce 
if (this.lblSprite.Left <= 0) 
{ 
    intLeftSpeed = intLeftSpeed * -1; 
} 
else if (this.lblSprite.Left >= 817) 
{ 
    intLeftSpeed = intLeftSpeed * -1; 
} 
else if (this.lblSprite.Top >= 380) 
{ 
    intTopSpeed = intTopSpeed * -1; 
} 
else if (this.lblSprite.Top <= 0) 
{ 
    intTopSpeed = intTopSpeed * -1; 
} 
lblAngle.Text = intAngle.ToString(); 
+2

일부 코드는 항상 도움이됩니다. – vdbuilder

+0

숙제 인 경우이를 태그하십시오. – Aaron

+0

그걸 닫지 마라, 그때 내가 컴퓨터 그래픽을 배웠을 때 내가 제일 좋아하는 것 중 하나 였어. –

답변

1

당신은 공을 어떤 각도를하기 위해 여기에 삼각 함수를 사용해야합니다.

또한 모든 변수는 double이되어야합니다. 속도와 위치 변수 모두!

는 내가 아닌 라디안 각도에있을 것입니다 여기에 당신이 그 각도를 말하지 않을 것이다

double speedX = Math.Cos(angle); 
double speedY = Mach.Sin(angle); 

같은 뭔가를 초기화합니다. Oooops, 방금 했어 :)

+0

좋아요. 다니엘 좀 더 도움이 필요해. 내 프로그램에서 어디에 넣을까요? 나는 if 문에 넣으려고했는데, 그 결과는 이미지가 튀지 않을 것입니다. 각도도 라디안 단위입니다. ( – user1033065

+0

이전 변수가 1로 설정된 위치에 초기화에 넣어야합니다. 라디안에 대한 각도는 다음과 같습니다. –

0

intLeftSpeed ​​및 intTopSpeed를 원하는 각도로 만들거나 적어도 대략적으로 만들어야합니다. 현재는 항상 평등하므로 항상 45도 각도를 생성합니다.