嗨,大家好,今天是視窗程式設計第二十一天的影片教學,目前我們成功完成:球的邊界反彈處理、透過 array 產生磚塊,以及球與磚塊碰撞的處理等。今天要來完成這次的專案實作,同時學習滑鼠功能的使用。
由於新增了顯示分數和生命值的區域,因此新增兩個變數,而連續宣告變數可以透過 , 來區分,減少行數:
int score = 0, life = 3; // 前者為打到磚塊的數量,後方為生命值
而當球碰到底部和板子的處理不同,前者為減少生命值,並使球重新回到板子上方,移動方向也初始化;後者為改變垂直方向即可,因為通常都是球由上往下撞擊板子:
// hit the button of form
if (pictureBox_ball.Top + pictureBox_ball.Height >= this.Height)
{
if(life == 1){
pictureBox_love1.Visible = false;
label_game.Visible = true;
label_game.Text = "Game Over";
timer1.Stop();
}
else if(life == 2){
life--; // num of life minus 1
pictureBox_love2.Visible = false;
// initial the position of ball
pictureBox_ball.Top = 500; pictureBox_ball.Left = pictureBox_board.Left;
dx = 20; dy = 20;
}
else if(life == 3){
life--; // num of life minus 1
pictureBox_love3.Visible = false;
// initial the position of ball
pictureBox_ball.Top = 500; pictureBox_ball.Left = pictureBox_board.Left;
dx = 20; dy = 20;
}
}
// ball 反彈board
if (pictureBox_ball.Bounds.IntersectsWith(pictureBox_board.Bounds))
{
dy = -dy;
sp2.Play(); // 撞擊板子音效
}
最後,關於滑鼠功能的使用,提供非常多的選擇可以使用:
這次採用 MouseMove 實作,程式碼如下:
滑鼠位置資訊在 e,因此透過 e.X / e.Y 得知滑鼠位置並使用
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
pictureBox_board.Left = e.X; // 板子的水平位置和滑鼠游標相同
}
如果連垂直位置也相同,那就是可以到處移動了呢!
以上就是今天的教學,打磚塊的遊戲也要在這先告一個段落了,感謝大家觀看。
icon素材:flaticon(https://www.flaticon.com/)