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

11

05.02.2010, 09:09

Mag sein, aber der erste bei dem ichs verstandne habe. ;)

Ich möchte aber nich alle Ressourcen im Konstruktor laden. Die Level z.B. lade ich aus einer xml-datei. Die einzelnen Objekte haben ein img-Attribut und anhand dessen sollen die Bilder vergeben werden. Mit den Sounds funktioniert das vielleicht noch. Sobald ich allerdings die Bilder nutzen möchte wäre es besser die Bilder dynamisch zu laden.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

12

05.02.2010, 09:26

dann schreibst du dir ne funktion der du den datei-/levelnamen übergibst.

sollte das problem auch beim singleton auftauchen dann wird das image wohl von der sfml gelöscht bevor dein resourcenmanager dazu kommt.
wie wärs die images frei zu geben wenn das level verlassen wird(im destruktor und wenn ein neues level geladen wird)?
die images werden ja sowieso in jedem einzelnen level geladen, also gehört da auch die zerstörung hin.
"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?

13

05.02.2010, 11:59

Okay.
Die Heap Verletzung erscheint nur wenn ich ein Sprite in Intro erstelle.

Mit dieser main.cpp habe ich kein Problem.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include "global.hpp"

Application App;

int main()
{
    App.GetImageManager().Load("logo.png");
    sf::Sprite test(App.GetImageManager()["logo.png"]);
    while(App.GetWindow().IsOpened())
    {
        
        App.input();

        //app.GetWindow().Clear();

        App.GetWindow().Draw(test);
        App.render();
    }
}


Vielleicht kann mir ja jemand den Unterschied sagen.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

14

05.02.2010, 12:05

ich würd mal gerne deine gamestate klasse sehen von der intro erbt.
"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?

15

05.02.2010, 16:24

Natürlich.

Hier:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef GAMESTATE_HPP
#define GAMESTATE_HPP

class GameState
{
public:
    GameState() {};
    ~GameState() {};

    virtual void input() = 0;
    virtual void logic() = 0;
    virtual void render() = 0;
};

#endif

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

16

05.02.2010, 17:00

wenn eine klasse nur eine virtuelle methode hat sollte der destruktor auch virtuell sein. ;) wenn nicht wird der destruktor von intro nicht aufgrufen.
daran liegt es aber bestimmt nicht.

wenn du virtuelle methoden in der abgeleiteten klasse überschreibst ist es besser wenn du vor den neuen auch virtual schreibst damit man sofort sieht dass sie virtuell ist.

das wär auch was für dich: http://www.amazon.de/Effektiv-C-programm…s/dp/3827322979
"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?

17

05.02.2010, 17:03

Ich würd dich küssen, wenn du nicht nachoMan wärst. Dein virtual Destruktor wars.

Ich dachte es wäre wie beim Konstruktor. Solange passende Parameter wird auch der aufgerufen.

Danke schön. :D

18

05.02.2010, 17:20

Trotzdem würde ich von globalen Variablen wegkommen. Schreibfaulheit ist nämlich eine sehr schlechte Rechtfertigung, und du handelst dir besonders bei grösseren Projekten etliche unnötige Probleme ein.

P.S. Singletons sind auch globale Variablen (auch wenn sie einen Teil der Probleme umgehen).

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

19

05.02.2010, 17:34

Zitat von »"Nexus"«

P.S. Singletons sind auch globale Variablen (auch wenn sie einen Teil der Probleme umgehen).


ja klar. das große vorteil an singletons ist, dass man sicherstellt, dass nur eine instanz der klasse erstellt wird. wenn man die idee richtig umsetzt ist es recht sicher. auch hier gilt, dass man lernen muss zu entscheiden wann man es nutzen kann/sollte.
"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?

20

05.02.2010, 19:18

Globale Variablen habe ich ja net mehr. Nur noch das Application-Objekt liegt im Global Scope.

Zum Buch: Leider mangelt es mir am Geld. Ich versuche mich so weit wie möglich ohne Bücher durchzuschlagen. Das klappt bisher auch ganz gut. Leider wird das wohl nicht immer so laufen.

Trotzdem danke für die Hilfe. :)

Werbeanzeige