2015-01-15 4 views
0

내 목표는 그림 상자를 앞뒤로 이동하는 것입니다. 내 문제는이 작업을 수행하는 방법입니다.타이머를 사용하여 PictureBox를 이동하십시오.

int x = enemy.Location.X; 
    int y = enemy.Location.Y; 
    enemy.Location = new Point(x+-1, y); 

이 오프 화면에 PictureBox, 왼쪽으로 이동합니다

나는 다음과 같은 작성했습니다. 왼쪽으로 이동 한 후에는 오른쪽으로 이동하여 앞뒤로 움직 이도록하고 싶습니다.

나는, 내가 시도한 멍청한 놈 :

if (x < 40) 
     enemy.Location = new Point(x - -100, y); 
    else if (x > 400) 
     enemy.Location = new Point(x - 5, y); 

이 실패 증명한다 - 상자 픽셀 (40)

도달에 이동하지 않는 것 당신이 자극 할 수있는 간단한 해결책은 있는가 나를 향하여, 또는 나는 나 자신을 위해 일찍 무덤을 파 냈다?!

다음을 지정해야합니다. 대학 할당 요구 사항에 따라 C#으로 작성하고 있습니다.

건배.

답변

1

왼쪽으로 움직이는 경우 x 위치가 0에 도달하면 방향을 바꾸고 오른쪽으로 이동하십시오.

오른쪽으로 이동하면 화면 너비에서 그림 상자의 너비를 뺀 값을 사용해야합니다.

System.Windows.SystemParameters.PrimaryScreenWidth 

편집 :

또는 더 나은 아직, 양식의 폭을 뺀의 PictureBox의 폭을 사용합니다. 그러면 최대화되지 않으면 여전히 작동합니다.

+0

OK. 나는 이것을 시도했지만 오류가 발생하므로 어딘가에 빠져 있어야합니다. 여기 내 코드가있다. 추신 '이 많은 픽셀을 왼쪽으로 이동> 픽셀 0에 도달하면 오른쪽으로 이동> 픽셀에 도달하는 간단한 방법이 있습니까? 100 그래서 왼쪽으로 움직여서 지정된 루프가 되니? P.S. 감사! int x = enemy.Location.X; int y = 적군. 위치 .Y; enemy.Location = new Point (x + -1, y); if (x == 0) enemy.Location = ActiveForm.Width - enemy.Width; – Strife7

0

왼쪽과 오른쪽으로 이동하기 위해 음수와 양수 값 사이를 전환하는 변수를 설정하십시오. -1을 곱하여 방향을 전환합니다. 그런 다음 해당 변수를 현재 X 값에 다음과 같이 간단하게 추가하면됩니다.

private int direction = -1; // this can be values other than 1 to make it jump farther each move 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     int x = enemy.Location.X + direction; 
     if (x <= 0) 
     { 
      direction = -1 * direction; 
      x = 0; 
     } 
     else if (x >= this.ClientRectangle.Width - enemy.Width) 
     { 
      direction = -1 * direction; 
      x = this.ClientRectangle.Width - enemy.Width; 
     } 
     enemy.Location = new Point(x, enemy.Location.Y); 
    } 
+0

속도를 조정하는 더 나은 옵션이 필요하지만 작동해야합니다. 좌표를 수레로 유지하는 것이 좋습니다. – TaW

관련 문제