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 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#ifndef PLAYER_HPP #define PLAYER_HPP #include <list> #include "Sprite.h" #include "Shot.h" class CPlayer { public: CPlayer (); void Init (); void Quit (); void Render (); void Update (); void Reset (); SDL_Rect GetRect () { return m_pSpritePlayer->GetRect(); } list<CShot> *GetShotList () {return &m_ShotList;} private: void ProcessMoving (); void ProcessShooting (); void CheckPosition (); CSprite *m_pSpritePlayer; // Sprite für Spieler CSprite *m_pSpriteShot; // Sprite für Laserschüsse float m_fXPos; // X-Position des Spielers float m_fYPos; // Y-Position des Spielers float m_fAnimPhase; // Aktuelle Animationsphase bool m_bShotLock; // Darf der nächste Schuss raus? list<CShot> m_ShotList; // Liste der Schüsse }; #endif |
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 |
#ifndef GAME_HPP #define GAME_HPP #include "Player.h" #include "Asteroid.h" class CGame { public: CGame (); void Init (); void Run (); void Quit (); private: void ProcessEvents (); void SpawnAsteroids (); void RenderAsteroids (); void CheckCollisions (); void CheckPlayerCollisions (); CPlayer *m_pPlayer; // Spieler-Instanz CSprite *m_pSpriteBackground; // Sprite für den Hintergrund CSprite *m_pSpriteAsteroid; // Sprite für die Asteroiden CSprite *m_pOrange; float m_fAsteroidTimer; // Zeitgeber für nächsten Asteroiden bool m_bGameRun; // Läuft das Spiel noch? list<CAsteroid> m_AsteroidList; // Liste der Asteroiden }; #endif |
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
.... .... while (m_bGameRun == true) { // Events bearbeiten ProcessEvents (); // Framework updaten und Buffer löschen g_pFramework->Update (); g_pFramework->Clear (); // Hintergrundbild rendern m_pSpriteBackground->Render (); m_pOrange->Render (); // Spieler updaten und rendern m_pPlayer->Update (); m_pPlayer->Render (); // Neue Asteroiden hinzufügen SpawnAsteroids (); // Kollisionen prüfen CheckCollisions (); //Prüfen ob Spieler getroffen ist! CheckPlayerCollisions(); // Asteroiden rendern RenderAsteroids (); // Buffer flippen g_pFramework->Flip (); } } // Run .... .... .... void CGame::CheckPlayerCollisions() { list<CAsteroid>::iterator ItAsteroid = m_AsteroidList.begin (); SDL_Rect RectAsteroid; SDL_Rect RectP; while (ItAsteroid != m_AsteroidList.end () ) { RectAsteroid = ItAsteroid->GetRect (); RectP = m_pPlayer->GetRect(); if (RectP.y < RectAsteroid.y + RectAsteroid.h && RectP.y + RectP.h > RectAsteroid.y && RectP.x < RectAsteroid.x + RectAsteroid.w && RectP.x + RectP.w > RectAsteroid.x) { //Spieler getroffen -> Programm herunterfahren! m_bGameRun = false; } } } |
Werbeanzeige