嗨,大家好,今天是視窗程式設計第十七天的影片教學,在過去的影片教學當中,已經完成大部分遊戲的功能,今天將要針對這份遊戲專案來進行優化。
首先是關於物體移動速度的部分,除了左右控制賽車移動,我們也可以透過前後鍵來調整物體移動的速度,使車子的前進具有變化,這裡使用的方式如下:
int speed = 15 // 物體移動的速度
int car_state = 0; // 還沒撞到障礙物
private void Form1_KeyDown(object sender, KeyEventArgs e) // 控制車子移動
{
if(car_state == 0) // 如果還沒撞到障礙物
{
if(e.KeyCode == Keys.Right) { pictureBox_sportcar.Left += 10; }
if (e.KeyCode == Keys.Left) { pictureBox_sportcar.Left -= 10; }
// 關於速度的控制
if (e.KeyCode == Keys.Up) { speed += 5; } // speed = speed + 5,往下移動速度變快
if (e.KeyCode == Keys.Down) { speed -= 5; } // speed = speed - 5,降低移動速度
}
}
private void timer1_Tick(object sender, EventArgs e)
{
if (speed < 15) speed = 15; // 如果速度低於15,則維持15
// 虛線的移動
foreach (Control x in this.Controls)
{
if(x.Tag == "line")
{
if (x.Top > this.Height) // 當低於 window form 的底部
x.Top = -x.Height;
else
x.Top += speed; // 以 speed 速度移動
}
}
// 錢幣,障礙物移動
foreach (Control y in this.Controls)
{
if (y.Tag == "money" || y.Tag == "rock")
{
if (y.Top > this.Height) // 當低於 window form 的底部
{
Random r = new Random(); // 重新生成,Random物件
y.Top = -y.Height;
y.Left = r.Next(30, 410);
}
else
y.Top += speed; // 以 speed 速度移動
}
}
程式碼當中的 if (speed < 15) speed = 15; 主要是防止 speed 出現負數或0,使物件移動產生反方向移動或是停止。
影片當中還提到 function 這個字,在這邊可以先簡單想成 function 是包裝程式碼用,因此我可以將上述的程式碼包裝成一個名為 "moveobject" 的 function,在需要的時候呼叫他,就可以使用包裝在內的程式碼,以減少因重複而產生相同程式碼的情形。在此,我們可以將上述程式碼放入 timer_Tick即可。
此外,我們還可以為專案放入特定 icon,這邊使用ZAMZAR(https://www.zamzar.com/convert/png-to-ico/)來做為轉換,在 form 屬性視窗把 icon 改成下載好的 .ico 檔,執行時即可看到效果。
最後,若要在其他沒有安裝 Visual Studio 的電腦運作的話,在 Debug 下拉選單內選擇 Release,接著點擊建置 > 建置方案,就可以在 Release 資料夾內看到執行檔(.exe)了!而音效也要複製到Release 資料夾內。
以上就是今天的教學,在這邊要先把馬路三寶的遊戲告一個段落,也可以試試其他的玩法或規則喔!
icon素材來源:flaticon(https://www.flaticon.com/)
轉檔網址:ZAMZAR(https://www.zamzar.com/convert/png-to-ico/)