Unterschiedliches Verhalten auf Linux/Windows
-
Hallo

Ich habe angefangen ein Spiel (ein Space-Shooter) in C++ mit SFML http://www.sfml-dev.org/ zu schreiben.
Hier ist der Code: http://www17.zippyshare.com/v/11290692/file.html
Bis jetzt gibt es einen Player den man mit den Pfeiltasten frei bewegen kann. Es gibt mehrere Waffen (2 bisher) zwischen denen man mit Strg-Links switchen kann.
Und Leertaste um die aktuelle Waffe abzufeuern.Später sollen noch Gegner und Endgegner folgen, vllt. eine Highscore, Menü, ...
Ich habe das Spiel unter Ubuntu (32 bit) mit g++ entwickelt und das Spiel läuft hervorragend, genau wie vorgesehen auf Ubuntu/Linux.
Wenn ich den Code jetzt auf meinen Windows Rechner mache und dort kompiliere, verhält sich das Spiel anders.
Anstatt 50 Bullets (wie es ja auch sein soll) habe ich nur 38 Bullets und anstatt 10 Missiles habe ich nur 4.
Auf beiden PC's benutze ich gcc (g++) mit SFML 1.5
Hier ist das Spiel als Win32 Debug Binary (mit gfx, ready to run): http://www35.zippyshare.com/v/10708057/file.html
Hier könnt ihr mein Problem sehen und könnt es Debugen, oder im Code nach Fehlern schauen.Was habe ich falsch gemacht? Habe ich was mit dem Speicher oder den Pointern falsch gemacht? (wenn ja wieso läuft es denn unter Linux perfekt?)
Ich hoffe ihr könnt mir helfen

-
Klingt merkwürdig.
Am besten gehst du da einfach mal unter Windows mal mit dem Debugger durch. Dann siehst du recht schnell, warum es nicht am Anfang auf die gewünschten 50 gesetzt wird.Ich habe das Gefühl, dass du da einfach sonst wo undefiniertes Verhalten hast und somit irgendwie etwas überschreibst o.ä.
-
Hi,
ich kann leider nicht debugen... mit OllyDbg kann ich es etwas aber als ich es vorhin mit Code::Blocks versucht habe (gdb nehme ich an?), bin ich gescheitert.
Ich konnte zwar Zeile für Zeile springen und auch in Funktionen/Methoden rein und wieder heraus Springen, aber leider/komischerweise nicht so wie ich wollte/es sollte.
Vielleicht ist hier ja jemand gut geübt im debugen
Würde mich freuen.MfG Bernd
-
Bernd-Das-Brot schrieb:
Vielleicht ist hier ja jemand gut geübt im debugen
Würde mich freuen.Etwas Eigeninitiative darfst du schon zeigen. Entweder du debuggst den Code komplett selber oder du reduzierst ihn auf ein kompilierbares Minimalbeispiel, das den Fehler immer noch reproduziert. Aber extra Code herunterzuladen und sich in ein fremdes Projekt einzulesen ist vielen Helfern hier zu mühsam. Das ist auch nicht unsere Aufgabe.
Ich würde unbedingt lernen, mit dem Debugger umzugehen. Das ist ein sehr mächtiges Tool, das jeder Programmierer beherrschen sollte. Ansonsten gibt es auch noch die Möglichkeit, Konsolenausgaben für Debug-Zwecke zu benutzen.
-
Debug mit Visual C++ 2008 / 2010 Express. Hat mit Abstand den besten Debugger.
-
hat sich erledigt
-
und was wars?...
-
Vermutlich ein anderer Schwierigkeitsgrad.

-
Nein, anderes Forum, in dem Hausaufgaben noch gemacht werden

http://www.sfml-dev.org/forum/viewtopic.php?p=15618#15618
-
Rede nicht so dumm daher, wenn man sich mit einer Bedingung in einem privaten Projekt irrt und nicht von selbst auf den Fehler kommt hat es sicherlich nichts mit Hausaufgaben, oder Faulheit oder was auch immer zu tun.
Foren sind zum Fragen da, ich habe lange genug nach einem möglichen Fehler gesucht, nicht fündig geworden.Auch die besten Entwickler und Programmierer, egal welche Projekte sie entwickeln, können an den kleinsten Problemen scheitern.
Überlege dir bitte vorher wie du dich äußerst, warum du dich äußern willst und ob es überhaupt Sinn macht.
Gruß Bernd
-
Meine Erfahrung in diesem Forum hat gezeigt, dass das Herunterladen von externen Archiven meist mit der Forderung verbunden ist, relativ viel Code nach Fehlern zu durchsuchen. Ich habe deinen Link mal angeklickt, und siehe da, es war also kein Vorurteil. Du verlangst allen Ernstes von uns, dass wir uns in 13 Dateien fremden Code einlesen und dort deinen Fehler suchen. Und das, weil du selbst nicht debuggen möchtest oder kannst.
Wenn die Tatsache, dass du dich nicht mit einem Debugger auseinandersetzt, keine Faulheit ist, was dann? Du kannst jetzt schon von technischen Problemen reden, ich glaube dir das auch gerne. Aber es ist nun mal so, dass du vielleicht bald wieder ein ähnliches Problem hast und einen Debugger brauchst. Wie schon oben erwähnt ist das wirklich ein wichtiges Hilfsmittel. Und daher kommst du auf lange Sicht gesehen so oder so nicht darum herum, den Debugger einzurichten und die technischen Schwierigkeiten zu beheben. Du willst gar nicht wissen, wie viel Zeit ich damals benötigte, um alles zum Laufen zu bringen. Oder um eine Bibliothek das erste Mal einzubinden. Oder gerade kürzlich, um das SP1 für MSVC++ zu installieren. Auch fürs Debugging verbrate ich hin und wieder etliche Stunden. Es gibt in der Tat bessere Beschäftigungen, aber das gehört nun mal zum Programmieren.
Schlussendlich ist jedoch allen mehr geholfen, wenn du lernst, Fehler selbst zu debuggen. Du kannst ja nicht jedes Mal hier nachfragen. Es geht auch überhaupt nicht darum, dass man in einem Forum nicht um Hilfe fragen darf. Wenn es möglich ist, den Code auf ein Minimalbeispiel zu reduzieren, helfen wir gerne. Aber falls es darauf hinausläuft, 13 Dateien herunterzuladen und zu durchforsten, hört die Hilfe bei vielen auf. Du kannst froh sein, dass sich im SFML-Forum jemand Zeit genommen hat. Sowas solltest du aber nicht erwarten und schon gar nicht als selbstverständlich ansehen.
Ich hoffe, du fasst meinen Beitrag nicht als persönlichen Angriff auf und merkst dir einige Ratschläge für die Zukunft.
-

-
Ich sehe das so, wie Nexus. Ich wende mich üblicherweise erst an ein Forum, wenn ich Stundelang probiert habe. Das beinhaltet ebenfalls Metaprojekte zu erstellen, um den Fehler eingrenzen und reproduzieren zu können. Das führt oft dazu, dass ich den Fehler selbst finde, auch wenn es eine Weile dauert.
-
Hi Nexus,
das ist doch mal eine gescheite Aussage! Wohl durchdacht

Ja ich denke ich werde mir einen Debugger mal genauer zu Gemüte führen.
Danke & Gruß
Bernd