Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

06.02.2008, 12:37

Spiel läuft, kanns aber nicht erweitern?

Für diejenigen die meinen vorheriges Post nicht gelsen haben. Ich nutze Eclipse mit der C-Erweiterung und cygwin als Compiler.

Das Spiel läuft und ich war dann gleich so motiviert dass ich mich daran gemacht habe es zu erweitern. Ich möchte eine Joystick-Steuerung implementieren aber irgendwie nimmt der Compiler alles was mit SDL zu tun hat nicht mehr an.

hpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
#ifndef JOYSTICK_HPP
#define JOYSTICK_HPP
#include <iostream>
using namespace std;

class CJoystick {
    public:
        bool Init   (int DeviceIndex);
        void Quit   ();
    private:
        SDL_Joystick *m_pJoystick;  // Zeiger auf den Joystick

};
#endif /*JOYSTICK_HPP*/


Seltsamerweise meckert der Compiler schon bei der Headerdatei. Die Zeile die ein SDL_Joystick anlegt behauptet folgendes
  • expected `;' before '*' token
  • ISO C++ forbids declaration of `SDL_Joystick' with no type

Hier mal noch die cpp mit der Definition (der Vollständigkeit halber). Hier gibts einige Fehlermeldungen, was ja logisch ist wenns schon im Header kracht.
Ach ja, Code Completition funktioniert mit der SDL - die nötigen Verzeichnisse und libs sind eingetragen

cpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "Joystick.hpp"

/* Init
 *
 * Aufgabe: Den Joystickport öffnen und den Eventmodus setzen.
 * 
 * Der Parameter gibt den Index an, welcher Joystick geöffnet werden soll.
 * Die Abfrage, ob überhaupt Joysticks vorhanden sind muss für über SDL_NumJoysticks() geprüft werden. 
 */
bool CJoystick::Init(int DeviceIndex)
{
    // Joystickport öffnen

    m_pJoystick = SDL_JoystickOpen(DeviceIndex);
    if(m_pJoystick != NULL){
        // Joysticks sollten über das Eventsystem ausgelsen werden

        // Dieses wird hier aktiviert

        SDL_JoystickEventState(SDL_ENABLE);
        // Ein paar Ausgaben für den Test

        cout << "Name des Joysticks: " << SDL_JoystickName(0) << endl;  
    }
    else
        cout << "Couldn't open Joystick " << DeviceIndex << endl;
}// Init


/* Quit
 *
 * Aufgabe: Joystickport wieder schließen. 
 */
void CJoystick::Quit()
{
    // Joystickport wieder schließen

    if(m_pJoystick != NULL)
        SDL_JoystickClose(m_pJoystick);
}// Quit


Ich habs gestern Nacht bis 1 Uhr versucht, aber keine Fehler/Lösung gefunden.

Danke

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

2

06.02.2008, 12:53

Musst du net SDL erstmal includen ?

3

06.02.2008, 13:00

Das wurde ja schon über die Projekteigenschaften gemacht.

Die Headerdateien aus dem Buch includen diese auch nicht separat. Also bei den Projekteigenschaften habe ich die includes (also alle SDL-Header) dem Compiler mitgeteilt und alle libs dem Linker.

Ich habs grad nochmal probiert, indem ich meine Joystick Dateien und alle aufrufe rausgeschmissen hab. Es funktioniert! Aber ich finde einfach keinen Fehler in meiner Erweiterung.

4

06.02.2008, 13:12

Bei den Beispieldateien wird die SDL.h auch inkludiert. ;)

5

06.02.2008, 13:21

Zitat von »"Luinechor"«

Bei den Beispieldateien wird die SDL.h auch inkludiert. ;)


Ups, ich sehs auch grad...aber nur beim Timer. Alle anderen machen das nicht?

Werbeanzeige