s.1.8.1.18
New Member
سلام کسی کد اسکی کلید های بالا و پایین و چپ و راست رو داره؟
سلام کسی کد اسکی کلید های بالا و پایین و چپ و راست رو داره؟
Arrow Key Left 224, 75 0, 75
Arrow Key Right 224, 77 0, 77
Arrow Key Up 224, 72 0, 72
Arrow Key Down 224, 80 0, 80
#include <iostream.h>
#include <conio.h>
int main()
{
int ch;
cout << "Press any key (ESC to exit)." << endl;
do
{
ch = getch();
if ((ch == 0) || (ch == 224))
{
ch = getch();
switch (ch)
{
case 75 :
cout << "Left ";
break;
case 77 :
cout << "Right ";
break;
case 72 :
cout << "Up ";
break;
case 80 :
cout << "Down ";
break;
}
}
} while (ch != 27);
return 0;
}
کلید ها کد ASCII ندارند، کد ASCII برای کاراکتر ها است، نه کلید ها. کلید ها دو تا کد دارند، یکی بایت یا بایت هایی است که با فشار دادن شون
در بافر صفحه کلید قرار می گیره و بهش (Char Code(s می گویند و دیگری Scan Code ئه که یک بایته. اگر کاربرد تون برای توابعی مثل ()getch است، شما Char Codes
را می خواهید که در مورد کلید های مکان نما مقدار شون دو بایتی است، بایت اول شون 0 یا 224 است و بایت دوم یک مقدار غیر صفر که فرق می کنه. برای اینجور کلید ها
باید دو تا ()getch پشت سر هم اجرا بشه، اولی مقدار 0 یا 224 رو بر می گردونه، وقتی دادید مقدار 0 یا 224 ئه، متوجه می شوید که با یک کلید خاص مواجه شده اید و باید
مجددا یک ()getch دیگه اجرا بشه تا بایت دوم بدست بیاد و بر اساس این مقدار بایت دوم مشخص بشه که کدوم کلید فشار داده شده.
کد:Arrow Key Left 224, 75 0, 75 Arrow Key Right 224, 77 0, 77 Arrow Key Up 224, 72 0, 72 Arrow Key Down 224, 80 0, 80
مثلا :
کد:#include <iostream.h> #include <conio.h> int main() { int ch; cout << "Press any key (ESC to exit)." << endl; do { ch = getch(); if ((ch == 0) || (ch == 224)) { ch = getch(); switch (ch) { case 75 : cout << "Left "; break; case 77 : cout << "Right "; break; case 72 : cout << "Up "; break; case 80 : cout << "Down "; break; } } } while (ch != 27); return 0; }
دقیقا از کدی که داخل حلقه do while نوشته ام (بدون do while) استفاده کنید، صرفا بجای cout کاری که می خواهید انجام می دهید.خ ممنون از پاسخ عالیتون. من میخوام از این کلیدها تو برنامه ام استفاده کنم! باید چه جوری این کار رو انجام بدم؟ یعنی میخوام برنامه ام با این کلیدها حرکت کنه.
2 بار getch() بذارم؟!
کلید ها کد ASCII ندارند، کد ASCII برای کاراکتر ها است، نه کلید ها. کلید ها دو تا کد دارند، یکی بایت یا بایت هایی است که با فشار دادن شون
در بافر صفحه کلید قرار می گیره و بهش (Char Code(s می گویند و دیگری Scan Code ئه که یک بایته. اگر کاربرد تون برای توابعی مثل ()getch است، شما Char Codes
را می خواهید که در مورد کلید های مکان نما مقدار شون دو بایتی است، بایت اول شون 0 یا 224 است و بایت دوم یک مقدار غیر صفر که فرق می کنه. برای اینجور کلید ها
باید دو تا ()getch پشت سر هم اجرا بشه، اولی مقدار 0 یا 224 رو بر می گردونه، وقتی دادید مقدار 0 یا 224 ئه، متوجه می شوید که با یک کلید خاص مواجه شده اید و باید
مجددا یک ()getch دیگه اجرا بشه تا بایت دوم بدست بیاد و بر اساس این مقدار بایت دوم مشخص بشه که کدوم کلید فشار داده شده.
کد:Arrow Key Left 224, 75 0, 75 Arrow Key Right 224, 77 0, 77 Arrow Key Up 224, 72 0, 72 Arrow Key Down 224, 80 0, 80
مثلا :
کد:#include <iostream.h> #include <conio.h> int main() { int ch; cout << "Press any key (ESC to exit)." << endl; do { ch = getch(); if ((ch == 0) || (ch == 224)) { ch = getch(); switch (ch) { case 75 : cout << "Left "; break; case 77 : cout << "Right "; break; case 72 : cout << "Up "; break; case 80 : cout << "Down "; break; } } } while (ch != 27); return 0; }
سلام
دادا بازم ممون
ولی این کد رو چطو تو برنامم بذارم که بتونم انتخابای دیگه ای هم داشته باشم؟
من این کد را واسه صفحه عوض کردن لازم داشتم، حالا صفحه عوض میشه ولی کلیدای دیگه کار نمیکنن؟
مثلا تو هر صفحه چنت گزینه واسه انتخاب هست که باشماره کار میکنن ولی وقتی این کد رو گذاشتم نتونستم از شماره ها استفاده کنم
میدونم بخاطر getch هستش ولی نمیدونم چطو درستش کنم
خواهشمندم به یاری ام بشتابید
با سپاس فراوان
if ((ch == 0) || (ch == 224))
{
ch = getch();
switch (ch)
{
case 75 :
cout << "Left ";
break;
case 77 :
cout << "Right ";
break;
case 72 :
cout << "Up ";
break;
case 80 :
cout << "Down ";
break;
}
}
[COLOR="#0000FF"] else
{
switch (ch)
{
case '1' :
cout << "1 ";
break;
case '2' :
cout << "2 ";
break;
case 'x' :
cout << "X ";
break;
case 32 :
cout << "Space ";
break;
case 13 :
cout << "Enter ";
break;
}
}[/COLOR]