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

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

11

28.08.2008, 20:33

hmm, sicher? Weil "s_Static Static[2];". Nach meinem Kenntnisstand bekommt man für sizeof(s_Static)); damit was anderes als für sizeof(Static[0]));
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

12

28.08.2008, 20:34

Habe auch schon versucht jede variabel einzeln ein und auszulesen. Ging auch net .. :?:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
std::ofstream Output("level1.txt", std::ios::binary);

    Output.write((char*) &numberOfStaticBoxes, sizeof(int));
    Output.write((char*) &Static[0].textureNumber, sizeof(int));
    Output.write((char*) &Static[0].xPos, sizeof(float));
    Output.write((char*) &Static[0].yPos, sizeof(float));
    Output.write((char*) &Static[0].width, sizeof(float));
    Output.write((char*) &Static[0].heigth, sizeof(float));
    Output.write((char*) &Static[0].rotation, sizeof(float));

    Output.write((char*) &Static[1].textureNumber, sizeof(int));
    Output.write((char*) &Static[1].xPos, sizeof(float));
    Output.write((char*) &Static[1].yPos, sizeof(float));
    Output.write((char*) &Static[1].width, sizeof(float));
    Output.write((char*) &Static[1].heigth, sizeof(float));
    Output.write((char*) &Static[1].rotation, sizeof(float));
    Output.close();


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
    std::ifstream Input("level1.txt", std::ios::binary);
    
    int numberOfStaticBoxes = 1;
    s_Static Static[2];
    if (Input != NULL)  // hier ist Input 0, darum is was mit dem einlesen falsch..

    {
    Input.read((char*) &numberOfStaticBoxes, sizeof(int));
    Input.read((char*) &Static[0].textureNumber, sizeof(int));
    Input.read((char*) &Static[0].xPos, sizeof(float));
    Input.read((char*) &Static[0].yPos, sizeof(float));
    Input.read((char*) &Static[0].width, sizeof(float));
    Input.read((char*) &Static[0].heigth, sizeof(float));
    Input.read((char*) &Static[0].rotation, sizeof(float));

    Input.read((char*) &Static[1].textureNumber, sizeof(int));
    Input.read((char*) &Static[1].xPos, sizeof(float));
    Input.read((char*) &Static[1].yPos, sizeof(float));
    Input.read((char*) &Static[1].width, sizeof(float));
    Input.read((char*) &Static[1].heigth, sizeof(float));
    Input.read((char*) &Static[1].rotation, sizeof(float));

    Input.close();

    for (int i = 0; i<=1; i ++)
    {
        m_game->CreateStatic(&Static[i]);
    }
    }

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

13

28.08.2008, 20:36

Zitat von »"Nox"«

hmm, sicher? Weil "s_Static Static[2];". Nach meinem Kenntnisstand bekommt man für sizeof(s_Static)); damit was anderes als für sizeof(Static[0]));


Naja, kommt natürlich auf das Array an! ;) Aber in diesem Fall ist der Ausdruck austauschbar.

Zitat von »"Unknown"«

Habe auch schon versucht jede variabel einzeln ein und auszulesen. Ging auch net .. :?:


Ich vermute ja, dass dein Fehler irgendwo anders liegt. Mich würd ja der Inhalt von CreateStatic() immer noch interessieren, bzw die Stelle an ders tatsächlich 'knallt'.
@D13_Dreinig

14

28.08.2008, 20:40

Der "Knall" Punkt liegt in der Engine (Box2D), da kommt ein overfloat fehler da die Werte die ich auslese ins unendliche gehn ;)

Der code von CreateStatic is richtig, aber wenns dich net schlafen lässt, an mir solls net liegen ;) :

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
void CGame::CreateStatic(s_Static *s_static)
{
    b2BodyDef bodyDef;
    bodyDef.position.Set(s_static->xPos, s_static->yPos);
    bodyDef.angle = s_static->rotation*DEGTORAD;
    b2Body *m_body = m_world->CreateBody(&bodyDef);

    b2PolygonDef shapeDef;
    float width2 = (s_static->width/30.0f)/2.0f;
    float heigth2 = (s_static->heigth/30.0f)/2.0f;
    shapeDef.SetAsBox(width2, heigth2);

    m_body->CreateShape(&shapeDef);
    m_body->SetMassFromShapes();

    CStatic *m_static = new CStatic;

    HTEXTURE *texture = GetGroundTexture(s_static->textureNumber);

    m_static->Create(texture, m_body, s_static);

    m_staticBodyList.push_back(m_body);
    m_staticSpriteList.push_back(m_static);
}

Bringt dir aber net viel weil sich das dann wieder verzweigt, in andere Klassen etc. ;)

Und ich hör auch nach jedem Satz ein ;) zu schreiben..

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

15

28.08.2008, 20:43

Zitat


if (Input != NULL) // hier ist Input 0, darum is was mit dem einlesen falsch..


Hab das überlesen. In dem Fall hast du, vermutlich, einfach keinen Zugriff auf die Datei. Aus welchem Grund auch immer.
@D13_Dreinig

16

28.08.2008, 20:44

Die frage ist wieso, weil ich in beiden exe's ( oder wie das heißt ), den input code habe, der aber nur in einem funktioniert.

PS: du hast es nicht überlesen, ich habs editiert

@dot: das mit den einzelnen Variablen ein und auslesen mit den gleichen sizes geht auch net ;) der Fehler leigt beim einlesen, bzw die schreibrechte, ausm welchen Grund auch immer.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

17

28.08.2008, 20:47

Zitat von »"Unknown"«

@dot: das mit den einzelnen Variablen ein und auslesen mit den gleichen sizes geht auch net ;) der Fehler leigt beim einlesen, bzw die schreibrechte, ausm welchen Grund auch immer.


ja, sry, hab net genau genug gelesen...

blöderweise hab ich meinen post vorhin gelöscht während du editiert hast^^

EDIT:

In meinem Post ging's um die Sache mit dem sizeof:

C-/C++-Quelltext

1
Output.write((char*) &Static[0], sizeof(Static[0]));


C-/C++-Quelltext

1
Input.read((char*) &Static[1], sizeof(s_Static));


ich hab net genau genug gelesen und hab gedacht im unteren sizeof stünde das array. es steht aber der typ der elemente des arrays und damit stimmt das ganze schon, wie David_pb bereits sagte.
Ich denk mal Nox hat's auch überlesen ;)

18

28.08.2008, 20:50

Also mit den Leserechten komme ich net weiter, und ihr könnt mir ja auch nicht aufn PC gucken ^^

Iwie is das bullshit ^^


PS: habe ich doch gemeint ;)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

19

28.08.2008, 20:52

Zitat von »"Unknown"«

Also mit den Leserechten komme ich net weiter, und ihr könnt mir ja auch nicht aufn PC gucken ^^

Iwie is das Bullshit ^^


Stimmt der Pfad denn? Oder hast du die Datei irgendwie noch offen?
@D13_Dreinig

20

28.08.2008, 20:55

Pfad ist im .exe Ordner, und nein, ich habe sie geschlossen und nicht schreibgeschützt.


EDIT:
könnte ich euch mal meine Projekte schicken, das ihr mal gucken könnt.
Wenn ihr meinen Code lesen könnt ;)

Wenn ich das darf:
www.csite.kilu.de/Scroll Shooter.rar

Werbeanzeige