Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Detekcija pritisnutih tastera (2 ili vise u isto vreme) C#

[es] :: .NET :: .NET Desktop razvoj :: Detekcija pritisnutih tastera (2 ili vise u isto vreme) C#

[ Pregleda: 3027 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nikola_BGD
Beograd

Član broj: 25863
Poruke: 340
*.pat-pool.bgd.sbb.co.yu.



+1 Profil

icon Detekcija pritisnutih tastera (2 ili vise u isto vreme) C#12.06.2005. u 14:25 - pre 229 meseci
Radim neku igricu, nista spektakularno (windows forms) i imam jedan problem.

Potrebno mi je da prihvatam user input za 2 plejera koja kontrolisu svoje svemirske brodove. E sad, potrebno je da recimo oba usera skrecu u istom trenutku, a form1_keypress to ne moze da handluje. Dok se drzi jedan taster on njega prihvata ali ako pritisnes neki drugi taster on onaj prvi ignorise i od tada vidi samo onaj drugi po redu sto je pritisnut.

Npr player 1 drzi levo a player 2 oce da pritisne svoje levo (nije bitno sta)..U tom trenutku se levo za player1 ignorise i sad samo player2 ima input dok ga p1 ne preuzme i obrnuto, tako u krug. Kako da odradim da mogu oba istovremeno da se kontrolisu ?

poz

n
 
Odgovor na temu

dusty
Predrag Glumac
Zemun, Srbija

Član broj: 15383
Poruke: 549
*.fiberop.matgnet.com.

Sajt: www.mika.rs


+6 Profil

icon Re: Detekcija pritisnutih tastera (2 ili vise u isto vreme) C#13.06.2005. u 11:22 - pre 229 meseci
Tja, mogao bi da overridujes WndProc i da pratis poruke o pritisnutim i podignutim tasterima (WM_KEYUP i WM_KEYDOWN).
Samo ne znam koliko je to efektivno u praksi za tvoj projekat.

Javi kako fercera...
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
 
Odgovor na temu

Nikola_BGD
Beograd

Član broj: 25863
Poruke: 340
*.pat-pool.bgd.sbb.co.yu.



+1 Profil

icon Re: Detekcija pritisnutih tastera (2 ili vise u isto vreme) C#13.06.2005. u 11:47 - pre 229 meseci
hmm daj nesto detaljnije posto mi slabo znaci ovo iznad...
nisam se previse zezao sa c# znam sta je override al ne znam sta je wndproc :D

Glavno mi je da prihvatam 2 tastera istovremeno jer ko god sedne da isproba igricu drzi tastere umesto da ih pritiska....
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
*.pat-pool.bgd.sbb.co.yu.



Profil

icon Re: Detekcija pritisnutih tastera (2 ili vise u isto vreme) C#13.06.2005. u 12:19 - pre 229 meseci
Moraces da se igras sa DirectInput-om ili pokusaj da nadjes C# ekvivalent za:
Code:

GetKeyboardState
The GetKeyboardState function copies the status of the 256 virtual keys to the specified buffer. 

BOOL GetKeyboardState(
  PBYTE lpKeyState   // array of status data
);
Parameters
lpKeyState 
[in] Pointer to the 256-byte array that will receive the status data for each virtual key. 
Return Values
If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError. 



yooyo
 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
*.pat-pool.bgd.sbb.co.yu.



Profil

icon Re: Detekcija pritisnutih tastera (2 ili vise u isto vreme) C#13.06.2005. u 12:44 - pre 229 meseci
Code:

using System.Runtime.InteropServices;

[DllImport("user32.dll")]
static extern short GetAsyncKeyState(int vKey);

if ( GetAsyncKeyState( vkUP ) < 0 ) 
{
... pressed
}


vkUP i ostalo ces naci u winuser.h. Deo headera:
Code:

#define VK_SPACE          0x20
#define VK_PRIOR          0x21
#define VK_NEXT           0x22
#define VK_END            0x23
#define VK_HOME           0x24
#define VK_LEFT           0x25
#define VK_UP             0x26
#define VK_RIGHT          0x27
#define VK_DOWN           0x28
#define VK_SELECT         0x29
#define VK_PRINT          0x2A
#define VK_EXECUTE        0x2B
#define VK_SNAPSHOT       0x2C
#define VK_INSERT         0x2D
#define VK_DELETE         0x2E
#define VK_HELP           0x2F
 
Odgovor na temu

Nikola_BGD
Beograd

Član broj: 25863
Poruke: 340
*.pat-pool.bgd.sbb.co.yu.



+1 Profil

icon Re: Detekcija pritisnutih tastera (2 ili vise u isto vreme) C#13.06.2005. u 19:31 - pre 229 meseci
Hvala probacu sa ovim dole, nadam se da ce da sljaka

poz
 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
*.pat-pool.bgd.sbb.co.yu.



Profil

icon Re: Detekcija pritisnutih tastera (2 ili vise u isto vreme) C#14.06.2005. u 09:02 - pre 229 meseci
Nadam se da koristis double-buffer kako bi izbegao flicker. Javni se ako ne znas o cemu se radi...
 
Odgovor na temu

Nikola_BGD
Beograd

Član broj: 25863
Poruke: 340
*.sbb.co.yu.



+1 Profil

icon Re: Detekcija pritisnutih tastera (2 ili vise u isto vreme) C#14.06.2005. u 18:30 - pre 229 meseci
Sve iscrtavam posebno, za sada nema flickera, a nece ga ni biti verovatno, jer je jednostavna grafika.

jos su mi te kontrole brodova ostale problem ne stizem da uradim to al postujem rezultate ovde cim se dohvatim toga...

A sto se tice grafike, ne koristim double buffer, nema previse crtanja pa lepo radi.
Stavio sam samo ovu liniju, sto sam negde na netu naisao sto bi trebalo da ubrzava mada i sa njom i bez nje radi prakticno isto:

Code:

this.SetStyle(ControlStyles.AllPaintingInWmPaint|ControlStyles.UserPaint|ControlStyles.DoubleBuffer,true);


poz

n
 
Odgovor na temu

Nikola_BGD
Beograd

Član broj: 25863
Poruke: 340
*.pat-pool.bgd.sbb.co.yu.



+1 Profil

icon Re: Detekcija pritisnutih tastera (2 ili vise u isto vreme) C#19.06.2005. u 21:30 - pre 229 meseci
Radi ovo sto je napisao Dragansm...

i to radi extra

Hvala care jos jednom

poz....
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Detekcija pritisnutih tastera (2 ili vise u isto vreme) C#

[ Pregleda: 3027 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.