iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0
影片教學

視窗程式設計系列 第 21

【Day21】鍵盤壞了怎麼辦?沒關係,透過滑鼠也能移動板子

  • 分享至 

  • xImage
  •  

嗨,大家好,今天是視窗程式設計第二十一天的影片教學,目前我們成功完成:球的邊界反彈處理、透過 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(); // 撞擊板子音效
}

最後,關於滑鼠功能的使用,提供非常多的選擇可以使用:

  • MouseClick 點擊時處理
  • MouseDoubleClick 雙擊時處理
  • MouseDown 滑鼠按下時處理
  • MouseUp 滑鼠放開時處理
  • MouseMove 滑鼠移動時處理
  • MouseEnter 滑鼠進入時處理
  • MouseHover 滑鼠位在上方時處理
  • MouseLeave 滑鼠離開時處理

這次採用 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/)

Yes


上一篇
【Day20】用 Array 建立磚塊
下一篇
【Day22】用二維 Array 建立推箱子地圖
系列文
視窗程式設計30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言