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
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// ------------------------------------ // Lebensanzeige Rendern // ------------------------------------ if (m_Life == 1) { m_pSpriteLife->SetPos (690, 15); m_pSpriteLife->Render (); } else if (m_Life == 2) { m_pSpriteLife->SetPos (690, 15); m_pSpriteLife->Render (); m_pSpriteLife->SetPos (710, 15); m_pSpriteLife->Render (); } else if (m_Life == 3) { m_pSpriteLife->SetPos (690, 15); m_pSpriteLife->Render (); m_pSpriteLife->SetPos (710, 15); m_pSpriteLife->Render (); m_pSpriteLife->SetPos (730, 15); m_pSpriteLife->Render (); } |
Zitat
... Lieber ein paar Doppelposts als 10 neue topics
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 |
// ------------------------------------ // Rect initialisieren // ------------------------------------ m_Rect.x = static_cast<int>(fXPos); m_Rect.y = static_cast<int>(fYPos); m_Rect.w = pSpriteAsteroid->GetRect().w; m_Rect.h = pSpriteAsteroid->GetRect().h; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// -------------------------------------- // Überschneidung Spieler - Asteroid ??? // -------------------------------------- if (RectPlayer.y < RectAsteroid.y + RectAsteroid.h && RectPlayer.y + RectPlayer.h > RectAsteroid.y && RectPlayer.x < RectAsteroid.x + RectAsteroid.w && RectPlayer.x + RectPlayer.w > RectAsteroid.x) { // ------------------------------------ // Asteroid und Spieler deaktivieren, // Spielerleben verringern // ------------------------------------ ItAsteroid->SetAlive(false); m_pPlayer->SetLife(-1); m_pPlayer->Reset(); } |
Danke, allerdings bedanke ich mich im Normalfall für die Antworten in meinem Post. Wirft sich jetzt 2 Wochen später eine neue Frage auf, kann ich entweder ein neues Thema erstellen, oder hier nochmal reinposten. Schon haben wir den Doppelpost :[
Ich bezweifle, dass jemand alte Themen durchforst und guckt, ob denn der Themenersteller einen seiner posts editiert hat : D
C-/C++-Quelltext |
|
1 2 3 4 5 |
for(int i=0;i<m_Life;i++) { m_pSpriteLife->SetPos (690+20*i, 15); m_pSpriteLife->Render (); } |
Also die Lebensanzeige sollte mit folgender Schleife eigentlich funktionieren:
C-/C++-Quelltext
1 2 3 4 5 for(int i=0;i<m_Life;i++) { m_pSpriteLife->SetPos (690+20*i, 15); m_pSpriteLife->Render (); }
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
// ************************************ // INIT // Aufgabe: Initialisiert Asteroiden // ************************************ void CAsteroid::Init (CSprite *pSpriteAsteroid, float fXPos, float fYPos) { // ------------------------------------------------------ // Zeiger auf Sprite kopieren und Koordinaten setzen // ------------------------------------------------------ m_pSpriteAsteroid = pSpriteAsteroid; m_fXPos = fXPos; m_fYPos = fYPos; // ------------------------------------------------------ // Animation beginnt beim ersten Einzelbild // ------------------------------------------------------ m_fAnimPhase = 0.0f; // ------------------------------------ // Rect initialisieren // ------------------------------------ m_Rect.x = static_cast<int>(fXPos); m_Rect.y = static_cast<int>(fYPos); m_Rect.w = pSpriteAsteroid->GetRect().w; m_Rect.h = pSpriteAsteroid->GetRect().h; // --------------------- // Asteroid aktivieren // --------------------- m_bIsAlive = true; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
// ************************************************************************ // SPAWNASTEROIDS // Aufgabe: Nach Ablauf einer bestimmten Zeit neuen Asteroiden erzeugen // ************************************************************************ void CGame::SpawnAsteroids() { // -------------------------------------- // Timer für nächsten Asteroiden erhöhren // -------------------------------------- m_fAsteroidTimer += g_pTimer->GetElapsed(); // ---------------------------------------------------------------------------- // Wenn eine halbe Sekunde vergangen ist, dann neuen Asteroiden erzeugen // ---------------------------------------------------------------------------- if (m_fAsteroidTimer >= 0.5f) { // ------------------- // Neuer Asteroid // ------------------- CAsteroid Asteroid; // --------------------- // Zufällige X-Position // --------------------- int XPos = rand()%736; // ------------------------ // Asteroid initialisieren // ------------------------ Asteroid.Init (m_pSpriteAsteroid, static_cast<float>(XPos), -60.0f); // -------------------------------------- // Asteroid in Liste einfügen // -------------------------------------- m_AsteroidList.push_back (Asteroid); // -------------------------------------- // Zeitgeber wieder zurücksetzen // -------------------------------------- m_fAsteroidTimer = 0.0f; } } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »leckel« (23.05.2010, 21:51)
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
void CGame::CheckCollision() { //Korrektur für das Rect des Asteroiden RectAsteroid.w = 64; RectAsteroid.h = 64; } |
Werbeanzeige