[問題] 打磚塊遊戲

看板C_Sharp (C#)作者 (luke)時間12年前 (2013/03/14 01:37), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
設定一個隨時間改變位置的球 碰到方塊時會改變方向 碰到牆壁時會改變方向 方塊被碰到後會消失 之前我的作法 把一個磚塊命名為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

03/14 08:22, , 1F
當球移動的位置上有不是隱藏磚塊時 不執行移動
03/14 08:22, 1F

03/14 08:23, , 2F
執行消磚塊的動作 因為有先判定隱藏,之後就不會再撞到
03/14 08:23, 2F

03/14 08:23, , 3F
相同的磚塊,等於永久消除
03/14 08:23, 3F

03/14 08:25, , 4F
感覺寫成由磚塊觸發的事件會比較好
03/14 08:25, 4F

03/09 12:33, , 5F
發現羊路克
03/09 12:33, 5F
文章代碼(AID): #1HGBbAM7 (C_Sharp)
文章代碼(AID): #1HGBbAM7 (C_Sharp)