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
|
Verfasst am: 16.01.2006, 21:44 Titel: Ganz einfach Directinput Mausauswertung gesucht |
|
|
Hi all
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 |
|
|
51m0n JLI'ler
Alter: 33 Anmeldedatum: 06.01.2006 Beiträge: 167 Wohnort: Erkelenz Medaillen: Keine
|
Verfasst am: 17.01.2006, 12:36 Titel: |
|
|
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 _________________ Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 17.01.2006, 13:11 Titel: |
|
|
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 |
|
|
RayJunx JLI'ler
Alter: 43 Anmeldedatum: 16.01.2006 Beiträge: 130 Wohnort: Bayern Medaillen: Keine
|
Verfasst am: 17.01.2006, 20:37 Titel: problem mit code |
|
|
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 18.01.2006, 13:51 Titel: |
|
|
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 |
|
|
RayJunx JLI'ler
Alter: 43 Anmeldedatum: 16.01.2006 Beiträge: 130 Wohnort: Bayern Medaillen: Keine
|
Verfasst am: 18.01.2006, 16:50 Titel: hab... |
|
|
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* _________________ Just a Freak |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 18.01.2006, 16:56 Titel: Re: hab... |
|
|
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 |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 18.01.2006, 18:29 Titel: |
|
|
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 18.01.2006, 18:30 Titel: |
|
|
ich hab das erste halbe Jahr nur Konsolenprogramme gemacht, unter anderen viele Textadventures und Quiz und sogar n rundenbasiertes Prügelspiel
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 |
|
|
Jones Senior JLI'ler
Alter: 33 Anmeldedatum: 03.03.2005 Beiträge: 208 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 18.01.2006, 19:12 Titel: |
|
|
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ß |
|
Nach oben |
|
|
RayJunx JLI'ler
Alter: 43 Anmeldedatum: 16.01.2006 Beiträge: 130 Wohnort: Bayern Medaillen: Keine
|
Verfasst am: 18.01.2006, 20:08 Titel: geht endlich |
|
|
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 |
|
|
|