2017-04-05 16 views
1

초심자, 비난하지 마세요. :) 저는 C#에서 간단한 "핑퐁"게임을 코딩하고 있습니다. 제 두 번째 주이기 때문에 조금 연습해야합니다. 이 언어를 배우는 것. "picsSchlägerRechts"를 위아래로 움직이게하기 위해 지금 keyevents를 만들려고했지만 잘 작동했지만 "패널"에서 벗어나지 못하게하는 "제한"을 만들 수는 없습니다. 어떤 아이디어?(C#) 움직이는 객체에 대한 제한을 만들 수 없습니다.

private static bool conditionUP ; 
    private static bool conditionDown ; 


    private void frmPingPong_KeyDown(object sender, KeyEventArgs e) 
    { 

     { 
      if (!(picSchlägerRechts.Location.Y == 0 && picSchlägerRechts.Location.Y == 249)) { 
       conditionDown = true; 
       conditionUP = true; 
      } 

      if (e.KeyCode == Keys.W && conditionUP == true) 
      { 
       picSchlägerRechts.Location = new Point(picSchlägerRechts.Location.X, picSchlägerRechts.Location.Y - ms); 


        if (picSchlägerRechts.Location.Y == 0) 
        { 
         conditionUP = false; 

        } 


      } 
      if(e.KeyCode == Keys.S && conditionDown == true) 
      { 
       picSchlägerRechts.Location = new Point(picSchlägerRechts.Location.X, picSchlägerRechts.Location.Y + ms); 

       if (picSchlägerRechts.Location.Y == 298) 
       { 
        conditionDown = false; 


       } 
      } 
+0

보다 크거나 작은 가지 않는 것을 확인하기 위해 검사 있도록 이런 식으로 뭔가를 시도 할 수? == 사용하는 대신에 '<= 0' and '> = 249' –

+0

을 사용하여 죄송합니다. 포함시키지 않으 셨습니다. movementspeed에 대한 내 변수 일뿐입니다. –

+0

movementSpeed가 0 이상으로 뛰는 변수로 설정되면'== 0'의 조건에 결코 부딪치지 않고 대신'<= 0'을 사용하고 위치를 빼면 이동 속도가 0보다 작은 논리를 넣을 수도 있습니다 대신 0으로 설정하십시오. –

답변

1

그것은 당신의 Y가 최대/최소 Y 'ms`은 무엇

private void frmPingPong_KeyDown(object sender, KeyEventArgs e) 
{ 
    var maxY = 298; 
    var minY = 0; 

    if (e.KeyCode == Keys.W) 
    { 
     var newY = picSchlägerRechts.Location.Y - ms; 

     if (newY < minY) 
     { 
      newY = minY; 
     } 
     picSchlägerRechts.Location = new Point(picSchlägerRechts.Location.X, newY); 
    } 
    else if (e.KeyCode == Keys.S) 
    { 
     var newY = picSchlägerRechts.Location.Y + ms; 

     if (newY > maxY) 
     { 
      newY = maxY; 
     } 
     picSchlägerRechts.Location = new Point(picSchlägerRechts.Location.X, newY); 
    } 
} 
+0

큰 도움을 주신 덕분에 완벽하게 일했습니다! –

+0

이 정확한 값을 확인하는 대신 최소 및 최대 값보다 크거나 작은 새 위치 값의 유스 케이스를 확인하면서 왜이 기능이 작동하는지 알기 바랍니다. –

+0

2 ~ 3 회 다시 읽은 후 코드를 완벽하게 이해했습니다. –