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

Raidenkk

Treue Seele

  • »Raidenkk« ist der Autor dieses Themas

Beiträge: 151

Wohnort: Bergkamen/Oberaden

Beruf: Multimedia Informatik

  • Private Nachricht senden

1

14.02.2012, 06:46

Image in einer Klasse nur ein mal Laden

Hey,
ich hänge derzeit an dem Problem fest das mein Image für eine Kugel pro Kugel geladen wird.
Jetzt habe ich ein wenig nachgeschaut und bin auf dem befehl #ifndef gekommen.
Ich habe ein wenig rumprobiert und nachgeschlagen, doch auf der Folgende Seite sehe ich in der Definierung nur include funktioniert das nicht auch direkt mit Images?

Beispiel:

C-/C++-Quelltext

1
2
3
4
// Beispiel!
        #ifndef m_Image_Ball_Yellow
            sf::Image m_Image_Ball_Yellow;
        #endif


PS:
Habe leider mein Buch nicht hier sonst würde ich nachschlagen :X

MFG:
Raidenkk/ Kevin

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Raidenkk« (14.02.2012, 06:53)


Saik0

Treue Seele

Beiträge: 171

Beruf: Anwendungsentwickler

  • Private Nachricht senden

2

14.02.2012, 10:33

Für so einen Fall habe ich die Preprozessor nie verwendet. Du könntest dir aber eine Ressourcen Klasse schreiben, welche am Anfang deines Spiels alle benötigten Bilder läd und diese z.B in einem Vector hält. Beim Erzeugen einer Kugel kannst du dann das passende Bild aus deinem Vector suchen und deiner Kugel zu weißen.

Raidenkk

Treue Seele

  • »Raidenkk« ist der Autor dieses Themas

Beiträge: 151

Wohnort: Bergkamen/Oberaden

Beruf: Multimedia Informatik

  • Private Nachricht senden

3

14.02.2012, 11:15

Ich finde das klingt nach einer brauchbaren Idee doch leider habe ich ein wenig Realisierung Probleme.
Derzeit schaut meine Klasse wie folgt aus:

.hpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
class CRessorcen
{
    private:
        std::vector<sf::Image> m_vImages;
        std::vector<sf::Image>::iterator i;
        sf::Image m_Image_Ball_Yellow;

    public:
        CRessorcen ();
        sf::Image GetImage (int Image_ID) {return m_vImages.at(Image_ID);}
};


.cpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
#include <SFML/Graphics.hpp>
#include <vector>
#include "CRessorcen.hpp"

CRessorcen::CRessorcen ()
{
    m_Image_Ball_Yellow.LoadFromFile ("gfx/Balls/Yellow.png");
    m_vImages.push_back (m_Image_Ball_Yellow);
}

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

14.02.2012, 11:39

Du willst bei GetImage() wohl ziemlich sicher eine Referenz zurückgeben und keine Kopie ;)

Raidenkk

Treue Seele

  • »Raidenkk« ist der Autor dieses Themas

Beiträge: 151

Wohnort: Bergkamen/Oberaden

Beruf: Multimedia Informatik

  • Private Nachricht senden

5

14.02.2012, 13:08

Ich hoffe das es so richtig ist.

C-/C++-Quelltext

1
sf::Image &GetImage (int Image_ID) {return m_vImages.at(Image_ID);}

valentin

Treue Seele

Beiträge: 212

Wohnort: Schweiz

Beruf: Schüler

  • Private Nachricht senden

6

14.02.2012, 17:21

Wahrscheinlich stehe ich atm mal wieder auf dem Schlauch, aber wieso willst du extra ne Ressourcen-Klasse schreiben? Ich seh den Grund nicht, warum man nicht einfach static benutzen sollte.

Designtechnische Gründe?
visit me on deviantArt!
http://v-alentin.deviantart.com/

There is no programming language, no matter how structured, that will prevent programmers from making bad programs. //Larry Flon

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

7

14.02.2012, 17:35

Weil das nicht gerade schön ist. Ausserdem könnte man auch von woanders auf die Textur zugreifen, um z.B. eine Vorschau aufs die nächsten Bälle geben zu können oder so.

@Raidenkk: Ruf lieber erst push_back auf und lade dann das Image beim letzten Element im Vector. Dann muss nicht so viel rumkopiert werden.
Der Iterator sollte nicht Klassenmember sein.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

14.02.2012, 17:38

Wahrscheinlich stehe ich atm mal wieder auf dem Schlauch, aber wieso willst du extra ne Ressourcen-Klasse schreiben? Ich seh den Grund nicht, warum man nicht einfach static benutzen sollte.

ARGH! Man sollte Statics schon allein deshalb nicht verwenden, weil man damit erfahrene Entwickler zum Kreischen bringt. Für Anfänger kann man eine ganz simple Daumenregel einführen: Finger weg von Static, Singletons und globalen Variablen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Raidenkk

Treue Seele

  • »Raidenkk« ist der Autor dieses Themas

Beiträge: 151

Wohnort: Bergkamen/Oberaden

Beruf: Multimedia Informatik

  • Private Nachricht senden

9

14.02.2012, 17:58

Danke für die schnelle Info globale variablen habe ich mir seit c++ nie angeeignet ^^.
Ich werde es weiterhin mit meiner Klasse versuchen und verweile auf weiteres.

valentin

Treue Seele

Beiträge: 212

Wohnort: Schweiz

Beruf: Schüler

  • Private Nachricht senden

10

14.02.2012, 23:56

Wahrscheinlich stehe ich atm mal wieder auf dem Schlauch, aber wieso willst du extra ne Ressourcen-Klasse schreiben? Ich seh den Grund nicht, warum man nicht einfach static benutzen sollte.

ARGH! Man sollte Statics schon allein deshalb nicht verwenden, weil man damit erfahrene Entwickler zum Kreischen bringt. Für Anfänger kann man eine ganz simple Daumenregel einführen: Finger weg von Static, Singletons und globalen Variablen.


Dann habe ich wieder was gelernt :).
Tut mir leid für den falschen Ratschlag, und danke für die Korrektion, BlueCobold.
visit me on deviantArt!
http://v-alentin.deviantart.com/

There is no programming language, no matter how structured, that will prevent programmers from making bad programs. //Larry Flon

Werbeanzeige