JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=57f9c6d71ff22a536dd624e67d461434Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Gamepad abfragen

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 10.02.2005, 11:18    Titel: Gamepad abfragen Antworten mit Zitat

Hi,

weiß jemand ob ein Gamepad wie ein Joystick abgefragt wird oder ob es anderst behandelt werden muss?
Theoretisch müsste es ja wie bei einem Joystick funktionieren, nur das es halt viele Buttons und keine Axen gibt.
Hat sich schon jemand damit beschäftigt?

MfG Chriss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 10.02.2005, 11:20    Titel: Antworten mit Zitat

Schau mal in der Doku nach und in der dinput.h. Da steht alles, du kannst auch japanische Keyboards abfragen Very Happy
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 10.02.2005, 15:21    Titel: Antworten mit Zitat

tjo, es gibt halt bei DInput die Joystickstruktur, die man zum Abfragenn braacuth, und diebietet wircklich reichlich Platzt für alles mögliche. Ich glaube auch, das auch Gamepads Achsen haben, die haben dann halt nur immer Vollausschlag.
Lenkräder werden glaub ich auch genauso behandelt.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 10.02.2005, 15:25    Titel: Antworten mit Zitat

Lang leben die MultiMedia Messages der Win32API Wink
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
JkerryZ
JLI Master Trainee



Anmeldedatum: 18.05.2004
Beiträge: 575
Wohnort: Wolfsburg
Medaillen: Keine

BeitragVerfasst am: 10.02.2005, 17:58    Titel: Antworten mit Zitat

Aber das stimmt, man kann Lenkräder und Gamepads genauso wie Joysticks abfragen. Beim Lenkrad ist die X-Achse dann das Rad und die Y-Achse sind die Pedalen.
Ein Gamepad mit so einem kleinen Steuerknüppel oder auch zweien davon hat dann halt 2 X-Achsen (linker, rechter Knüppel) und 2 Y-Achsen (linker und rechter Knüppel) Also wie zwei Joysticks.
Ein Gamepad mit so einem Steuerkreuz ist ja auch wie ein Joystick nur mit abgesägtem Griff und dass er immer Vollausschlag macht. Von der Behandlung her ist er jedoch genau wie ein klassischer Joystick.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 10.02.2005, 18:01    Titel: Antworten mit Zitat

jo, am besten macht man das vileiecht so, das man jedes EReigniss des Joysticks/GAmepads/Lenkrades in ienem einfachen Fenster anzeigen kässt (kann man ja bei DInput erhalten). Dann sieht man hatl am besten, wann man was bekommt. (Oder dirket fürs Spile machen, das man die Steuerung einstellen kann.)
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 10.02.2005, 20:35    Titel: Antworten mit Zitat

Ich hab das jetzt hinbekommen.

Man frägt es wirklich wie ein Joystick ab und man könnte das Beispiel aus dem Buch 1:1 übernehmen wobei sich gerade bei Digitalpads eine Struktur mit boolschen Werten empfiehlt.

Ich habe nur noch ein Problem damit 2 verschiedene Gamepads abzufragen.

Weiß jemand zufällig welche Objekte ich doppelt anlegen muss?

Ich habe jetzt ein sysKeyboard, eine sysMouse (oder so) und 2 entsprechende Objekte für ein Joystick.

Wenn es jemand weiß bitte posten wenn nicht werd ich es schon irgend wann herausbekommen und hier für die Posten die es auch mal brauchen könnten.

Danke für eure Beträge!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 11.02.2005, 10:31    Titel: Antworten mit Zitat

also du kannst mit
Code:

IDirectInput8::EnumDevices(...);

Alle eingabe Geräte abfragen. In den Flags kannst du einstellen, welche alle aufgelistet werden sollen, also zum Beispiel alle Joysticks (oder alle Mäuse oder ale Tastaturen *g*).
Dann glabu ich für jedes Gerät, welches du benutzen willst einmal CreateDevice aufrufen.
Mit dem Deivece kann man per
Code:

IDirectInputDevice8::EnumObjects(...)

noch nachschauen, wie viel eKnöpfe Achsen und sonstigen Kram das Gerät hat.

nfos zu den funktionen, sollten in der Dokumentation stehen.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 11.02.2005, 12:52    Titel: Antworten mit Zitat

So ich hab's jetzt.

Man kann den Code aus dem Buch gut als Grundlage nehmen.

Mann braucht eigenltich alles doppelt, auch 2 Callbackfunktionen.

Allerdings muss man in den Callbackfunktionen die nicht als letztes ausgeführt werden einen anderen Wert zurückgeben.

