Klasseninhalte mit "if" abfragen?



  • Es kam ein 'S' , denn ich habe es schon vorher einmal ausgeben lassen, d.h. ich habe dafür ein Feld (10*10) erstellt, in dem ein S erschien.



  • 1. Was funktioniert im Spiel denn nicht?
    2. Prüf im Debugger mal direkt bei der if-Abfrage nach, ob im gesamten Ship-Feld überhaupt ein 'S' vorhanden ist.

    PS: wie liegt dein Ship-Feld überhaupt vor? 10*10 hört sich ja zweidimensional an, aber du greifst ja über "pShip" eindimensional zu (und erzeugst die zweite Dimension mit der Zehnermultiplikation). Warum?



  • 1.Falls ich nun getroffen habe ignoriert er das einfach, genauso wenn ich nicht getroffen habe.
    2. Versteh ich nicht wie du das meinst.
    Zum P.S.
    Ich habe ein Feld welches so aussieht: 0 1 2 3 4 usw.
    0
    1 usw.
    Wenn der Spieler jetzt 2(für oben) 3(für links) eingibt, entsteht bei mir die Zahl, wenn ich sie in die Formel einsetze, 32 welche darauf verweist.
    Ist vielleicht ein bisschen kompliziert, funktioniert aber.



  • suchts du das ->
    überschreiben vom operator ( )

    dann kannst du if ( f00 ) schreiben

    würde so aussehen bin mir aber nicht sicher

    operator bool() const { return (bool)GetShip(); }
    


  • Versteh ich nicht wie du das meinst. Denn so wie ich das jetzt auffassen würde könnte mein ganzes Programm nicht funktionieren, denn ich benutze den Operator
    ()
    häufiger. Z.B.bei der Ausgabe auf meinem Feld.
    (Durch die Formel:

    pShip[0].GetShip()

    )
    Wenn ich jetzt den Operator eine andere Bedeutung zuordne funktioniert die Formel doch nicht, oder hab ich das jetzt falsch verstanden?? 😕



  • Hi,

    1. Hast du wirklich genügend Instanzen deiner Ship-Klasse angelegt? Speicher allokiert, Konstruktoren aufgerufen? Scheinbar brauchst du ja 100 Stück davon ...

    Ein

    Ship ship[100];

    ruft 100-mal den Standard-ctor auf, reicht das bei dir ??

    2. Übersetze das Ganze mal als release Version, bringt oft überraschende Effekte.



  • Wie meinst du das mit:

    2. Übersetze das Ganze mal als release Version, bringt oft überraschende Effekte.

    nun genau?



  • Also... "toriho" meint einfach nur, dass du als "Release" kompilieren sollst (welchen Compiler benutzt du eigentlich überhaupt? Ohne IDE wird's auch mit dem Debuggen schwierig 😞 ).



  • Mein Compiler heißt: DJGPP .
    Der ist schon ein bischen älter(arbeitet nur in DOS)



  • Puhh...dann schreibe mal vor der if-Abfrage dein ganzes Ship-Array in eine Textdatei (d.h. jeweils die char-Member der Schiffe) und schau nach, ob der Fehler daran liegt, dass eben gar kein richtiges Array-Element existiert - aber ich schätze mal, wir gingen davon aus, dass du mit einer IDE arbeitest... 🙄



  • Wie meinst du das? Ich verstehe das so:

    Attack = pShipp[j + (i * 10)].GetShip(); //Attack vom Typ char
    
    if (Attack == 'S')
    {
           //Der restliche Text.
    }
           //usw.
    

    Ist bestimmt verkehrt, denn bei mir funktioniert auch das nicht.


Anmelden zum Antworten