iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0
影片教學

視窗程式設計系列 第 10

【Day10】青蛙成功過街了!

  • 分享至 

  • xImage
  •  

嗨,大家好,今天是視窗程式設計第十天的影片教學,前幾次教學已將青蛙過街的基本功能撰寫完成,今天要針對遊戲專案新增一些功能處理,使青蛙過街的遊戲能夠更為完整。

首先,為了使遊戲有持續性,我們需要讓車子的移動呈現不斷循環,也就是當車子開出邊界後,能夠從另一邊再次出現。在此,我們透過 Windows form 和車子圖片本身的 width (寬度)屬性搭配車子圖片的 Left 水平位置資訊,進行處理,示意圖和程式碼如下:

https://ithelp.ithome.com.tw/upload/images/20220925/20152427lanO4FDlPu.png

private void timer1_Tick(object sender, EventArgs e)
{
    // 如果圖片的水平位置超過 0 - 圖片寬度時,將車子水平位置重新設為另一邊
    if(pictureBox_car.Left <= 0 - pictureBox_car.Width)
        pictureBox_car.Left = this.Width;
}

再來要處理的是過關的判斷,在此需要了解青蛙的垂直位置資訊,以了解當青蛙圖片 Top 為多少時代表成功到對街並且不會與車子碰到。我採用** label **顯示位子資訊的方式,方便我了解青蛙在 form 當中的位置資訊,顯示語法和處理程式碼如下:

// 在 keypress function 做處理,要在 timer_Tick 處理也可以,其中"\n"為換行符號
label1.Text = "青蛙的水平位置:" + pictureBox_frog.Left.ToString() + "\n" + "青蛙的垂直位置:" + pictureBox_frog.Top.ToString();

// 得到位置資訊後做的處理
bool game_state = false;  // false 為沒碰撞到 or 還沒過關

if(pictureBox_frog.Top <= 235)
{
    label_game_state.Visible = true;
    label_game_state.Text = "恭喜過關!";
    timer1.Stop(); // 車子不移動
    game_state = true; // 無法透過鍵盤按鍵使青蛙移動
}

最後,來界定青蛙的水平移動距離,和汽車處理情形類似,處理方法如下:

// 左邊界處理
if (pictureBox_frog.Left <= 0)
    pictureBox_frog.Left = 0;

// 右邊界處理
if (pictureBox_frog.Left >= this.Width - pictureBox_frog.Width)
    pictureBox_frog.Left = this.Width - pictureBox_frog.Width;

以上是今天的教學,同時完成了青蛙過街的遊戲專案!

icon素材來源:flaticon(https://www.flaticon.com/)
簡報製作及素材資源:canva(https://www.canva.com/)

Yes


上一篇
【Day9】青蛙過街遊戲,與車子A到的處理
下一篇
【Day11】馬路三寶!賽車遊戲場景配置
系列文
視窗程式設計30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言