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 46 47 48 49 50 51 52 |
#include "Windows.h" #include "Singleton.hpp" #include "SFML/System.hpp" #include "SFML/Graphics.hpp" #include "SFML/Window.hpp" #include "SFML/Audio.hpp" #define g_pGameInst CGame::Get() class CGame : public TSingleton { public: CGame(); ~CGame(); void RunMessageLoop(void Render(float fTime), void Move(float fTime)); void InitGame(); void ExitGame(); void Clear(sf::Color ColBackground = sf::Color(255, 255, 255)); void Flip(); void Update(); void Draw(sf::Sprite Sprite); sf::Sprite* GetSpriteReticle() {return m_ReticleSprite; } sf::Sprite* GetSpriteAim () {return m_AimSprite; } sf::RenderWindow GetApply (){return m_App; } sf::Input GetInput () {return m_App.GetInput();} float GetTime() {return m_fTime; } void SetTime(float fTime) {m_fTime = fTime;} private: float m_fTime; sf::RenderWindow& m_App; sf::Music m_Music; sf::Clock m_Clock; sf::Image& m_ReticleImage; sf::Image& m_AimImage; sf:Sprite* m_ReticleSprite; sf:Sprite* m_AimSprite; }; int IntRandom(float RandomRange) { return (rand() % (UINT)(RandomRange) ) + 1; } |
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 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
#include "Game.hpp" CGame::CGame() : m_App(sf::RenderWindow(sf::VideoMode(1366, 768), "Moorhuhn")) , m_Clock(sf::Clock()) , m_ReticleImage(sf::Image()), m_AimImage(sf::Image()) { InitGame(); } CGame::~CGame() { ExitGame(); } void CGame::InitGame() { m_Clock = sf::Clock(); m_App = sf::RenderWindow(sf::VideoMode(1366, 768), "Moorhuhn"); srand( (UINT)(m_Clock.GetElapsedTime())); m_Music.OpenFromFile("12Inch.ogg"); m_Music.Play(); m_ReticleImage = sf::Image(); m_ReticleImage.LoadFromFile("Fadenkreuz.bmp"); m_ReticleImage.CreateMaskFromColor(sf::Color(255, 255, 255)); m_ReticleSprite = new sf::Sprite(m_ReticleImage); m_ReticleSprite->SetImage(m_ReticleImage); m_ReticleSprite->SetPosition( (m_App.GetWidth()/2) - (m_ReticleSprite->GetSize().x/2), m_App.GetHeight()/2 - m_ReticleSprite->GetSize().y/2 ); m_AimImage = sf::Image(); m_AimImage.LoadFromFile("Moor2.bmp"); m_AimImage.CreateMaskFromColor(sf::Color(0, 0, 0)); m_AimSprite = new sf::Sprite(m_AimImage); m_AimSprite->SetImage(m_AimImage); m_AimSprite->SetPosition(IntRandom(m_App.GetWidth()) - m_AimSprite->GetSize().x , IntRandom(m_App.GetHeight()) - m_AimSprite->GetSize().y); m_App.ShowMouseCursor(false); } void CGame::ExitGame() { if (!m_ReticleSprite) { delete m_ReticleSprite; m_ReticleSprite = NULL; } if (!m_AimSprite) { delete m_AimSprite; m_AimSprite = NULL; } } void CGame::RunMessageLoop(void Render(float fTime), void Move(float fTime)) { // Vergangene Zeit berechnen float fElapsedTime = m_Clock.GetElapsedTime(); // Solange das Fenster offen ist... while (m_App.IsOpened()) { // Ein Event... sf::Event Event; // ...füllen while (m_App.GetEvent(Event)) { // Wenn das Fenster geschlossen werden soll schließen if (Event.Type == Event.Closed) m_App.Close(); } // Rendern und bewegen Render(fElapsedTime); Move(fElapsedTime); //Framedauer berechnen fElapsedTime = m_Clock.GetElapsedTime(); this->Update(); } } void CGame::Clear(sf::Color ColBackground) { m_App.Clear(ColBackground); } void CGame::Flip() { m_App.Display(); } void CGame::Update() { m_fTime += m_Clock.GetElapsedTime(); m_Clock.Reset(); } void CGame::Draw(sf::Sprite Sprite) { m_App.Draw(Sprite); } |
Quellcode |
|
1 |
1>------ Erstellen gestartet: Projekt: SFML__, Konfiguration: Release Win32 ------1> Game.cpp1>C:\Users\Stephan\Desktop\Programm!eren\SFML\SFML-1.6\include\SFML/Window/Input.hpp(135): error C2248: "sf::NonCopyable::NonCopyable": Kein Zugriff auf private Member, dessen Deklaration in der sf::NonCopyable-Klasse erfolgte.1> C:\Users\Stephan\Desktop\Programm!eren\SFML\SFML-1.6\include\SFML/System/NonCopyable.hpp(57): Siehe Deklaration von 'sf::NonCopyable::NonCopyable'1> C:\Users\Stephan\Desktop\Programm!eren\SFML\SFML-1.6\include\SFML/System/NonCopyable.hpp(41): Siehe Deklaration von 'sf::NonCopyable'1> Diese Diagnose trat in der vom Compiler generierten Funktion "sf::Input::Input(const sf::Input &)" auf.1>Game.cpp(9): warning C4413: "CGame::m_App": Der Verweismember wird mit einem temporären Wert initialisiert, der nach dem Beenden des Konstruktors nicht beibehalten wird.1> c:\users\stephan\desktop\programm!eren\sfml\sfml__\Game.hpp(34): Siehe Deklaration von 'CGame::m_App'1>Game.cpp(9): warning C4413: "CGame::m_ReticleImage": Der Verweismember wird mit einem temporären Wert initialisiert, der nach dem Beenden des Konstruktors nicht beibehalten wird.1> c:\users\stephan\desktop\programm!eren\sfml\sfml__\Game.hpp(39): Siehe Deklaration von 'CGame::m_ReticleImage'1>Game.cpp(9): warning C4413: "CGame::m_AimImage": Der Verweismember wird mit einem temporären Wert initialisiert, der nach dem Beenden des Konstruktors nicht beibehalten wird.1> c:\users\stephan\desktop\programm!eren\sfml\sfml__\Game.hpp(40): Siehe Deklaration von 'CGame::m_AimImage'1>Game.cpp(43): warning C4244: 'Argument': Konvertierung von 'unsigned int' in 'float', möglicher Datenverlust1>Game.cpp(43): warning C4244: 'Argument': Konvertierung von 'unsigned int' in 'float', möglicher Datenverlust1> main.cpp1>C:\Users\Stephan\Desktop\Programm!eren\SFML\SFML-1.6\include\SFML/Window/Input.hpp(135): error C2248: "sf::NonCopyable::NonCopyable": Kein Zugriff auf private Member, dessen Deklaration in der sf::NonCopyable-Klasse erfolgte.1> C:\Users\Stephan\Desktop\Programm!eren\SFML\SFML-1.6\include\SFML/System/NonCopyable.hpp(57): Siehe Deklaration von 'sf::NonCopyable::NonCopyable'1> C:\Users\Stephan\Desktop\Programm!eren\SFML\SFML-1.6\include\SFML/System/NonCopyable.hpp(41): Siehe Deklaration von 'sf::NonCopyable'1> Diese Diagnose trat in der vom Compiler generierten Funktion "sf::Input::Input(const sf::Input &)" auf.1>main.cpp(19): warning C4244: 'Argument': Konvertierung von 'UINT' in 'float', möglicher Datenverlust1>main.cpp(19): warning C4244: 'Argument': Konvertierung von 'UINT' in 'float', möglicher Datenverlust1>main.cpp(28): warning C4244: 'Argument': Konvertierung von 'unsigned int' in 'float', möglicher Datenverlust1>main.cpp(28): warning C4244: 'Argument': Konvertierung von 'int' in 'float', möglicher Datenverlust========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ========== |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
#include "SFML/Graphics.hpp"#include "Game.hpp" void Render(float fNumSecsPassed){ g_pGameInst->Draw(*(g_pGameInst->GetSpriteReticle()));g_pGameInst->Draw(*(g_pGameInst->GetSpriteAim ()));g_pGameInst->Flip();} void Move(float fNumSecsPassed){UINT g_ui_Mouse_X = g_pGameInst->GetInput().GetMouseX();UINT g_ui_Mouse_Y = g_pGameInst->GetInput().GetMouseY();g_pGameInst->GetSpriteReticle()->SetPosition(g_ui_Mouse_X, g_ui_Mouse_Y);if (g_pGameInst->GetTime() > 3.0f){if(g_pGameInst->GetSpriteAim()->GetPosition().y > g_pGameInst->GetApply().GetHeight()/2){g_pGameInst->GetSpriteAim()->Move(sf::Vector2(0, -(6.0f - g_pGameInst->GetTime())*10));if(g_pGameInst->GetTime() > 6.0f){g_pGameInst->SetTime(g_pGameInst->GetTime() - 6.0f);g_pGameInst->GetSpriteAim()->SetPosition(IntRandom(1366.0f) , g_pGameInst->GetApply().GetHeight());}}g_pGameInst->SetTime(g_pGameInst->GetTime() + fNumSecsPassed); } int main (){g_pGameInst->RunMessageLoop(Render, Move);return 0;} |
C-/C++-Quelltext |
|
1 |
m_App(sf::RenderWindow(sf::VideoMode(1366, 768), "Moorhuhn")) |
C-/C++-Quelltext |
|
1 |
this->m_App.Create(sf::VideoMode(1366, 768), "Moorhuhn"); |
Quellcode |
|
1 |
1>Game.cpp(9): error C2758: 'CGame::m_App': muss in der Basisklassen/Element-Initialisierungsliste des Konstruktors initialisiert werden1> c:\users\stephan\desktop\programm!eren\sfml\sfml__\Game.hpp(34): Siehe Deklaration von 'CGame::m_App' |
C-/C++-Quelltext |
|
1 |
sf::RenderWindow m_App; |
C-/C++-Quelltext |
|
1 |
sf::RenderWindow *m_App; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 |
CGame::CGame() : m_App(new sf::RenderWindow(sf::VideoMode(1366, 768), "Moorhuhn")) , m_Clock(sf::Clock()) , m_ReticleImage(sf::Image()), m_AimImage(sf::Image()) { InitGame(); } |
Werbeanzeige