Du bist nicht angemeldet.

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

21

16.12.2012, 00:06

Ist Fehlen und weglassen nicht das selbe ;D?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

22

16.12.2012, 00:26

Nicht zwangsweise. Weglassen ist Absicht. Fehlen kann unabsichtlich sein.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

23

16.12.2012, 00:46

Na dann ^^

Aber es fuckt mich ab das ich jetzt nicht mit dem Spiel weiter machen kann weil ich durch den fehler ja nichs testen kann -.-

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

24

16.12.2012, 09:01

Tja, dann solltest Du wohl mal mehr Code zeigen oder Deinen Debugger benutzen!
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

25

16.12.2012, 11:57

Kannst ja mal die Codestellen abgleichen, vielleicht wirst du fündig ;)
Only God can judge me.

26

16.12.2012, 20:29

Hier mal den ganzen Code !!


#include <iostream>
#include <SFML\Graphics.hpp>
#include <SFML\Window.hpp>
#include <sstream>
#include <list>

//Eigene Header//
#include "Game.hpp"


using namespace std;

void Hauptmenü()
{
// Gegner Spawn //
sf::Clock cSPGegner;
sf::Clock cBSchuss;

// Gegner Liste //
std::list<sf::Sprite>lGegner;
std::list<sf::Sprite>::iterator endg = lGegner.end();

std::list<sf::Sprite>lSchuss;
std::list<sf::Sprite>::iterator SchussIt;
std::list<sf::Sprite>::iterator ends = lSchuss.end();

//Laufzeit/FensterVariablen//
bool pRunning = true;
//__________//

// Eventabfrage //
sf::Event Event;
//__________//

//Fenster wird Erstellt//
sf::RenderWindow Fenster(sf::VideoMode(800,400,32),"Monster Adventure",sf::Style::Titlebar);
Fenster.SetFramerateLimit(60);
const sf::Input& Input = Fenster.GetInput();
//__________//

//Grafiken//
//.Hintergrund.//
sf::Image iHintergrund;
iHintergrund.LoadFromFile("Game/Space.png");

sf::Sprite sHintergrund;
sHintergrund.SetImage(iHintergrund);
//---------//
//.Raumschiff-1.//
sf::Image iRaumschiff1;
iRaumschiff1.LoadFromFile("Game/Raumschiff1.png");
iRaumschiff1.CreateMaskFromColor(sf::Color::Black);

sf::Sprite sRaumschiff1;
sRaumschiff1.SetImage(iRaumschiff1);
sRaumschiff1.SetPosition(400,350);
sRaumschiff1.SetCenter(6.5,17);
//---------//
//.Gegner1.//
sf::Image iGegner1;
iGegner1.LoadFromFile("Game/Gegner1.png");
iGegner1.CreateMaskFromColor(sf::Color::Black);
//.Schuss.//
sf::Image iSchuss;
iSchuss.LoadFromFile("Game/Playerschuss.png");
//___________//

// Hauptschleife //
while(pRunning == true)
{
// Event //
while(Fenster.GetEvent(Event))
{
//Get Mauszeiger Position//
sf::Vector2f Maus(Fenster.GetInput().GetMouseX(), Fenster.GetInput().GetMouseY());
//________//

}//ende Eventschleife


// Raumschiff Bewegungen/Aktionen //
//.raumschiff bewegen.//
if(Input.IsKeyDown(sf::Key::A))
{
sRaumschiff1.Move(-400*Fenster.GetFrameTime(),0);
}
if(Input.IsKeyDown(sf::Key::D))
{
sRaumschiff1.Move(400*Fenster.GetFrameTime(),0);
}
//.raumschiff kolidirt mit rand.//
if(sRaumschiff1.GetPosition().x < 50)
{
sRaumschiff1.Move(400*Fenster.GetFrameTime(),0);
}
if(sRaumschiff1.GetPosition().x > 750)
{
sRaumschiff1.Move(-400*Fenster.GetFrameTime(),0);
}
//.raumschiff schiest.//
if(Input.IsKeyDown(sf::Key::W))
{
if(cBSchuss.GetElapsedTime() > 0.2)
{
//schuss Sprite wird erstellt
sf::Sprite *sSchSprite;
sSchSprite = new sf::Sprite;
sSchSprite->SetImage(iSchuss);
sSchSprite->SetPosition(sRaumschiff1.GetPosition());

//Schuss wird liste hinzugefügt
lSchuss.push_back(*sSchSprite);

//reset Schusstimer
cBSchuss.Reset();
}
}
//_________//


// Spawn Gegner //
if(cSPGegner.GetElapsedTime() > 2)
{
//Gegner Sprite wird erstellt
sf::Sprite *hSprite;
hSprite = new sf::Sprite;
hSprite->SetImage(iGegner1);
hSprite->SetPosition(sf::Randomizer::Random(50,750),50);

//Gegner wird liste hinzugefügt
lGegner.push_back(*hSprite);

std::cout << "Monster vorhanden: " << lGegner.size() << std::endl;

//Reset spawntimer
cSPGegner.Reset();
}

// Fensterinhalt //
Fenster.Clear(sf::Color::White);
Fenster.Draw(sHintergrund);

//Schuss zeichnen
for(std::list<sf::Sprite>::iterator SchussIt = lSchuss.begin();SchussIt != ends;)
{
SchussIt->Move(0,-200*Fenster.GetFrameTime());

Fenster.Draw(*SchussIt);

if(SchussIt->GetPosition().y < 20)
{
SchussIt = lSchuss.erase(SchussIt);
ends = lSchuss.end();
}
else
{
++SchussIt;
}
}

//Gegner Zeichnen
for(std::list<sf::Sprite>::iterator GegnerIt = lGegner.begin();GegnerIt != endg;)
{
Fenster.Draw(*GegnerIt);

if((SchussIt->GetPosition().y == GegnerIt->GetPosition().y) && (SchussIt->GetPosition().x == GegnerIt->GetPosition().x))
{
GegnerIt = lGegner.erase(GegnerIt);
endg = lGegner.end();
}
else
{
++GegnerIt;
}
}

Fenster.Draw(sRaumschiff1);
//.Fenster wird angezeigt.//
Fenster.Display();
//______//

}//ende Hauptschleife
}//end Hauptmenü





Ich habe echt keine Ahnung was da falsch ist??

Und tipps was ich eventuell vereinfachen könnte nehme ich auch entgegen :)!!

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

27

16.12.2012, 20:44

Benutz bitte die Codetags(oder poste bei http://pastebin.com/) damit es eingerückt ist und die Zeilennummern angezeigt werden.

Dein Problem ist, dass du schussIt in der zweiten Schleife ungültiig ist. Lösche die erste Deklaration von schussIt, die macht garkeinen Sinn.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

28

16.12.2012, 20:54

Wenn ich aber die erste deklaration von SchussIt lösche kann ich sie für die collision von Gegner und Schuss nicht mehr abfragen!

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

29

16.12.2012, 20:57

Wie soll das denn funktionieren? Du musst doch für jeden Gegner jeden Schuss durchgehen und prüfen ob er getroffen wird.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Werbeanzeige