Suchergebnisse
Suchergebnisse 1-18 von insgesamt 18.
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 void CGame::followPath() { ElapsedTime = g_pTimer->Get_Elapsed(); if (Walkstat == 0) { if(ClosedList.front().x == static_cast<int>(Enemy.pSprite->GetPosition().x/32) +1) { Walkstat = 1; } else if(ClosedList.front().x == static_cast<int>(Enemy.pSprite->GetPosition().x/32) -1) { Walkstat = 2; } else if(ClosedList.front().y == sta...
Zitat Dazu gehst du in jedem Frame ein Stückchen weiter auf den aktuellsten, sprich obersten, Knotenpunkt zu. Ok, aber wie hol ich mir den obersten Knotenpunkt(ohne for-schleife mit dazugehörigem Iterator) denn wenn ich versuche quasi "direkt" darauf zuzugreifen: C-/C++-Quelltext 1 ClosedList.end()->x Bekomme ich immer eine Error dazugeliefert: list iterator not dereferencable MfG Dastan Pathfinding is a bitch!
Tut mir leid , aber ich glaub ich hab grade nen kompletten Blackout. Ich schaff es nicht das ganze in verschiedenen Frames zu regeln. Da ich mir den nächsten Knotenpunkt dadurch hole, dass ganze in der for-Schleife abspielen zu lassen und jedesmal den Iterator zu erhöhen. Dadurch habe ich immer nur einen "Zyklus" der Schleife Zeit bis es zum nächsten Knotenpunkt übergeht. Zitat Bei jeder Iteration deiner Game Loop setzt du deinen Spieler mehr und mehr zum aktuellen Knotenpunkt, den du ganz oben ...
Zitat Nimm die Whiles aus deinen Schleifen. Vom Prinzip läuft es so: Nimm ersten Punkt von der Liste, bewege dann deine Figur um den Wert ihrer Geschwindigkeit in die Richtung des Punktes. Fertig. Im nächsten Frame das selbe. Ist die Figur irgendwann bei dem Punkt angekommen, kannst du ihn aus der Liste nehmen und es geht mit dem 2ten Punkt der Liste weiter. Du gehst bei dir in einem Frame die ganze Liste durch und bewegst immer direkt zu dem Punkt. Dadurch wird der ganze Pfad in einem Frame ab...
Erstmal danke für die Antworten! Zitat Ja logisch, du frühstückst das Ganze in einer Schleife ab, d.h. der Rechner freezt solange die Schleife läuft und danach steht dein Spieler an der richtigen Position. Korrekt wäre, nach jedem Zeichenvorgang nur einen oder begrenzt viele Schritte zu machen. Ich glaub ich versteh es nich ganz, meinst du damit ich soll zuerst die Richtungen prüfen und dannach quasi "seperat" die eigentliche Bewegung ? also so ungefähr: C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 if ......
Aloha Leute, Nachdem ich mich mit A* Pathfinding beschäftigt habe, hab ich mir ein Pathfinding-script geschrieben, nicht das beste und auch noch arg verbesserungswürdig aber soweit wird der Pfad eigentlich gefunden. Nur krieg ich es einfach nicht hin das dem Pfad "smooth" gefolgt wird. Es soll in 4 richtungen gehen, also oben,unten,links,rechts. Ich dachte mir das ganze in etwa so: 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...
Erstmal großes Dankeschön für den Tipp Zitat Der Zeiger wird nach dem Destruktoraufruf sowieso nichtmehr genutzt. Du verschwendest also nur Zeit. Alles klar, ich werds mir merken. MfG Dastan
Na endlich ich habs gerafft. Danke Leute! Eine Sache währe da aber noch die mich irgendwie verwundert. Zitat In einer solchen Situation solltest du nach jedem delete den Zeiger auf NULL setzen(außer im Destruktor natürlich) Ich setze aber eig. Immer im Destruktor ein Delete und dannach den Zeiger auf NULL, was ist verkehrt daran? Beispiel: C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 CSprite::~CSprite() { delete(pSprite); pSprite = NULL; delete(pTexture); pTexture = NULL; } Zurück zum Topic, falls irgendj...
Zitat Zu allererst, würde ich den Sprite nicht jedesmal neu erstellen, sondern nur 1 mal und ihn entweder Rendern oder eben nicht Rendern! Erstellt du jedesmal einen neuen bool? Wenn ja, ist er nach jedem Frame wieder false (oder true) den auch nur 1 mal erstellen! Mit dem Rendern hast du recht, ich hab mir irgedwie schon gedacht das es auch für die Performance nicht das beste ist das ständig erstellen und initialisieren usw., ich versuch das mal umzumünzen. Der bool wird in einer Header-Datei ...
Zitat Was genau meinst du damit? Zur Not könntest du mithilfe sf:leep(time); ne Wartezeit einbauen. Also die Sache mit dem tausendfachen ausführen ist so, die Funktion ( die den Code enthält) wird so lange/so oft ausgeführt bis man die Leertaste loslässt, dass bedeutet wiederrum wenn ich Sprite_Aktiv erst auf true schalte wenn ich die Taste loslasse, kann solange die Taste gedrückt bleibt die if-Anweisung beliebig oft ausgeführt werden. Etwas verwirrender Satz aba ich hoffe irgendwie verständli...
Drücke ich die Leertaste einmal -> Sprite soll erscheinen Drücke ich die Leertaste wieder -> Sprite soll verschwinden Ganz einfach oder? Für mich leider nicht. Es ist fasst schon lächerlich aber ich kriegs einfach nicht hin, es ist im Grunde einfach nur ein Logikproblem. Zum besseren Verständnis hier etwas pseudo-Code: C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 bool Sprite_Aktiv; if(Leertase == gedrückt && Sprite_Aktiv == false) { //Sprite erstellen und initialisieren Sprit...
Zitat Also das Fenster könntest du z.B. in der Game Klasse kapseln und in der Initialisierungsliste oder mittels sf::RenderWindow::Create erstellen Dann brauchste auch keine Zeiger, die dich hier nur vor das Problem stellen, den Speicher am Ende wieder freizugeben. Auch die Sprites könntest du in einer Klasse mit Namen z.B. DrawableObject kapseln, dazu dann noch Sachen wie Positionsangaben usw. . So hab ich es bei meinem letzten SFML Projekt gemacht. Ich hoffe das ich "kapseln" richtig interpre...
Zitat Zeig mal etwas mehr Code. Ich greife über eine Get-Funktion darauf zu: C-/C++-Quelltext 1 sf::RenderWindow* GetWindow(){return Window;} (in der .hpp der Klasse) C-/C++-Quelltext 1 2 3 CGame Game; sf::RenderWindow *Window; Window = Game.GetWindow(); (Momentan Testweise in der main) Und darauf folgt die Abfrage der Events. (siehe Oben) Mehr gehört leider im Grunde nicht dazu. Zitat Zack! Seid wann macht man sf::RenderWindow als Zeiger? Ebenso wie die Sprites. Normale Instanzen tun es doch a...
Ich schaff es einfach nicht mit sf::RenderWindow in kombination mit Zeigern zu "arbeiten". Ich habe eine Klasse wo das ganze abläuft, in der .hpp hab ich : C-/C++-Quelltext 1 sf::RenderWindow *Window; und in einer entsprechenden Memberfunktion: C-/C++-Quelltext 1 Window = new sf::RenderWindow(sf::VideoMode(800, 600, 32), "SFML Sample Application"); Soweit so gut, nun will ich Beispielsweise in meiner Eventfunktion drauf zugreifen: C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 sf::Event...
Danke, damit hat sich die Frage im grunde auch schon erledigt. Und danke für den Ratschlag. mfg Dastan
Ich versuche zum Abschluss des Buches, das Beispiel von Kapitel 12 von der SDL auf die SFML anzupassen. Jedoch drängt sich mir schon beim Framework eine Frage auf: Ist das gesamte Ding (Framework.cpp und Framework.hpp) nich vollkommen überflüssig? Bei der SFML muss ich mich über das Doublebuffering, meines überschaubaren Wissens nach, nicht selber kümmern. Das setzen der Auflösung und Farbtiefe kommt mir zu umstädlich und dadurch auch recht unübersichtlich vor, könnte ich das nicht einfach in di...
Nabend allerseits, Danke für die vielen guten Antworten. Im grunde haben sich mit den Antworten auch alle meine Fragen soweit geklärt. Ich hoffe natürlich noch ein bischen auf den Durchbruch was den Output an bekannten Games angeht. Fröhliches programmieren noch!
Man kennt ja einige "richtige" Spiele die SDL benützten.Und damit Ihr mich nicht falsch versteht mit "richtig" rede ich nur von bekannten, etwas größeren oder auch kommerziel etwas erfolgreichen Games. ( In Größenordnungen wie Braid,Limbo,Super Meatboy, bla bla ) Naja Krempel den ein Gamer halt einfach kennt. Nur Frage ich mich da wie sieht es da mit dem SFML aus? Irgendwelche bekannten Games? Und wenn nicht, wiso? Zum SFML finde ich auch keinerlei bis sehr wenig Tutorials, Bücher oder andere Hi...