2017-04-05 8 views
1

初心者ですので、私は第2週目ですので、ちょっと練習するためにC#で簡単な「ピンポン」ゲームをコーディングしています。この言語を学ぶ "picsSchlägerRechts"を上下に動かすためのキーイベントを作成しようとしましたが、うまくいきましたが、パネルから移動しないように "制限"することはできません。何か案は?最大/最小yより(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

'ms'は何ですか? ==の代わりに '<= 0' and '> = 249' –

+0

を使用してください。申し訳ありませんが、これを含めるのを忘れてしまった、それはmovementspeedの変数です。 –

+0

あなたのmovementSpeedが0を超えてジャンプする変数に設定されていれば、 '== 0'の条件に当てはまることはありません。代わりに' <= 0'を使用し、位置から移動速度を引いた値が0代わりに0に設定してください。 –

答えて

1

それはあなたのYがより大きいか小さい行かないことを確認するためにチェックするようにあなたはこのような何かを試みることができる

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回再読いた後で完全に理解しました。 –

関連する問題