PDA

View Full Version : تشخیص همزمان دو کلید



aleas2
شنبه 23 اردیبهشت 1391, 11:25 صبح
سلام خسته نباشید تو vb6 چطور میشه فشار دادن دو کلید تو صفحه کلید رو تشخیص داد؟کد اسکی هر کدوم رو جدا بشه فهمید البته بجز api چون با این میشه

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

ولی بدون api راهی نیست؟

SlowCode
شنبه 23 اردیبهشت 1391, 12:56 عصر
همین دیروز دربارش بحث شده، قبلا هم شده بود، بفرما:
کلیدهای ترکیبی Ctrl + V و (http://barnamenevis.org/showthread.php?340915-%DA%A9%D9%84%DB%8C%D8%AF%D9%87%D8%A7%DB%8C-%D8%AA%D8%B1%DA%A9%DB%8C%D8%A8%DB%8C-Ctrl-V-%D9%88-Ctrl-C)Ctrl + C (http://barnamenevis.org/showthread.php?340915-%DA%A9%D9%84%DB%8C%D8%AF%D9%87%D8%A7%DB%8C-%D8%AA%D8%B1%DA%A9%DB%8C%D8%A8%DB%8C-Ctrl-V-%D9%88-Ctrl-C)

aleas2
شنبه 23 اردیبهشت 1391, 14:19 عصر
نه منظور من اینه مثلا دو کلید h و j پایین هسته فشار داده شده چاپ کنه کلید h و j فشار داده شده میخوام هر کدوم از این دوتا کلید فشار داده شد کارخاصی انجام بده حتی اگر باهم فشار داده شده بود دوتا کار باهم انجام بده

just4froum
شنبه 23 اردیبهشت 1391, 15:42 عصر
اگر برای بازیت می خوای تا اون جایی که من می دونم نمیشه چنین کاری رو کرد ولی اگر برای چیز دیگه بفرمایید :

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyA Then Me.Print "A"
If KeyCode = vbKeyS Then Me.Print "S"
If KeyCode = vbKeyD Then Me.Print "D"
If KeyCode = vbKeyF Then Me.Print "F"
End Sub

just4froum
شنبه 23 اردیبهشت 1391, 15:44 عصر
به 2 دلیل میگم که نمیشه برای بازیت استفاده کنی

1- چو اگر یکی از کلید هارو نگه داری بعد از یک مکث چند لحظه ای برنامه می فهمه که شما کلید را نگه داشته اید.

2- اگر هر دو بازیکن هم زمان دو کلید را نگه دارند فقط یکی از کلید ها به عنوان کلید نگه داشته شده انتخاب می شود.

m.4.r.m
شنبه 23 اردیبهشت 1391, 15:50 عصر
بابا برادر cpu هم انقدر ها گیج نیست ها بخوای دورش بزنی نمیشه کجا دیدی 2 تا کلید همزمان فعال بشن ؟ به جز ترکیب شیفت و ..... ؟

SlowCode
شنبه 23 اردیبهشت 1391, 16:13 عصر
بابا برادر cpu هم انقدر ها گیج نیست ها بخوای دورش بزنی نمیشه کجا دیدی 2 تا کلید همزمان فعال بشن ؟ به جز ترکیب شیفت و ..... ؟
من قبلا یه سورسی دیده بودم،البته واسه کلیدهای جهت بود نمیدونم واسه دکمه های دیگه هم جواب بده یا نه.

just4froum
شنبه 23 اردیبهشت 1391, 16:30 عصر
بابا برادر cpu هم انقدر ها گیج نیست ها بخوای دورش بزنی نمیشه کجا دیدی 2 تا کلید همزمان فعال بشن ؟ به جز ترکیب شیفت و ..... ؟

ببخشیدا ولی مگه شما تا حالا کامپیوتر بازی نکردین ؟:بامزه:

توی هر بازی شما چند کلید را همزمان فشار می دهید مثلا w و a را برای حرکت و shift برای دویدن و space برای پرش همه ی این کارارو با هم انجام میدین.:متعجب:

محسن واژدی
شنبه 23 اردیبهشت 1391, 20:41 عصر
بابا برادر cpu هم انقدر ها گیج نیست ها بخوای دورش بزنی نمیشه کجا دیدی 2 تا کلید همزمان فعال بشن ؟ به جز ترکیب شیفت و ..... ؟
سلام
اگه به رفرنس برنامه Adobe Flash-MX توجه کرده باشید از این روش به عنوان میانبر برای دستیابی دستورات استفاده شده

m.4.r.m
یک شنبه 24 اردیبهشت 1391, 00:53 صبح
محاکمه نکنید منو بابا یه چیزی مزاح کردم شدنش میشه اما یادمه تو ویژوال C++ که گیم طراحی می کردیم میشد یعنی کرده بویم اما تو وی بی اطلاعات گرافیکیم زیاد بالا نیست . یعنی یکیم سخته تو وی بی

just4froum
یک شنبه 24 اردیبهشت 1391, 01:38 صبح
نه زیادم سخت نیست میشه با یک تایمر و تابع GetAsyncKeyState این کارو کرد.

محسن واژدی
یک شنبه 24 اردیبهشت 1391, 19:30 عصر
سلام خسته نباشید تو vb6 چطور میشه فشار دادن دو کلید تو صفحه کلید رو تشخیص داد؟کد اسکی هر کدوم رو جدا بشه فهمید البته بجز api چون با این میشه

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

ولی بدون api راهی نیست؟

سلام
از اونجایکه در وی بی تنها کلیدهای فشرده شده برگشت داده میشن، بدون استفاده از توابع API نمیتوانیم فشرده شدن بیشتر از یک کلید را بررسی کنیم

موفق باشید