JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Ganz einfach Directinput Mausauswertung gesucht

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
RayJunx
JLI'ler


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

BeitragVerfasst am: 16.01.2006, 22:44    Titel: Ganz einfach Directinput Mausauswertung gesucht Antworten mit Zitat

Hi all Smile
Der Code über Directinput maus verwendung aus dem Buch funktioniert bei mir irgendwie nicht und ich weiß nicht was ich falsch mache. Kann mir jemand vielleicht helfen und mir einfach ganz konkret nur die relevanten Zeilen rauskopieren die ich zur Mausauswertung brauche?
initierung
und dann im spiel
berechnung und variable für die x und y position
sowie irgend einen bool speicher für die tasten (an/aus) funktionen
vielleicht auch scrollrad wenn derjenige weiß wies geht.
ich steh leider voll auf dem schlauch.
über winapi krieg ichs hin. aber ich kann dann irgendwie im spiel
nicht mehr drauf zugreifen... checks nicht.

gruß
RayJunx81
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
51m0n
JLI'ler


Alter: 32
Anmeldedatum: 06.01.2006
Beiträge: 167
Wohnort: Erkelenz
Medaillen: Keine

BeitragVerfasst am: 17.01.2006, 13:36    Titel: Antworten mit Zitat

Hallo
wenn du die koordinaten der Maus erfahren willst kannst du auch folgendes machen:
Code:
POINT pt;
GetCursorPos(&pt);

Ich denke der Code dürfte klar sein.
Und zum klicken...
ich weiß im Moment nich ganz genau wie aber du kannst mit
if(maus.dwOfs == DIMOFS_BUTTON0) überprüfen ob die taste gedrückt wurde.

Mit dem Scrollrad hab ich keine Ahnung.

Hoffe ich konnte helfen Wink
_________________
Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren
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: 17.01.2006, 14:11    Titel: Antworten mit Zitat

CPP:
   LPDIRECTINPUTDEVICE8 m_lpDIMouse;

//Die Maus initialiesieren
   m_lpDI->CreateDevice(GUID_SysMouse, &m_lpDIMouse, NULL);
   m_lpDIMouse->SetDataFormat(&c_dfDIMouse);
   m_lpDIMouse->SetCooperativeLevel(hWnd, DISCL_FOREGROUND | DISCL_EXCLUSIVE);
   m_lpDIMouse->Acquire();


CPP:
   //Die Maus aktualiesieren
   if(FAILED(m_lpDIMouse->GetDeviceState(sizeof(m_Mousestate), &m_Mousestate)))
   {
      m_lpDIMouse->Acquire();
      m_lpDIMouse->GetDeviceState(sizeof(m_Mousestate), &m_Mousestate);
   }
   m_CursorXPos+=m_Mousestate.lX*m_CursorSpeed;
   m_CursorYPos+=m_Mousestate.lY*m_CursorSpeed;
   m_CursorZPos+=m_Mousestate.lZ/m_Mausradabstand;


Falls du Fragen zu den Parametern hast, gib die entsprechenden Funktionen bei der DX Doku ein, da findest du alles.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
RayJunx
JLI'ler


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

BeitragVerfasst am: 17.01.2006, 21:37    Titel: problem mit code Antworten mit Zitat

habe den Code von dir ( Jonathan_Klein )
eingebunden,

LPDIRECTINPUTDEVICE8 m_lpDIMouse;

ging

nach dem einfügen von:

m_lpDI->CreateDevice(GUID_SysMouse, &m_lpDIMouse, NULL);
m_lpDIMouse->SetDataFormat(&c_dfDIMouse);
m_lpDIMouse->SetCooperativeLevel(hWnd, DISCL_FOREGROUND | DISCL_EXCLUSIVE);
m_lpDIMouse->Acquire();

bekam ein eine fehlermeldng:
error C2065: 'm_lpDI' : undeclared identifier

also habe ich rumgespielt und mit
lpDI->CreateDevice(GUID_SysMouse, &m_lpDIMouse, NULL);
gehts wenn man das "m_" wegläßt. dachte war vielleicht
ein tipfehler...

dann habe ich irgendwo verucht die maus zu aktualisieren wie
in deinem text mit der anfangszeile:
if(FAILED(m_lpDIMouse->GetDeviceState(sizeof(m_Mousestate), &m_Mousestate)))
da meckert er mich aber sofort an das:
error C2065: 'm_Mousestate' : undeclared identifier

kannst du mir helfen? was mache ich falsch?
<dinput.h> und dinput8.lib habe ich eingebunden

muß ich eigentlich irgendwelche variablen selbst
anlegen? oder sind die alle bereits eingebettet.
sieht so aus...

gruß
und danke für eure hilfe!

RayJunx
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


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

BeitragVerfasst am: 18.01.2006, 14:51    Titel: Antworten mit Zitat