statt "DIENUM_STOP" muss "DIENUM_CONTINUE" zurückgegeben werden, sonst werden die nachfolgenden Callbackfunktionen ignoriert. Bei der letzten Callbackfunktion muss aber wieder "DIENUM_STOP" zurückgegeben werden sonst funktioniert die Abfrage nicht richtig.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
RayJunx
JLI'ler


Alter: 43
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 03.09.2006, 19:33    Titel: Antworten mit Zitat

hi chriss,
ich habe genau das gleiche problem mit der einbindung einer gamepad steuerung die du schon gelöst hast. Ich habe auch den code aus dem buch übernommen und konnte so den rechten stick auf meinem "XBOX360 for PC controller" ablesen X und Y achse. aber ich komme nicht an die achswerte des rechten joystick dieses einen controlers ran. Kannst du mir weiterhelfen? Ist leider sehr eillig. hoffe du siehst diese pin bald.

hier der quellcode den ich zur einbindung verwendet habe:

Code:
 // Joystick-Bereich bestimmen
    DIPROPRANGE JoystickRange;
    ZeroMemory(&JoystickRange,sizeof(JoystickRange));           
    JoystickRange.diph.dwSize       = sizeof(JoystickRange);
    JoystickRange.diph.dwHeaderSize = sizeof(DIPROPHEADER);
   
    // Setzen der Werte für die X-Achse
    JoystickRange.diph.dwObj        = DIJOFS_X;
    JoystickRange.diph.dwHow        = DIPH_BYOFFSET;
    JoystickRange.lMin              = -1000;
    JoystickRange.lMax              =  1000;
   
    // DIPROP_RANGE - Bereich der Achsen
    if(FAILED(lpDIJoystick->SetProperty(DIPROP_RANGE, &JoystickRange.diph)))
    {
        MessageBox(hWnd,"Fehler beim Setzen der Joystickeigenschaften (X-Achse)","Fehler",MB_OK);
        return FALSE;
    }

    // Setzen der Werte für die Y-Achse (gleiche Werte wie für X)
    JoystickRange.diph.dwObj        = DIJOFS_Y;

    if(FAILED(lpDIJoystick->SetProperty(DIPROP_RANGE, &JoystickRange.diph)))
    {
        MessageBox(hWnd,"Fehler beim Setzen der Joystickeigenschaften (Y-Achse)","Fehler",MB_OK);
        return FALSE;
    }
   
    // Zugang zum Joystick verschaffen
    lpDIJoystick->Acquire();

_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 03.09.2006, 19:59    Titel: Antworten mit Zitat

Wenn du mit dem XBox 360 Controller arbeiten willst, dann schau dir lieber XInput an - das ist neu in DX und speziell für den Controller angepasst.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 04.09.2006, 10:53    Titel: Antworten mit Zitat

Hi RayJunx,

also erstmal muss ich sagen das ich damit noch nie gearbeitet habe weil ich nur Gamepads besitze die ein Steuerkreutz und 10 Buttons haben.

Für das XBox360 Gamepad wäre ja eigentlich XInput wirklich das Beste. Falls du aber auch andere Gamepads mit mehreren Joysticks usw. nutzen willst bringt XInut nicht viel.

Ich hab mal in der DX Doku nachgeshen und folgendes gefunden:

DIJOFS_X
DIJOFS_Y
DIJOFS_Z
DIJOFS_Rx
DIJOFS_Ry
DIJOFS_Rz
DIJOFS_BUTTON0 to DIJOFS_BUTTON31 or DIJOFS_BUTTON(n)
DIJOFS_POV(n)
DIJOFS_SLIDER(n)


Da du den Hauptjoystick mit DIJOFS_X und DIJOFS_Y abfragen kannst vermute ich, dass das Digitale Steuerkreutz mit DIJOFS_Rx und DIJOFS_Ry und der andere Joystick aus der Kombination der beiden Schubregler DIJOFS_Z und DIJOFS_Rz abgefragt wird. Es kann natürlich auch anderst herum sein Wink

Sollte es nicht klappen kannst du noch Pov und Slider versuchen.

Ich gehe davon aus, dass du es damit hinbekommst und poste bitte deine Lösung wen es klappt.

Grüße
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
RayJunx
JLI'ler


Alter: 43
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 01.10.2006, 12:03    Titel: sorry Antworten mit Zitat

sorry war etwas im Stress deshalb die späte antwort,
das problem war relativ einfach zu beheben, wenn irgend jemand mal das selbe Problem haben solte, dann einfach mir mailen. maridian@gmx.de das geht am schnellsten, und ich kram euch nen funktionierenden code zusammen. war im prinzip wie mein ansatz oben. Kein großer akt, ist aber eine schnelle lösung, gibt sicher formtechnisch schönere Wink

grüße an alle, und danke nochmal,

RayJunx
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum