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

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

21

17.01.2009, 14:40

Zitat von »"Nexus"«

Wo speicherst du denn das Bild, nachdem es geladen ist? Und du hast demnach ein Sprite pro Datei?

Denk einfach dran, dass das Hantieren mit sf::Image eine schwerwiegende Operation ist. Die Images solltest du wenn möglich zu Beginn laden und dann nicht mehr gross manipulieren...


Ja stimmt da hast du schon recht. Habe jetzt mal an eine Klassenstruktur gedacht, die einen Vektor von Images hält und erstmal überprüft ob das Bild schonmal geladen wurde. Dann könnte ich in die Klasse noch ne überladene Funktion CreateSpriteFromFile machen, die als weitere Parameter die Position und Größe des Sprites erhält. So könnte man dann auch TileSets laden.

Jemand Einwände? :D

22

17.01.2009, 15:06

Statt eines std::vectors könntest du auch ein std::set verwenden, dann musst du nicht prüfen, ob das Bild schon vorkommt, und kannst ein Bild auch schneller finden. :)

Aber lädst du dann während des Programmablaufs ständig wieder neue Bilder? Ich mach das einfach bei Programmstart und nehme dann Sprites, die auf Teile (SubRects) der Images zugreifen...

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

23

17.01.2009, 15:12

Naja ich wollte mal sowas im Stil von Zelda (2D) probieren. Es werden also im Laufe des Spiels verschiedene Karten geladen (die wahrscheinlich unterschiedliche Tilesets benutzen). War mir nicht sicher ob es dann so klug ist alle Images direkt zu Beginn zu laden. Aber selbst wenn ich alles am Anfang lade müsste das ja mit meiner Klassenstruktur funktionieren.

24

17.01.2009, 17:57

Okay, dann kann es schon Sinn machen. Einfach nicht, wenn man dauernd für einzelne Sprites neue Images lädt... ;)

Vielleicht kannst du die Bilder auch wieder löschen, wenn sie nicht mehr benötigt werden.

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

25

17.01.2009, 18:24

Jo klar, das Löschen sollte dann auch ziemlich einfach sein ;)

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

26

17.01.2009, 20:48

nächstes Problem mein player dreht sich nur um 90° hat jm. antwort.... hier mal code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
     xx   = g_pVerwaltung->GetApp()->GetInput().GetMouseX();
     xy   = g_pVerwaltung->GetApp()->GetInput().GetMouseY();
     xxx = m_pSpritePlayer->GetSprite()->GetPosition().x;
     xxy = m_pSpritePlayer->GetSprite()->GetPosition().y;

    rotatex = xx - xxx;
    rotatey = xy - xxy;
    result = atan2 (rotatey,rotatex)* 180/ Pi;
    


    m_pSpritePlayer->Rotate(result);


is grad ein bisschen umständlich gemacht aber is ja nur test
New Project: Operation CityRacer

27

17.01.2009, 20:52

rechnest du mit integern oder mit floats? bei integern gehen sämtliche nachkommastellen verloren, was natürilch zu fehlern führen kann.

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

28

17.01.2009, 20:57

float
New Project: Operation CityRacer

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

29

17.01.2009, 21:39

Zitat von »"Nexxtron"«

Quellcode

1
    result = atan2 (rotatey,rotatex)* 180/ Pi;



Versuch mal 180.f bzw 180.0.

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

30

17.01.2009, 23:33

K-bal ging auch nicht
New Project: Operation CityRacer

Werbeanzeige