.[ ČeskéHry.cz ].
DirectInput nebo vlastní

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> .NET
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 28. září 2009, 14:34:44    Předmět: DirectInput nebo vlastní Odpovědět s citátem

Píšu v C# / SlimDX a zajímalo by mě, jestli mám na vstup z klávesnice použít DirectInput nebo si napsat vlastní "RawInput" ...

Ovládání je oddělené od palikace (je ve tříde Controls) a ven jsdou pouze metody IsKeyPressed(char key) apod., takze jde vicemene jen o prepsani jedne tridy.

Co je lepší použít. Na několika forech jsem cetl, ze je to jedno, jinde zase ze DirectInput a jinde vlastní RawInput. Question
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 28. září 2009, 15:18:27    Předmět: Odpovědět s citátem

Použij, co chceš. Všechno má svoje výhody a nevýhody. DirectInput nezohledňuje nastavení z ovládacích panelů, takže bych se mu vyhnul. Jinak je to jedno.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 28. září 2009, 16:42:13    Předmět: Odpovědět s citátem

Ok.. a nejde nejak vyresit elegantne tohle ?
kód:

public bool IsKeyPressed(char key)
{

   Input.KeyboardState keys = this.keyboard.GetCurrentState();
      
   if ((keys.IsPressed(Input.Key.W))&& (key == 'w')) //<----  ??
   {
      return true;
   }
....}


Abych nemusel na vsechny klavesy takhle vypisovat ify ?
Chtel jsem tu obalovou tridu co nejuniverzalnejsi a nejvic oddelenou od zbytku, jak jsem psal, aby se dala lehce vymenit
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 28. září 2009, 16:53:47    Předmět: Odpovědět s citátem

No potřebuješ převést písmenko na ten Input.Key.W žejo. Pokud ta knihovna žádnou takovou funkci nemá, uděláš si tabulku, v ní to najdeš a je to.

kód:

class Conversion {
public char c;
public Key k; // nebo co je to za typ...

public Conversion(char _c, Key _k) { blabla }
};


Conversion[] tabulka = new Conversion[] {
new Conversion('w', Input.Key.W),
new Conversion('a', Input.Key.A),
...

};


syntaxi polí v c# nebo v jave nepamatuju, oprav si to za domácí úkol, stejně jako doplnit konstruktor od Conversion Smile

Jinak my jsme ve hře používali DirectInput a bez problémů. Samozřejmě pokud se ve hře bude někde něco psát, je hezčí, když to respektuje místní nastavení a na to už je záhodno použít pomoc od windows.
_________________
Mám strach
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 28. září 2009, 17:36:10    Předmět: Odpovědět s citátem

Díky... jinak psát se bude minmálně (max. nějaký nastavení do konzole). Jinak klasika W,S,A,D (sipky), mezerník, Shift a to je pro začátek vše Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Al



Založen: 23. 10. 2007
Příspěvky: 196

PříspěvekZaslal: 5. listopad 2009, 03:26:18    Předmět: Odpovědět s citátem

DirectInput je dobrý na to, že když má někdo jiné rozložení klávesnice, tak se to neovládá těmi WSAD, které ten chudák má rozházené jinde, ale pořád těmi stejnými klávesami.
Nicméně zrovna tyhle klávesy jde snímat i přes funkce Windows úplně v pohodě, horší je asi jen nějaké rozlišování levých a pravých shiftů, enteru na hlavní či numercké klávesnici nebo jánevímco pátého tlačítka u myši... Rozhodně ale ty funkce, co tam něco vyvádějí s charem v dotnetu, jsou úplně vedle jak ta jedle. Char je znak v abecedě, hodí se proprogramy typu Microsoft Word apod. Pro hry má char či spíše string smysl jen u volby kláves, kde se uživateli zobrazí název klávesy, jakou mačká. Jinak pracujeme s kódy kláves, ne se znaky, které na těch klávesách jsou.

Mimochodem jiné rozložení kláves má třeba Francie, tam není W jako na naší klávesnici, takže by ty WSAD "šipky" moc nešipkovaly. Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> .NET Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna