PDA

View Full Version : سوال: دستور های keydata &keycode



ali-sezar
چهارشنبه 12 فروردین 1394, 18:01 عصر
سلام دوستان.من دارم برای پروژه بازی 2048 رو مینویسم.البته تازه چند ساعته دارم روش کار میکنم.ولی هر کاری میکنم کلید های کیبرد و نمیخونه.میخئاستم بدونم این دو تا دستور(keydata&keycode)با هم فرقی دارن؟کد هم هست لطف کنین ببینین کجاش اشکال داره.ممنون





public partial class Form1 : Form
{
enum Direction
{
Up,
Down,
Right,
Left
}
Button[,] btns = new Button[4, 4];
Random rnd = new Random();
Random btnrnd = new Random();
Direction direction;
int num;
int xpoint;
int ypoint;


public Form1()
{
InitializeComponent();
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
btns[i, j] = new Button();
btns[i, j].Size = new Size(60, 60);
btns[i, j].Location = new Point(j * 60, i * 60);
btns[i, j].BackColor = Color.Gray;
Controls.Add(btns[i, j]);
}
}
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
btns[i, j].KeyDown += Form1_KeyDown;
}
}
num = rnd.Next(2, 4);
if (num < 3)
num = Math.Abs(num);
else
num = Math.Abs(num) + 1;
xpoint = Math.Abs(btnrnd.Next(4));
ypoint = Math.Abs(btnrnd.Next(4));
btns[xpoint, ypoint].Text = num.ToString();
}

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Right)
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
for(int k=4;k>0;k--)
{
if(btns[i,k].Text=="")
{
btns[i, k].Text = btns[i, j].Text;
btns[i, j].Text = "";
//راستش همینجاش موندم که فقط کلید راستو نوشتم ولی کار نمیکنه
}

}
}
}

}
else if (e.KeyData == Keys.Left)
{
direction = Direction.Left;
}
else if (e.KeyData == Keys.Up)
{
direction = Direction.Up;
}
else if (e.KeyData == Keys.Down)
{
direction = Direction.Down;
}
}


}