نمایش نتایج 1 تا 8 از 8

نام تاپیک: کلید های جهت نما

  1. #1

    کلید های جهت نما

    سلام
    لطفا در باره کلیدهای جهت نما در سی پلاس پلاس راهنمایی کنید(مفصل)
    با تشکر

  2. #2
    کاربر دائمی آواتار SMRAH1
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    مشهد
    پست
    884

    نقل قول: کلید های جهت نما

    سلام

    کلید های جهت بر از جمله کلید های توسعه یافته (دو بایتی) است.در واقع هر کلید صفحه کلید،یک بایت بر می گردونه، الا چند کلید خاص مثل کلید های جهت بر،F ها و .... که توسعه یافته اند و دو بایت بر می گردونند.برای تشخیص کلید های توسعه یافته باید ابتدا مقدار grtch را بگیری از مقدار اون برابر صفر بود یعنی کلید توسعه یافته است و بایت بعدی، یعنی بایت دوم،نوع دقیق کلید توسعه یافته است و حالا اون بایت رو (بایت دوم رو) باید به شکل توسعه یافته تفسیر کنی.برای نمونه در کد زیر :
    char ch;
    while(1)
    {
    ch = getch();
    if(ch == 0)
    {
    //Extended key
    ch = getch();
    switch(ch)
    {
    ....
    }
    }
    else
    {
    //Normal key
    switch(ch)
    {
    ....
    }
    }
    }
    حالا با توجه به اینکه کد کلید جهت بالا برابر 0075 است و کد کاراکتر K هم 75 است یک مثال می زنم.برای تشخیص این دو از هم، اگر getch مقدار 75 رو برگرداند یعنی کلید K فشرده شده،ولی اگر getch ابتدا مقدار صفر را داد،اول دوباره getch می کنی و این مقدار اگر 75 بود یعنی کلید جهت بر بالا رو زده ایم.
    کد کامل کلید های توسعه یافته رو می تونی از کتب و منابع برنامه نویسی بدست بیاری (من برای این کار یک برنامه نوشتم که هر وقت کلیدی رو فشردم، مقدار getch شده اون رو نشون بده تا بفهمم کد کلید چیست)
    نکته مهم اینکه اگر در حالت consol در ویژوال استودیو کار می کنی (برنامه می نویسی) کد تشخیص کلید های توسعه یافته به جای صفر ،0xE0 است.
    برنامه پایین هم رو قبلا تحت TC نوشتم که یک بازی قدیمه و البته خیلی ساده و از کلید های جهت بر هم در اون استفاده شده (به همراه کمی توضیحات).

    موفق باشید
    فایل های ضمیمه فایل های ضمیمه

  3. #3
    کاربر دائمی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    1,486

    نقل قول: کلید های جهت نما

    علاوه بر صحبت های جناب SMRAH1 برای اینکه با کد های کلید ها سرکار نداشته باشی می تونی از virual key های کیبرد استفاده کنی.
    لیست virtual key ها رو می تونی اینجا ببینی:
    http://msdn.microsoft.com/en-us/library/ms927178.aspx

    و بعد با توجه به کاری که می خوای بکنی و با استفاده از این virtual key ها از تابع مورد نظر استفاده کنی.
    مثلا فرض کن می خوایم چک کنیم بینیم که کلید جهت نما بالا فشار داده شده یا نه. در این حالات از تابع GetAsyncKeyState در هدر فایل windows.h استفاده می کنیم و VK_UP که کلید مجازی دکمه جهت نما بالا هست رو بهش پاس میدیم:

    if(GetAsyncKeyState(VK_UP))
    .....
    این تابع در حالتی که اون کلید فشار داده شده باشه مقدار 1 رو بر می گردونه.

  4. #4

    نقل قول: کلید های جهت نما

    بسم الله الرحمن الرحیم
    سلام بر دوستان عزیز
    حالتون چطوره یا نه؟
    باز هم با کوله باری از سوال اومدم. انشا الله همیشه از راهنمایی شما بهره مند باشیم
    دوستان عزیز , لطفا برنامه زیر رو چک کنید و در تکمیل آن کمکم کنید. هدف این برنامه
    استفاده از کلیدهای جهت نماست . به طور نصف ونیمه کار می کند ولی اگر ملاحظه کنید
    می بینید که در خروجی ایراداتی دارد وحتما در کد نویسی نیز ایراد دارد
    موفق باشید
    ممنون
    <<اعتقاد به علی دایی , اعتقاد به فوتبال حرفه ایست>> این حدیث از اینجانب
    فایل های ضمیمه فایل های ضمیمه

  5. #5

    نقل قول: کلید های جهت نما

    کدهای اسکی جهت نما و اینتر بصورت زیر هستش..
    بالا=>72
    پایین=>80
    چپ=>75
    راست=>77
    اینتر=>13

  6. #6
    کاربر دائمی
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    تهران
    پست
    1,486

    نقل قول: کلید های جهت نما

    نقل قول نوشته شده توسط saeid99 مشاهده تاپیک
    کدهای اسکی جهت نما و اینتر بصورت زیر هستش..
    بالا=>72
    پایین=>80
    چپ=>75
    راست=>77
    اینتر=>13
    تاپیک های قدیمی رو بیخودی بالا نیار.
    ضمنا کدهایی که گفتی به ترتیب برای حروف H و P و K و M هست نه کلید ها جهت نما.

  7. #7

    نقل قول: کلید های جهت نما

    راستش من دیدم که در یه ادیتور از این کدا استفاده کرده و گذاشتمش..
    اگه اشتباهه با کمال میل حرفتون رو میپذیرم....
    موفق باشی

  8. #8

    نقل قول: کلید های جهت نما

    از توضیحات خوبتون ممنونم همونطور که گفتید کلیدهای جهت نما یک عدد دوبایتی یا به عبارتی دو عدد یک بایتی بر می گردانند من برای بدست آوردن عددی که با فشردن کلید های جهت نما بدست می آید از برنامه ساده زیر استفاده کردم ولی نمی دانم چرا بایت اول 00 برنگرداند بلکه 224 به دست آمد؟؟؟
    بعد از اجرای برنامه زیر در مورد کامپیوتر من با ویندوز سون و کامپایلر dev این اعدد مثلا برای کلید جهت نمای بالا بدست آمد:
    224
    72
    #include<iostream>
    #include<conio.h>
    using namespace std;
    int main()
    {
    for(int i=0;i<20;i++)
    {int c=(int)getch();
    cout<<"\n"<<c;}
    getch();
    }


قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •