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

FreezingEngine

Treue Seele

  • »FreezingEngine« ist der Autor dieses Themas

Beiträge: 280

Wohnort: NRW

Beruf: Schüler

  • Private Nachricht senden

1

22.06.2011, 21:42

[C++] SFML Klasse in main includen

Hi :)

hab ein kleines Problem, undzwar hab ich mir eine Spieler Klasse geschrieben und diese in eine hpp und eine cpp datei aufgeteilt.
das einfügen der spieler.hpp in die spieler.cpp ist kein Problem allerdings mekert der Compiler wenn ich die spieler.hpp in die main einfügen möchte.
Hier mal meine Codes.


Spieler.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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <SFML\Graphics.hpp>
#include "Spieler.hpp"



class Spieler 
{

private:

    //Char werte
    int iLeben;
    int iKraft;
    int iSchild;

    //bool für leben und image laden
    bool bAlive;

    //Image
    sf::Image Image;

    //Sprites
    sf::Sprite Sprite;

public:


    void init()
    {
        //Image laden
        Image.LoadFromFile("fly.png");
        Image.CreateMaskFromColor(sf::Color(255,255,255));

        //Image an Sprite geben
        Sprite.SetImage(Image);
        Sprite.SetScale(0.2,0.2);

        //Werte initialisieren
        iLeben = 100;
        iKraft = 50;
        iSchild = 100;
        bAlive = true;
    }

    void move(const sf::Input& Input)
    {
        Sprite.SetPosition(Input.GetMouseX()-25,Input.GetMouseY()-25);
    }

    void render(sf::RenderWindow &App)
    {
        App.ShowMouseCursor(false);

        if(bAlive == true)
        {
        App.Draw(Sprite);
        }
    }

};



spieler.hpp :

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
#include <SFML\Graphics.hpp>


class Spieler
{
private:

    //Char werte
    int iLeben;
    int iKraft;
    int iSchild;

    //bool für leben und image laden
    bool bAlive;

    //Image
    static sf::Image Image;

    //Sprites
    sf::Sprite Sprite;

public:


    void init();

    void move(const sf::Input& Input);

    void render(sf::RenderWindow &App);


};




und zum Schluss die main :

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//Includes


#include <SFML\Graphics.hpp>
#include <iostream>
#include "Spieler.hpp"

using namespace std;





//Variabeln & Events
sf::Event Event;




int main()
{

    //Fenster
    sf::RenderWindow App(sf::VideoMode(1366, 768, 32), "Klassen Test",sf::Style::Fullscreen);
    App.SetFramerateLimit(150); 

    //Input
    const sf::Input& Input = App.GetInput();

    //Spieler initialisieren
    Spieler Marcel;
    Marcel.init();



        


    while (App.IsOpened())
    {


        while (App.GetEvent(Event))
        {
            // Fenster geschlossen -> Programm beenden
            if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
            {
                App.Close();
            }

        }

        //Class Spieler bewegen
        Marcel.bewegen(Input);

        App.Clear(sf::Color(190,190,190,1));

        //Class Spieler zeichnen
        Marcel.render(App);

        App.Display();

    }

    return 0;
}



Danke im vofeld.


MfG Marcel
"He who sacrifices freedom for security deserves neither."
Benjamin Franklin

2

22.06.2011, 21:49

Was sagt denn der Compiler?

3

22.06.2011, 21:52

Ich würde sagen du solltest erst mal C++ lernen bevor du dir die SFML anschaust ;)
Du kannst doch nicht eine Klasse doppelt deklarieren.
In der *.cpp werden die Methoden nur definiert ;)

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

4

22.06.2011, 21:54

Warum rät ihm eig. keiner von init Methoden ab? o.O
Benutz Konstruktoren, die haben schon ihre Daseins Berechtigung.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

5

23.06.2011, 12:50

Include-Guards sollte man bei der Klassendeklaration auch nicht weglassen!
Da fehlt einiges an Grundlagenverständnis!

Werbeanzeige