Dann werde ich das mit dem Erben von Drawable mal ausprobieren hoert sich fuer mich eigentlich ganz praktisch an.
Ich habe gestern Abend nun noch weiter am Quellcode gearbeitet und bin nun soweit, dass ich jetzt die Spieler und Schuss Klasse fertig habe.
Schaut jetzt so aus, dass ich in der Spieler Klasse eine Liste von der Schuss Klasse erzeuge und diese dann immer fuelle, wenn ich die Render Funktion von Spieler aufrufe.
Als naechstes muss ich dann noch eine Ziel bzw. Gegner Klasse machen und dann noch eine Game Klasse, in der ich dann pruefe, ob eine Kollision stattfand.
In meiner Spielerklasse habe ich etwas gemacht, was fuer mich sehr merkwuerdig ausschaut und ich denke nicht, dass dies der richtige Weg sein wird.
Die Wurde_Geschossen () Funktion sieht in etwa so aus:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
if ( sf::Keyboard::isKeyPressed ( sf::Keyboard::Space ) && Schussaktiv == false)
{
Schussaktiv = true;
Schuss_Temp = new sf::RectangleShape ( sf::Vector2f ( 4, 15 ) );
Schuss_Temp->setPosition( Spieler.getPosition ().x + 25, 550 );
Schuss_Temp->setFillColor ( sf::Color::Red );
Schussliste.push_back ( Schuss_Temp );
}
if ( event.type == sf::Event::KeyReleased )
{
if ( event.key.code == sf::Keyboard::Space )
{
Schussaktiv = false;
}
}
|
Jetzt brauche ich dort ja "event" und ich habe es nun so gemacht, dass ich einfach per Referenz das "event" aus der Main Methode beim Konstruktoraufruf uebergebe und in einer meiner private Variablen von der Klasse Spieler speichere. Ich kann mir aber nicht vorstellen, dass dies die feine englische Art ist und wuerde gerne wissen, wie man dies anders machen koennte.
Gruss
Simon