Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16
  1. #1
    Anfänger
    Registriert seit
    08.07.2007
    Beiträge
    13

    Standard Mouse bewegung auf Tastatur übertragen

    Hallo Leute

    Ich möchte gerne die Maus bewegung auf die Tasten w a s d umleiten (oder Pfeiltasten) können um damit in einem Egoshooter Spiel mittels Maus laufen zu können.

    Im Netz finde ich leider nur wie man mittels Tastatur die Maus bewegt aber ich will ja das gegenteil erreichen :evil:

    Das einzige was meinen Vorstellungen entspricht ist arrmouse (http://www.bookcase.com/library/soft...til.mouse.html)
    leider ist das aber nur für MSDOS gemacht und ich habe windows XP

    Hat jemand vielleicht so en Programm dass das kann oder kann jemand von euch das mir Programmieren?

    Gruss
    merfen

    PS: Hier ein versuch in C++ aber das funktioniert auch nicht ganz nach meinen Vorstellungen, da das fenster zu klein ist und die Maus bis an ein Maximum kommt und dann aufhört Koordinaten zu generieren (hab selbst dran mal rumgebastelt aber klappt auch ned)

    Code:
    /********************************************
    * Zeus CMD - GLUT Tutorial 03 : Mouse Input *
    * By Grant James (ZEUS)                     *
    * http://www.zeuscmd.com                    *
    ********************************************/
    #include <iostream>
    #include <gl/glut.h>
    
    using namespace std;
    
    bool lbuttonDown = false;
    
    bool init()
    {
    	return true;
    }
    
    void display()
    {
    
    }
    
    void mouse(int button, int state, int x, int y)
    {
    	if (button == GLUT_RIGHT_BUTTON)
    	{
    		if (state == GLUT_DOWN)
    			cout << "Right button pressed"
    			<< endl;
    		else
    			cout << "Right button lifted "
    			<< "at (" << x << "," << y
    			<< ")" << endl;
    	}
    	else if (button == GLUT_LEFT_BUTTON)
    	{
    		if (state == GLUT_DOWN)
    			lbuttonDown = true;
    		else
    			lbuttonDown = false;
    	}
    }
    
    void motion(int x, int y)
    {
    	if (lbuttonDown)
    		cout << "Mouse dragged with left button at "
    		<< "(" << x << "," << y << ")" << endl;
    }
    
    void motionPassive(int x, int y)
    {
    	cout << "Mouse moved at "
    		<< "(" << x << "," << y << ")" << endl;
    }
    
    void entry(int state)
    {
    	if (state == GLUT_ENTERED)
    		cout << "Mouse Entered" << endl;
    	else
    		cout << "Mouse Left" << endl;
    }
    
    int main(int argc, char *argv[])
    {
    	glutInit(&argc, argv);
    
    	glutInitWindowPosition(200, 200);
    	glutInitWindowSize(200, 200);
    
    	glutCreateWindow("03 - Mouse Input");
    
    	glutDisplayFunc(display);
    	glutMouseFunc(mouse);
    	glutMotionFunc(motion);
    	glutPassiveMotionFunc(motionPassive);
    	glutEntryFunc(entry);
    
    	if (!init())
    		return 1;
    
    	glutMainLoop();
    
    	return 0;
    }

  2. #2
    Stanley Jobson
    Registriert seit
    08.08.2007
    Beiträge
    740

    Standard

    hmm scheint so als bräuchtest du ne abfrage des maus moves in milisecs oder ähnliches bzw eig

    Code:
    void motionPassive(int x, int y)
    {
       cout << "Mouse moved at "
          << "(" << x << "," << y << ")" << endl;
    }
    halt in einer dauerschleife welche errechnet ob sich X erhöht hat oder veringert hat
    wenn veringern halt Sendkey S oder andersrum Sendkey W.. und so würde ich dann vorgehen

    PS: ich versteh nich wie man mit der maus läuft xD da biste doch die ganze zeit am scheffeln um nach vorne bei nem Ego-shooter zu laufn xD wenn dus hinbekommn hast machn Video davon .. bestimmt lustig

    mfg

  3. #3
    Der `Toastflüsterer` Avatar von AlterHacker
    Registriert seit
    27.09.2008
    Beiträge
    690

    Standard

    Hmm

    Versuchs mal mit GetCursorPos();
    AlsoPseudocode)
    Code:
    int oldx=-1,oldy=-1;
    while(1){
    GetCursorPos(point);
    if(oldx==-1 || oldy==-1){
    oldx = point.x; oldy = point.y;
    continue;
    }
    int x = point.x;
    int y = point.y;
    while(x-->oldx){rechts();Sleep(1);}
    while(x++[list=1]oldy){runter();Sleep(1);}
    while(y++<oldy){hoch();Sleep(1);}
    Sleep(1);
    }
    Für die funktionen rechts, links, runter, hoch lassen sich bestimmt entsprechende WinAPI-Funktionen finden.


    MfG

    Security is an illusion.
    Cheater : 8=o
    Normaluser : 8=======o
    Ich : 8================o

    BM: (4|2|0)

  4. #4
    Anfänger
    Registriert seit
    08.07.2007
    Beiträge
    13

    Standard

    @Darkraiser
    Genau so etwas habe ich versucht mit der while schleife nur das Problem ist dass das obige Programm eine kleine Fläche auf dem Bildschirm generiert so das die Maus nur inerhalb dieser Fläche koordinaten sendet. Leider kommt da auch noch das Problem das die Maus immer wieder in die Mitte dieses Kästchens springen muss damit neue koordinaten generiert werden können, ohne das würde es an ein maximum kommen.

    PS: Hehe, das wär dann nach ner Zeit ein richtiges Muskeltraining wenn ich mit der Maus so rum scheffle, besser als ne Wii X'D

    @AlterHacker
    Danke für den Tipp leider sind meine C++ kentnisse recht mager und eingerostet, müsste schauen ob ich da noch was Programmieren kann. Ich kann mich errinern dass ein Problem auftauchte mit dem integrieren der WinAPI funktionen (hab mal so was ähnliches versucht)

  5. #5
    Der `Toastflüsterer` Avatar von AlterHacker
    Registriert seit
    27.09.2008
    Beiträge
    690

    Standard

    Zitat Zitat von merfen
    @AlterHacker
    Danke für den Tipp leider sind meine C++ kentnisse recht mager und eingerostet, müsste schauen ob ich da noch was Programmieren kann. Ich kann mich errinern dass ein Problem auftauchte mit dem integrieren der WinAPI funktionen (hab mal so was ähnliches versucht)
    Womit Proggste denn? Dev-Cpp? #include <windows.h> && Feddisch

    Security is an illusion.
    Cheater : 8=o
    Normaluser : 8=======o
    Ich : 8================o

    BM: (4|2|0)

  6. #6
    Anfänger
    Registriert seit
    08.07.2007
    Beiträge
    13

    Standard

    Dev-Cpp

    Wenn #include <windows.h> das Problem löst werd ich es mal versuchen übers Wochenende ;D

  7. #7
    Stanley Jobson
    Registriert seit
    08.08.2007
    Beiträge
    740

    Standard

    hmm soweit ich weis, verändert sich der Curser im Background bei Ego-shootern nur minimal aber immerhin .. vllt kann man ja mit dem was anfangen...

    oder vllt ne abfrage der Farbe des Crosshair auf dem Bildschirm wenns sich nach obn bewegt .. solls wieder zurückspringen aber du drückst w oder sonstiges sieht dann zwar so aus als würdest du cheaten, weil dein Crosshair rumzappelt aber vllt klappts

    mfg

  8. #8
    Anfänger
    Registriert seit
    08.07.2007
    Beiträge
    13

    Standard

    So etwas geht schon aber das wird dann eh ne komplizierte Programmiererei mit einschränkungen auf andere Berreiche

  9. #9
    Stanley Jobson
    Registriert seit
    08.08.2007
    Beiträge
    740

    Standard

    hahaha mit der maus so zu laufen ist schon ne einschränkung
    aber ich glaube das Thema schaffst du nur über solche Umwege

    mfg

  10. #10
    Stanley Jobson Avatar von otto
    Registriert seit
    29.12.2006
    Beiträge
    694

    Standard

    YOUTUBE.com
    mach please vid.
    Warum brauchst das denn?
    keine tastatur? ;-D
    Just Failed :>


Seite 1 von 2 12 LetzteLetzte

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •