JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Struckturen Problem

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Mr.Matze
Mini JLI'ler


Alter: 32
Anmeldedatum: 05.07.2006
Beiträge: 27
Wohnort: Neustadt a. d. Weinstraße
Medaillen: Keine

BeitragVerfasst am: 10.11.2006, 18:09    Titel: Struckturen Problem Antworten mit Zitat

Hi!

Ich hab ein Problem mit einer Strucktur und das sieht so aus:

Ich habe ein kleine einfach Strucktur
CPP:
#ifndef _SMouse_Data_
#define _SMouse_Data_

struct SMouse_Data
{

   int x_pos, y_pos;

};

#endif


Das mit dem ifned hab ich gemacht da ich 2mal die Strucktur mit include in verschiedenen Dateien einbiende und der Fehler mit der Neudekleration nicht kommt.

Ich übergebe den Zeiger auf die Strucktur meiner InputManager-Klasse, die dort Werte verändert. Die Werte benutze ich im Mainprogramm um einen Text an einer Stelle anzuzeigen. Seltsamerweiße kann ich die Werte im Main-Programm nicht ändern.
CPP:
#include "test\SMouse_Data.cpp"
#include "Inputmanager.h"


SMouse_Data Mouse_Data;

/*

Wenn ich hier z.B. schreibe
Mouse_Data.x_pos = 100;
kommen folgende Fehler
F:\Eigene Programme\C++\GameShell\Gameshell.cpp(24) : error C2143: Syntaxfehler : Fehlendes ';' vor '.'
F:\Eigene Programme\C++\GameShell\Gameshell.cpp(24) : error C2501: 'Mouse_Data' : Fehlende Speicherklasse oder Typbezeichner
F:\Eigene Programme\C++\GameShell\Gameshell.cpp(24) : error C2371: 'Mouse_Data' : Neudefinition; unterschiedliche Basistypen
        F:\Eigene Programme\C++\GameShell\Gameshell.cpp(22) : Siehe Deklaration von 'Mouse_Data'
F:\Eigene Programme\C++\GameShell\Gameshell.cpp(24) : error C2143: Syntaxfehler : Fehlendes ';' vor '.'

*/


CDirectX Direct3D;
CInputManager InputManager(&Mouse_Data);


Wenn ich die Maus bewege ändert sich die Position auch nicht. Ich glaub nicht,d ass ich die Maus falsch initialisiert habe:
CPP:
CInputManager::CInputManager(SMouse_Data* Mouse_Data)
{
   
   m_D3DInputDevice   = NULL;
   m_Keyboard         = NULL;
   m_Mouse            = NULL;       
   m_Joystick         = NULL;
   m_SMouse         = Mouse_Data;

}

BOOL CInputManager::Init(HWND hWnd,HINSTANCE hInst)
{
   
   /*
   ---------------------------------------------------------------------------
   Frei konfirgurierbar
   ---------------------------------------------------------------------------

   FILE* pfile;

    if((pfile = fopen("SpielsteuerungsConfig.txt","r")) != NULL)
   { 
      fscanf(pfile,"%d", &AKTION_JOYSTICKBUTTON_NR[0]);
      fscanf(pfile,"%s", strBuffer  );
      fscanf(pfile,"%d", &AKTION_JOYSTICKBUTTON_NR[1]);
      fscanf(pfile,"%s", strBuffer  );
      fscanf(pfile,"%d", &AKTION_JOYSTICKBUTTON_NR[2]);
      fscanf(pfile,"%s", strBuffer  );
      fscanf(pfile,"%d", &AKTION_TASTE[0]);
      fscanf(pfile,"%s", strBuffer  );
      fscanf(pfile,"%d", &AKTION_TASTE[1]);
      fscanf(pfile,"%s", strBuffer  );
      fscanf(pfile,"%d", &AKTION_TASTE[2]);
      fscanf(pfile,"%s", strBuffer  );

      fclose(pfile);
   }

  ------------------------------------------------------------------------------------

  */


   // DirectInput-Objekt erzeugen
    if(FAILED(DirectInput8Create( hInst, DIRECTINPUT_VERSION,
                        IID_IDirectInput8, (VOID**)&m_D3DInputDevice, NULL ) ))
        return FALSE;
 
    // Keyboard, Maus und Joystick initialisieren
   if(InitMouse(hWnd) == S_FALSE)
        return FALSE;
   /*
   if((InitKeyboard(hWnd) == S_FALSE)
        return FALSE;
   if(InitJoystick(hWnd) == S_FALSE)
    {
        Joystick_Enabled = FALSE;
    }
   */

   
    return TRUE;
}

HRESULT CInputManager::InitMouse(HWND hWnd)
{
   // Maus-Objekt erzeugen
    m_D3DInputDevice->CreateDevice( GUID_SysMouse, &m_Mouse, NULL ) ;


    // Message Box anzeigen, wenn keine Maus initialisiert werden
    // konnte
    if(NULL == m_Mouse)
    {
        MessageBox(hWnd, "Es wurde keine Maus gefunden",
                   "", MB_ICONERROR | MB_OK);
        return S_FALSE;
    }


   // Datenformat festlegen
    m_Mouse->SetDataFormat(&c_dfDIMouse) ;

    // festlegen, wie DirectInput Zugriff auf das Gerät erhält
   m_Mouse->SetCooperativeLevel(hWnd,DISCL_FOREGROUND | DISCL_EXCLUSIVE);
       
    // akquirieren des Gerätes
    m_Mouse->Acquire();

   return S_OK;
   
}

