Guten Abend
Ich habe meinen ersten Versuch gestartet am Game eine "kleine Erweiterung" zu versuchen. Ich habe hinbekommen, dass es beim Auftreffen
des Schusses auf den Asteroiden eine kleine Explosion gibt (leider nur ein Bild, irgendwie hat es nicht anders geklappt).
Nun ich wollte gerne eure Meinung erfragen, ob ich hier etwas vollständig verdrehtes gemacht habe oder nicht. Danke für eure Meinungen.
Game.cpp
// Sprite für Explosion laden
m_pSpriteExplosion = new CSprite;
m_pSpriteExplosion->Load ("/Volumes/Mason/Hobbies/Cplusplus/SDLGame/SDLGame/Explosion.bmp", 1, 64, 64);
m_pSpriteExplosion->SetColorKey (255, 0, 255);
Game.cpp
// Ja, also gab es eine Kollision. Somit Schuss und
// Asteroid deaktivieren und Explosion anzeigen
ItAsteroid->SetAlive (false);
ItShot->SetAlive (false);
CExplosion Explosion;
Explosion.Init(m_pSpriteExplosion, RectAsteroid.x, RectAsteroid.y);
Explosion.Render();
Explosion.hpp
#ifndef EXPLOSION_HPP
#define EXPLOSION_HPP
#include "Sprite.hpp"
class CExplosion
{
public:
void Init (CSprite *pSpriteExplosion, float x, float y);
void Render ();
SDL_Rect GetRect () {return m_Rect;}
private:
CSprite *m_pSpriteExplosion; // Zeiger auf Explosion-Sprite
float m_fXPos; // X-Position der Explosion
float m_fYPos; // Y-Position der Explosion
SDL_Rect m_Rect; // Rect der Explosion
};
#endif
Explosion.cpp
#include "Explosion.hpp"
void CExplosion::Init (CSprite *pSpriteExplosion, float x, float y)
{
// Zeiger auf Sprite kopieren und Koordinaten setzen
m_pSpriteExplosion = pSpriteExplosion;
m_fXPos = x;
m_fYPos = y;
// Rect initialisieren
m_Rect.x = pSpriteExplosion->GetRect().x;
m_Rect.y = pSpriteExplosion->GetRect().y;
m_Rect.w = pSpriteExplosion->GetRect().w;
m_Rect.h = pSpriteExplosion->GetRect().h;
} // Init
// Render
void CExplosion::Render ()
{
m_pSpriteExplosion->SetPos (m_fXPos, m_fYPos);
m_pSpriteExplosion->Render();
} // Render