Also, der Code den ich gepostet habe ist aus meiner fertigen DInput Klasse. Daher kannste den net so einfach übernehmen, er sollte eigentlich nur zeigen,w ie es im Prinzip geht.
Meiner Meinung nach bringt es wenig sich von anderen alles zusammenbasteln zu lassen, man versteht es dann nicht so gut, wie wenn man es selber macht. Darum hab ich nur diesen Teil gepostet.
Du musst tatsächlich alle Variablen selber anlegen, bzw. evtl. haste das ja schon (weil es ja ging als du m_ entfernt hast).
In der DX Dokumentation, die normalerweise bei de Installation des DX SDK's mitinstalleirt wird, findest du eine Detailierte dokumentation aller DX Funktionen.
Bei GetDeviceState steht zum Beispeil das man einen Zeiger auf eine Struktur übegeben muss, je nach Gerät gibt es verscheidnee für eine Maus benutz man halt:
CPP:
typedef struct DIMOUSESTATE {
    LONG lX;
    LONG lY;
    LONG lZ;
    BYTE rgbButtons[4];
} DIMOUSESTATE, *LPDIMOUSESTATE;

Zitat:

lX
X-axis.
lY
Y-axis.
lZ
Z-axis, typically a wheel. If the mouse does not have a z-axis, the value is 0.
rgbButtons
Array of buttons. The high-order bit of the byte is set if the corresponding button is down.


Der Rest steht da auch irgendwo, es ist immer sehr nützlich wenn man bisschen mit der DX Doku umgehen kann.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
RayJunx
JLI'ler


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

BeitragVerfasst am: 18.01.2006, 17:50    Titel: hab... Antworten mit Zitat

hab mal eben versucht da über die hilfe schlau zu werden
ja da gibts VIEL leider zu viel. das beispiel zur maus ist ein code mit
über 1000zeilen. hallo?
programmiere erst seit ein paar tagen, das krieg ich noch nicht gebacken.
leider. auserdem hab ich nicht vor da feinheiten zu machen. ich will
nur nen schlichten code zum portieren. wie der mauszeiger dann konkret
arbeitet interessiert mich im spiel dann nicht mehr die bone.
hauptsache coordinaten und tasten abfragbar. thats all.
*frustriert ist* Crying or Very sad
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 18.01.2006, 17:56    Titel: Re: hab... Antworten mit Zitat

RayJunx hat Folgendes geschrieben:
hab mal eben versucht da über die hilfe schlau zu werden
ja da gibts VIEL leider zu viel. das beispiel zur maus ist ein code mit
über 1000zeilen. hallo?
programmiere erst seit ein paar tagen, das krieg ich noch nicht gebacken.
leider.

meinst du nicht, dass es dann sinnvoll wäre, erstmal mit C++ und WinAPI im Allgemeinen anzufangen? Erst ein paar Tage programmieren, und dann schon DirectX ausfahren O.o

Gruß DirectXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



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

BeitragVerfasst am: 18.01.2006, 19:29    Titel: Antworten mit Zitat

Guter Rat: Lass DirectX erstmal links liegen und lerne C++ und Win32API erstmal anständig. DANN erst mit ZusatzAPIs anfangen.

Für DirectInput, DirectDraw und co. gibt es auf www.germangamedev.de mehr als genug.

p.s.: DirectInput sucks
_________________
'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
Jonathan_Klein
Living Legend


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

BeitragVerfasst am: 18.01.2006, 19:30    Titel: Antworten mit Zitat

ich hab das erste halbe Jahr nur Konsolenprogramme gemacht, unter anderen viele Textadventures und Quiz und sogar n rundenbasiertes Prügelspiel Wink

Du brauchst dir nicht rießige Beipsiele anschauen, wenn man einfach guckt, was zu den funktionen steht, reicht das auch schon aus (meistens). Einfach auf suchen klicken und dann "nur titel" markieren da findet man meistens kompakt alle Informationen samt weiterführenden links zu den Funktionen. Zum Beispiel steht da auch, das du nicht zwingend eine Variable der Struktur anlegen musst da es schon globale gibt. Ob man die benutzt ist einem selber überlassen.
Auch wenns dir am Ende egal ist, wie alles funktioniert, nützlich ist es doch mit der Doku umgehen zu können, da man dort die Antwort meist schneller findet, als wie wenn man auf die Antwort anderer warten muss.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jones
Senior JLI'ler


Alter: 33
Anmeldedatum: 03.03.2005
Beiträge: 208
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 18.01.2006, 20:12    Titel: Antworten mit Zitat

Ich hab auch wie Jonathan_Klein am anfang viele konsolemprogramme gemacht, es ist erstmal leicht, man bekommt mehr Erfahrung in C++ und mit http://ic.sidewindershome.net machts gleich noch mehr spaß Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
RayJunx
JLI'ler


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

BeitragVerfasst am: 18.01.2006, 21:08    Titel: geht endlich Antworten mit Zitat

wollte ja als erstes eh die winapi maus verwenden.
und jetzt weiß ich auch warum es nicht ging,
beide beispiele waren aus dem buch haben aber eine andere bezeichnung verwendet, die jetzt gleichgestellt, wunderbar funktionieren und ich krieg ganz einfach meine koordinaten. wunderprächtig.
_________________
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 -> DirectX, OpenGL 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