看板 C_Sharp 關於我們 聯絡資訊
設定一個隨時間改變位置的球 碰到方塊時會改變方向 碰到牆壁時會改變方向 方塊被碰到後會消失 之前我的作法 把一個磚塊命名為brick1 把球命名為picball 然後是程式碼 if ((brick1.Visible) && (Rectangle.Intersect(picBall.Bounds, brick1.Bounds) != Rectangle.Empty)) { vy = -vy; brick1.Visible = false; //藉由隱藏brick2達成"消掉"的效果 } 當球和磚塊在畫面上接觸後 球的Y方向改變 磚塊變為隱藏 沒啥問題 問題在之後 我用for迴圈做了很多磚塊 int row=3; int col=10; int r ; int c ; bricks = new PictureBox[row, col]; for ( r=0;r < row; r++) { for ( c = 0; c < col; c++) { bricks[r, c] = new PictureBox(); bricks[r, c].Width = w; bricks[r, c].Height = h; bricks[r, c].Image = pictureBox1.Image; bricks[r, c].Left = c * w; bricks[r, c].Top = r * h; this.Controls.Add(bricks[r, c]); } } 這樣就跳出很多個方塊來了 可是在消磚塊這個地方出了問題 我不知道球要去和誰"碰"? 如果intersect的對象是bricks[2,3]這樣 球只會和固定的磚塊產生反應 而且磚塊只有消失一瞬間 如果intersect的對象是bricks[r-1,c-1]這樣 球同樣也只會和固定的磚塊(最右下角)產生反應 而且也只是消去一瞬間而已 請問這種狀況要怎麼處理? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.77.67
Beramode:當球移動的位置上有不是隱藏磚塊時 不執行移動 03/14 08:22
Beramode:執行消磚塊的動作 因為有先判定隱藏,之後就不會再撞到 03/14 08:23
Beramode:相同的磚塊,等於永久消除 03/14 08:23
Beramode:感覺寫成由磚塊觸發的事件會比較好 03/14 08:25
scythemind:發現羊路克 03/09 12:33