2017-03-11 8 views
0

ボール(ピクチャボックス)が衝突したときにピクチャボックスを削除する必要があるC#windowsフォームでレンガブレークゲームを作成しています。 私は隠しを試み、削除コントロールを処分し、それをヌルと同じにすることさえできますが、それらはすべて隠して、完全に消えてしまっていません.....まだ衝突があることを意味します..... ここに私のコードです:C#オブジェクトを完全に削除する(衝突なし)

using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Linq; 
    using System.Text; 
    using System.Windows.Forms; 

    namespace WindowsFormsApplication20 
    { 
    public partial class Form1 : Form 
    { 
    public int spx =10; 
    public int spy = 10; 
    public Form1() 
    { 
     InitializeComponent(); 
     timer1.Enabled = true; 
     Cursor.Hide(); 
     this.FormBorderStyle = FormBorderStyle.None; 
     this.TopMost = true; 
     this.Bounds = Screen.PrimaryScreen.Bounds; 
     paddle.Top = background.Bottom - (background.Bottom/10); 
     if(paddle.Left > background.Left) 
     { 
      paddle.Left += 0; 
     } 

    } 
    private void Form1_ControlRemoved(object sender, ControlEventArgs e) 
    { 

    } 
    private void timer1_Tick(object sender, EventArgs e) 
    { 
     ball.Left += spx; 
     ball.Top += spy; 
     paddle.Left = Cursor.Position.X - (paddle.Left/Width); 
     if(ball.Left <= background.Left) 
     { 
      spx = -spx; 
     } 
     if (ball.Right >= background.Right) 
     { 
      spx = -spx; 
     } 
     if (ball.Top <= background.Top) 
     { 
      spy = -spy; 
     } 
     if (ball.Bottom >= background.Bottom) 
     { 
      spy = -spy; 
     } 


     if (paddle.Top <= ball.Bottom && paddle.Top >= ball.Top && ball.Left >= paddle.Left && ball.Right <= paddle.Right) 
     { 
      spy = -spy; 
     } 
     if (pictureBox.Top <= ball.Bottom && pictureBox.Bottom >= ball.Top && ball.Left <= pictureBox.Right && ball.Right >= pictureBox.Left) 
     { 
      spy = -spy; 
      background.Controls.Remove(pictureBox); 
      pictureBox = null; 
     } 
    } 

    private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Escape) 
     { 
      this.Close(); 
     } 
    } 


} 
} 
+0

はあなたにもそれように、その位置を移動しようとしたことがあり:あなたはそれを隠すためにpictureBoxVisibleプロパティを使用したい場合は、表示されていない場合

、その後、あなたはそれを無視したものif条件を変更する必要がありますもはやフォームにはありませんか? –

答えて

0

衝突をチェックするコードはハードコードされており、pictureBoxが表示されます。それを見えなくすることは変わらない。

if (pictureBox.Visible && (pictureBox.Top <= ball.Bottom && pictureBox.Bottom >= ball.Top && ball.Left <= pictureBox.Right && ball.Right >= pictureBox.Left)) 
    { 
     spy = -spy; 
     pictureBox.Visible = false; 
    } 
関連する問題