Variablen total verrückt



  • #pragma hdrstop
    #include <condefs.h>
    #include <iostream>
    #include <stdio>
    
    //---------------------------------------------------------------------------
    #pragma argsused
    int Spielr();
    
    struct struct_Spieler
    {
      int iStr,iDex,iExp,iLevel,iLevelup;
      int iAttributverteilpunkte,iLebenspunkte,imaxLebenspunkte;
      int iAC,iAngriffswurf,iSchadenswurf;
    };
    
    int main(int argc, char **argv)
    {
      struct_Spieler Spieler;
      Spielr();
      cout<<"Str "<<Spieler.iStr<<endl<<"Dex "<<Spieler.iDex<<endl<<"Exp "<<Spieler.iExp<<endl<<"Level "<<Spieler.iLevel<<endl<<"ben. Exp "<<Spieler.iLevelup<<endl;
      cout<<"verf. Attributp. "<<Spieler.iAttributverteilpunkte<<endl<<"Lebenspunkte "<<Spieler.iLebenspunkte<<endl<<"max. Lebensp. "<<Spieler.imaxLebenspunkte<<endl;
      cout<<"Verteidigung "<<Spieler.iAC<<endl<<"Angriffswurf "<<Spieler.iAngriffswurf<<endl<<"Schadenswurf "<<Spieler.iSchadenswurf;
      getchar();
      return 0;
    }
    
    int Spielr()
    {
      struct_Spieler Spieler;
      Spieler.iDex=0;
      Spieler.iLevel=1;
      Spieler.iLevelup=1000;
      Spieler.iLebenspunkte=30;
      Spieler.imaxLebenspunkte=30;
      Spieler.iAC=10;
      return 0;
    }
    

    Ausgabe:
    Str 0
    Dex 2011535634
    Exp 4331912
    Level 4204893
    ben. Exp 4331912
    verf. Attributpunkte 1245104
    Lebenspunkte 0
    max Lebenspunkte 4321560
    Verteidigung 4285276
    Angriffswurf 4354372
    Schadenswurf 1

    Habt ihr das gleiche?Das ist der komplette Code und das ergebnis.

    Also ich hab jetzt mal genauer nach dem Fehler gesucht und diesen Teil getestet.Und dort ist das woran es liegt.Aber ich sehe darin keinen Fehler, wieso die Variablen so komische werte haben.

    [ Dieser Beitrag wurde am 07.10.2002 um 14:28 Uhr von sic editiert. ]

    [ Dieser Beitrag wurde am 07.10.2002 um 14:31 Uhr von sic editiert. ]



  • [ Dieser Beitrag wurde am 07.10.2002 um 14:30 Uhr von sic editiert. ]



  • Hallo Sic,

    in Deiner Funktion Spielr() legst Du dir ja eine lokale Struktur Spieler an und initalisierst diese. Die Struktur Spieler in der main-Funktion wird nicht initialisert und enthält irgenwelche zufälligen Werte.

    Probiers mal so:

    #pragma argsused
    int Spielr();
    
    struct struct_Spieler
    {
      int iStr,iDex,iExp,iLevel,iLevelup;
      int iAttributverteilpunkte,iLebenspunkte,imaxLebenspunkte;
      int iAC,iAngriffswurf,iSchadenswurf;
    };
    
    struct_Spieler Spieler;
    
    int main(int argc, char **argv)
    {
    
      Spielr();
      cout<<"Str "<<Spieler.iStr<<endl<<"Dex "<<Spieler.iDex<<endl<<"Exp "<<Spieler.iExp<<endl<<"Level "<<Spieler.iLevel<<endl<<"ben. Exp "<<Spieler.iLevelup<<endl;
      cout<<"verf. Attributp. "<<Spieler.iAttributverteilpunkte<<endl<<"Lebenspunkte "<<Spieler.iLebenspunkte<<endl<<"max. Lebensp. "<<Spieler.imaxLebenspunkte<<endl;
      cout<<"Verteidigung "<<Spieler.iAC<<endl<<"Angriffswurf "<<Spieler.iAngriffswurf<<endl<<"Schadenswurf "<<Spieler.iSchadenswurf;
      getchar();
      return 0;
    }
    
    int Spielr()
    {
      Spieler.iDex=0;
      Spieler.iLevel=1;
      Spieler.iLevelup=1000;
      Spieler.iLebenspunkte=30;
      Spieler.imaxLebenspunkte=30;
      Spieler.iAC=10;
      return 0;
    }
    

    Schöner ist es natürlich wenn man die Struktur Spieler der Funktion Spielr als Parameter übergibt. Dann braucht man auch keine Globale Struktur.

    MfG Neo

    EditBySideWinder: Hier ist es üblich Code-Tags zu benützen!

    [ Dieser Beitrag wurde am 07.10.2002 um 15:19 Uhr von SideWinder editiert. ]


Anmelden zum Antworten