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

31

26.12.2015, 14:55

Und m_tilemap ist eine std::map oder was ist das?

Nein, das ist deine Tilemap Klasse.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

32

30.12.2015, 11:32

Hab gestern und heute nochmal an der Tilemap geschraubt, aber irgendwie komme ich nicht klar. Ich kann zwar eine Map darstllen und das habe ich auch verstanden, aber irgendwie hängt es grade. Ich hab nochmal die .cpp und .hpp angehangen. Irgendwie hab ich das Konzept oder den Aufbau nicht ganz verstanden. Könnt ihr es mir nochmal erklären? Danke :)
»cojo2015« hat folgende Dateien angehängt:
  • Tilemap.cpp (3,39 kB - 54 mal heruntergeladen - zuletzt: 06.04.2024, 06:03)
  • Tilemap.hpp (720 Byte - 43 mal heruntergeladen - zuletzt: 25.04.2024, 12:25)

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

33

30.12.2015, 11:48

Sieht doch soweit ganz ok aus. Vielleicht hilft dir auch die Tatsache, dass du Abhängigkeiten immer möglichst nur in eine Richtung haben solltest, wie es die anderen dir schon klar machen wollten. Das bedeutet, mach dir doch erstmal unabhängig von dem PlayState Gedanken über deine Tilemap-Klasse. Was soll die können? Ein Level laden und darstellen. Und das hast du soweit sogar meiner Meinung nach korrekt gemacht, denn du hast eine load() Methode und eine draw()-Methode zum zeichnen. Das sind die essenziellen Fähigkeiten deiner Klasse. Damit würde ich an start gehen und versuchen, ein Objekt von Typ Tilemap zu erstellen, ein Level aus Datei zu laden und darzustellen.
Danach kannst du dir weitere Fähigkeiten überlegen, die deine Tilemap-Klasse bereitstellen soll. mi fällt tatsächlich nur eine Kollisionsmethode ein, oder um eine Position auf der Tilemap in Pixelkoordinaten umzurechnen, um Figuren drauf zu platzieren usw.
Und wie du vielleicht gemerkt hast: hierbei habe ich nicht wirklich was zum PlayState gesagt, weil der der Tilemap total egal sein kann. Was soll er denn damit? ;)

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

34

31.12.2015, 09:13

Schon mal vielen Dank für die ausführliche Antwort :thumbsup:
Aber leider bekomme ich diese Fehlermeldung (Anhang), wenn ich diesen Code ausführe:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
// Datei: PlayState.cpp
// Methode: PlayState::PlayState(Game &game) -> Konstruktor

// ...
//set the background
mBackground.setTexture(game.R_Manager->getTexture(RessourceManager::Textures::PLAY_BACKGROUND));
mBackground.setScale(3.5f, 3.5f);

//load the map
map->read(MAP_FILE_PATH);
map->load(game, 32, 32, 16);

// ...


Sobald ich die Map-Methoden auskommentiere, klappt alles wunderbar :(
»cojo2015« hat folgendes Bild angehängt:
  • Unbenannt.PNG

35

31.12.2015, 13:35

Du solltest so langsam mal anfangen deinen Code selber zu debuggen!

Sobald ich die Map-Methoden auskommentiere, klappt alles wunderbar
Das liegt wohl daran, dass sich der Fehler in einer der beiden Methoden verbirgt.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

36

31.12.2015, 15:12

Lass dir mal den Stacktrace anzeigen, der steht meistens unten rechts. Map ist wahrscheinlich ein nullptr oder einfach nicht initialisiert.

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

37

01.01.2016, 09:59

Map ist wahrscheinlich ein nullptr oder einfach nicht initialisiert.

Hast recht :dash: Mal so ein typischer Fehler von mir :crazy:

EDIT: Aber wie bekomme ich es jetzt hin, dass die Map auch gerendert wird? Weil die draw-Methode kann ich ja nicht aufrufen, weil die private und virtual ist...

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

38

01.01.2016, 10:05

Hast recht Mal so ein typischer Fehler von mir
Da frage ich mich natürlich, warum die Map überhaupt per "new" und als Pointer verwendet wird statt als simple Instanz und ob das wirklich notwendig ist.

Weil die draw-Methode kann ich ja nicht aufrufen, weil die private und virtual ist...
Dann ist sie wohl nicht passend für Deinen Zweck deklariert, meinst Du nicht? Wieso genau hast Du sie denn private gemacht? Zumal sie im sf::Drawable-Interface ja ursprünglich mal public war.
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]

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

39

01.01.2016, 10:16

Dann ist sie wohl nicht passend für Deinen Zweck deklariert, meinst Du nicht?

Die Methode habe ich aber von der SFML-Website und dort wird sie zwischen window.clear() und window.display() gerendert.

Das habe ich bei mir in void PlayState::Render(sf::RenderWindow &App) gemacht:

C-/C++-Quelltext

1
2
3
4
5
6
void PlayState::Render(sf::RenderWindow & App)
{
    App.draw(mBackground);
    App.draw(map);
    player.Render(App);
}

Und meine .txt-Datei ist auch gefüllt. So, dass es funktionieren müsste. Kann es sein, dass noch etwas fehlt in der Read-Methode? Ich sende einfach nochmal die ganze Tilemapklasse, damit ich nicht immer die Codeasuschnitte posten muss. Ich hoffe das ist ok :)
»cojo2015« hat folgende Dateien angehängt:
  • Tilemap.hpp (720 Byte - 40 mal heruntergeladen - zuletzt: Gestern, 02:34)
  • Tilemap.cpp (3,38 kB - 37 mal heruntergeladen - zuletzt: Gestern, 18:29)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

40

01.01.2016, 11:53

Na und das Problem ist nun welches? Mal von der Inkonsistenz (App.draw(map) vs player.Render(App)) abgesehen.
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]

Werbeanzeige