Hallo alle zusammen,
ich habe hier ein Problem, das ich nicht lösen kann.
Habe ein Jump & Run Spiel mit Allegro geschrieben. Dafür habe ich dann (erstmal) extra (als eigene Datei/eigenes Projekt) ein Programm zum laden von Levels geschrieben. Ich habe das Programm mal etwas vereinfacht und verallgemeinert. Die Level Datein sehen so aus:
A 0000 0000
B 0001 0000
Das erste Zeichen steht für die Nummer des Tiles o.ä. dann kommt die X-Koordinate, wobei es genau vier Zeichen sein müssen (bei beispielsweise 123 wird vorne noch eine 0 angehängt - also 0123. Bei 12 zwei nullen: 0012 usw.
Hier ist das Programmm:
#include
#include
#include
#include
using namespace std;
int main (int argc, char \*\*argv[])
{
fstream f;
f.open("level0.lvl", ios::in);
if (f)
{
const int ziffern=4;
char line[64];
while (!f.eof())
{
f.getline(line, sizeof(line));
char tile=line[0];
int x=0;
int y=0;
char fehler=0;
for (int i=0; i57) || (line[i+ziffern+3]57)) {
}
else {
x+=(line[i+2]-48)\*(int)pow(10, ziffern-i-1);
y+=(line[i+ziffern+3]-48)\*(int)pow(10, ziffern-i-1);
}
}
cout
Nun habe ich aber das Problem, dass beim 2. For-Schleifen-Durchlauf (also i=1) die Ziffer in der Datei mit 99 multipliziert wird. Wenn ich einfach so pow(10,2) benutze klappt auch alles. Nach mehrstündigem herumprobieren habe bin ich dann zu dem Schluss gekommen, dass irgendein Zeichen im Quelltest stehen muss, das nicht angezeigt wird (s. ASCII-Tabelle).
Also habe ich das ganze Programm per Hand abgeschrieben. Aber wieder geb es den selben Fehler. Woran kann das liegen?
Wenn ich nur in einer For-Schleife alle Potenzen abfrage, funktioniert alles, aber wenn ich das dann zu meinem (jetztigem) Programm erweitere, dann gibt es diesen Fehler. Und wenn ich in meine Programm noch
cout in die For-Schleife schreibe wird sogar 99 angezeigt.
Dann habe ich mal einen großen Teil aus dem Programm entfernt (alles was mit dem Laden der Datei usw zu tun hat) und das Programm die Ergebnise von 10 hoch i (0 bis 10) anzeigen lassen, und es gab teatsächlich Fehler bei manchen Potenzen. Auch bei der Basis von 5, aber nicht von 2!
Jetzt weiß ich nicht mehr weiter. Ich habe bei google gesucht, aber nichts gefunden. Ich benutze MinGW und CodeBlocks, aber wenn das Problem beim Compiler oder bei der Entwicklungsumgebung liegen würde, wäre ich bei meiner Suche wahrscheinlich schon auf Ergebnisse gestoßen.
Nun weiß ich nicht mehr weiter. Ich hoffe ihr könnt mir helfen oder zur Lösung beitragen.
Ansonsten werde ich das irgendwie anders machen, aber es wäre schon selsam, wenn es da nicht eine logische Lösung gäbe.
Viele Grüße, Max