我在創建乒乓遊戲。如果按下移動的按鍵,我設法同時移動兩行(圖片框)。問題在於,如果按下一個玩家的控制權,然後其他玩家只需點擊(1次)就會打斷其他玩家的移動,以至於他需要再次按下按鍵。我試圖用keypress
和Keyboard.IsKeyDown
修復它,但沒有運氣。C#按鍵打破對象的移動
這裏是我的代碼:
public void Form1_KeyDown(object sender, KeyEventArgs e)
{
Keys up1 = (Keys)Enum.Parse(typeof(Keys), form1.p5_text_kontrole_gor1.Text , true);
Keys down1 = (Keys)Enum.Parse(typeof(Keys), form1.p5_text_kontrole_dol1.Text , true);
Keys up2 = (Keys)Enum.Parse(typeof(Keys), form1.p5_text_kontrole_gor2.Text, true);
Keys down2 = (Keys)Enum.Parse(typeof(Keys), form1.p5_text_kontrole_dol2.Text, true);
if (e.KeyCode == Keys.Escape)
Application.Exit();
if(e.KeyCode == up1)
{
goup1 = true;
}
if (e.KeyCode == down1)
{
godown1 = true;
}
if (e.KeyCode == up2)
{
goup2 = true;
}
if (e.KeyCode == down2)
{
godown2 = true;
}
igra1();
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
Keys up1 = (Keys)Enum.Parse(typeof(Keys), form1.p5_text_kontrole_gor1.Text, true);
Keys down1 = (Keys)Enum.Parse(typeof(Keys), form1.p5_text_kontrole_dol1.Text, true);
Keys up2 = (Keys)Enum.Parse(typeof(Keys), form1.p5_text_kontrole_gor2.Text, true);
Keys down2 = (Keys)Enum.Parse(typeof(Keys), form1.p5_text_kontrole_dol2.Text, true);
if (e.KeyCode == up1)
{
goup1 = false;
}
if (e.KeyCode == down1)
{
godown1 = false;
}
if (e.KeyCode == up2)
{
goup2 = false;
}
if (e.KeyCode == down2)
{
godown2 = false;
}
igra1();
}
public void igra1()
{
if (goup1)
{
if (form1.p6_ploscek1.Top > form1.panel6_pongIgra.Top)
form1.p6_ploscek1.Top -= 15;
}
if (goup2)
{
if (form1.p6_ploscek2.Top > form1.panel6_pongIgra.Top)
form1.p6_ploscek2.Top -= 15;
}
if (godown1)
{
if (form1.p6_ploscek1.Bottom < form1.panel6_pongIgra.Bottom)
form1.p6_ploscek1.Top += 15;
}
if (godown2)
{
if (form1.p6_ploscek2.Bottom < form1.panel6_pongIgra.Bottom)
form1.p6_ploscek2.Top += 15;
}
}
步驟通過代碼來查明確切問題和/或錯誤或問題發生的位置..這將是我的第一個建議 – MethodMan 2014-12-01 16:44:10
當我單擊時發生錯誤按鈕,但我仍然不明白如果他的變量(goup2/godown2)爲真,它怎麼能打破其他玩家的移動 – 2014-12-01 16:56:19
當你點擊什麼按鈕..你在什麼方式時,你說'點擊按鈕'也是什麼行代碼..再一次你需要步驟通過代碼,但斷點和報告的確切線,它的錯誤.. [Enum.Parse方法](http://msdn.microsoft .com/en-us/library/essfb559.aspx) – MethodMan 2014-12-01 17:00:08