나는 탁구 게임을 만들고있다. 움직임을위한 키를 누르면 두 선 (그림 상자)을 동시에 움직일 수있었습니다. 문제는 한 플레이어에 대한 컨트롤이 눌려지고 다른 플레이어가 한 번 클릭 (1 회)하면 다른 플레이어의 움직임을 깨고 다시 키를 눌러야한다는 것입니다. 나는 keypress
과 Keyboard.IsKeyDown
으로 해결하려했지만 운이 없었습니다. 나는 당신이 당신의 게임 조각 이동하기 위해 그들을 누르고있는 동안 키를 Windows에서 반복 얻을 사실에 의존하고 생각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
클릭하면 오류가 발생합니다. 버튼을 클릭했지만 여전히 이해가 안되는 이유 변수 (goup2/godown2)가 참인 경우 다른 플레이어의 움직임을 어떻게 깨뜨릴 수 있습니까? –
버튼을 클릭 할 때 어떤 방법을 사용하고 있는지도 알 수 있습니다. 또한 코드의 어떤 줄을 클릭하십시오. .. 다시 한 번 코드를 통해 단계를 밟아 브레이크 포인트를보고 정확한 라인에 오류를보고해야합니다. [Enum.Parse Method] (http://msdn.microsoft .com/ko-ko/library/essfb559.aspx) – MethodMan