2017-03-11 1 views
0

공 (그림 상자)이 충돌 할 때 그림 상자를 제거해야하는 C# Windows 형식의 벽돌 깨기 게임을 만들고 있습니다 ........ 숨기기를 시도하고 컨트롤을 삭제하고 심지어 null과 같게 만들었지 만 모두 숨기고 완전히 사라진 것은 아닙니다. 아직 충돌이 있음을 의미합니다 ..... 여기 내 코드는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; 
    } 
관련 문제