void CInputManager::GetMouseInput(void)
{
    DWORD NumElements = 1;
    DIDEVICEOBJECTDATA data;
    ZeroMemory(&data,sizeof(data));

    if(FAILED(m_Mouse->GetDeviceData(sizeof(data),&data,&NumElements,0)))
    {
        // die Mouse wurde zwischenzeitlich
        // von einer andere Anwendung genutzt
        // Kontrolle wiederholen
        m_Mouse->Acquire();
       
    }

   
    int Movement = data.dwData;

    // bestimmen, in welche Richtung die Mouse bewegt wurde
    // und ob eine Mouse-Taste gedrückt wurde
    switch(data.dwOfs)
    {
        case DIMOFS_X:           
                if(Movement < 0)
                {
                    m_SMouse->x_pos -= 2;
                }
                else if(Movement > 0)
                {
                    m_SMouse->x_pos += 2;
                }               
            break;

        case DIMOFS_Y:
                if(Movement < 0)
                {
                    m_SMouse->y_pos -= 2;
                }
                else if(Movement > 0)
                {
                    m_SMouse->y_pos += 2;
                }                           
            break;
      
        case DIMOFS_BUTTON0:
         
         PostQuitMessage(0);
            break;

   }
   
}


In der Main mit der Textanzeige sieht das so aus:
CPP:
         InputManager.GetMouseInput();
         
         Direct3D.BeginScene();

         Direct3D.SetFont("Comic Sans MS");
         Direct3D.DrawText("Hi Matze",Mouse_Data.x_pos,Mouse_Data.y_pos,D3DCOLOR_XRGB(0xFF,0,0));

         Direct3D.SetFont("Arial");
         Direct3D.DrawText("Hi Computer",150,150,D3DCOLOR_XRGB(0xFF,0,0));

         Direct3D.EndScene();


Ich hoffe ihr könnt mir helfen, denn ich weiß nicht weiter.

Grüße
Matze
_________________
Bitte besucht meine Webiste:
www.m-soft.de.tp
www.der-sternschnuppen-gruss.de.tp
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
The Lord of Programming
Living Legend


Alter: 36
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 10.11.2006, 18:15    Titel: Antworten mit Zitat

Mr.Matze hat Folgendes geschrieben:
#include "test\SMouse_Data.cpp"


...versuch mal, den Code in eine .h-Datei zu machen. CPPs sind für Code gedacht, nicht für Headerinhalte, die du hinterher per include einbindest. Wink

Übrigens, Struktur schreibt man ohne c Wink
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr.Matze
Mini JLI'ler


Alter: 32
Anmeldedatum: 05.07.2006
Beiträge: 27
Wohnort: Neustadt a. d. Weinstraße
Medaillen: Keine

BeitragVerfasst am: 10.11.2006, 18:38    Titel: Antworten mit Zitat

Erstma danke, aber das hat leider nix geholfen.

Grüße
_________________
Bitte besucht meine Webiste:
www.m-soft.de.tp
www.der-sternschnuppen-gruss.de.tp
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
The Lord of Programming
Living Legend


Alter: 36
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 10.11.2006, 18:42    Titel: Antworten mit Zitat

Was noch sein könnte (und was mich wundert, dass der Compiler da nicht schon meckert):

Für Pfade entweder / oder \\. Ein einfacher Backslash bildet mit dem folgenden Zeichen ein Steuerzeichen. Also dürfte er SMouse_Data.cpp im Ordner "test" kaum erreichen können Wink
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr.Matze
Mini JLI'ler


Alter: 32
Anmeldedatum: 05.07.2006
Beiträge: 27
Wohnort: Neustadt a. d. Weinstraße
Medaillen: Keine

BeitragVerfasst am: 10.11.2006, 18:46    Titel: Antworten mit Zitat

Ne hat auch net geholfen ^^
_________________
Bitte besucht meine Webiste:
www.m-soft.de.tp
www.der-sternschnuppen-gruss.de.tp
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
The Lord of Programming
Living Legend


Alter: 36
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 10.11.2006, 19:11    Titel: Antworten mit Zitat

Ah, moment...
Schreibst du das "Mouse_Data.x_pos = 100;" direkt unter die Erstellung deines SMouse_Data-Objekts?

Sowas musst du "in den Code rein" schreiben. Das darf nicht irgendwo frei herumschweben. Entweder du schreibst das in eine InitProgramme()-Funktion (o.ä.) oder - am elegantesten - du setzt den Wert für x_pos im Konstruktor der Struktur fest.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mr.Matze
Mini JLI'ler


Alter: 32
Anmeldedatum: 05.07.2006
Beiträge: 27
Wohnort: Neustadt a. d. Weinstraße
Medaillen: Keine

BeitragVerfasst am: 10.11.2006, 19:31    Titel: Antworten mit Zitat

Stimmt du hast Recht, das hat geklappt, aber die Position ändert sich immer noch net, wenn ich die Maus bewege.

Danke schonmal

Grüße
Matze
_________________
Bitte besucht meine Webiste:
www.m-soft.de.tp
www.der-sternschnuppen-gruss.de.tp
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung 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