BITTE PRÜFEN!!!!!



  • Hallo, ich hab hier eine Funktion eines PC-Spiels programmiert. Bitte prüft, ob es syntaktisch richtig ist.
    MFG
    Toddy

    int kampf(int heldenergie,int npcenergie,int heldmaxenergie,int npcmaxenergie,int heldatk,int npcatk,int helddef,int npcdef,int heldtp,int npctp,int heldgold,int npcgold,int heldep,int npcep,int heldlevel,int npclevel,int kltrank,int kltrankcounter,int mittltrank,int mittltrankcounter,int grtrank,int grtrankcounter,int score,char* heldname,char* npcname)
    
    {cout<<"\n"<<heldname<<" LV "<<heldlevel<<"         vs.         "<<npcname<<" LV "<<npclevel;
     while(heldenergie>0 && npcenergie>0)
         {cout<<"\n\n"<<heldenergie<<"/"<<heldmaxenergie<<" LP (Held)"<<"                       "<<npcenergie<<"/"<<npcmaxenergie<<" LP (Gegner)";
          system("PAUSE");
       casedefault: cout<<"\n\n<1> Angriff\n<2> Trank benutzen";
          int kampfwahl;
          cin>>kampfwahl;
          switch(kampfwahl)
              {case 1: bool anfang;
                       srand((bool) time(NULL));
                       anfang=rand(); 
                       if(anfang==1)
                           {cout<<"\nDie Eroeffnung der Runde ist dir gestattet.";
                            system("PAUSE");
                            unsigned heldschaden;
                            do
                             {srand((unsigned) time(NULL));
                              heldschaden=rand();
                             }while(heldschaden<((heldtp*heldatk)/10)||heldschaden>heldatk);
                              cout<<"\nDu hast dem Gegner "<<heldschaden<<" Schaden zugefuegt.";
                              system("PAUSE");
                              if((npcenergie+npcdef)<=heldschaden)
                                 {cout<<"\n\nSIEG!!! Du erhaeltst "<<npcep<<" EP und "<<npcgold<<" KD.";
                                  heldep=npcep+heldep;
                                  heldgold=heldgold+npcgold;
                                  npcenergie=npcmaxenergie;
                                  return 0;
                                 }
                              if(npcdef>=heldschaden)
                                 {heldschaden=0;
                                  cout<<"\nDer Gegner hat den ganzen Schaden abgewehrt.";}
                              else
                                 {npcenergie=npcenergie+npcdef-heldschaden;                      
                                  cout<<"\nDer Gegner hat "<<npcdef<<" Schaden abgewehrt.";}
                              system("PAUSE");
                              cout<<"\nGegnerische Energie: "<<npcenergie<<"/"<<npcmaxenergie;
                              system("PAUSE");
                              unsigned npcschaden;
                              do
                               {srand((unsigned) time(NULL));
                                npcschaden=rand();
                               }while(npcschaden<((npctp*npcatk)/10)||npcschaden>npcatk);
                              cout<<"\nDer Gegner hat dir "<<npcschaden<<" Schaden zugefuegt.";
                              system("PAUSE");
                              if((heldenergie+helddef)<=npcschaden)
                                 {cout<<"\n\nNIEDERLAGE!!! Du hast verloren.";
                                  cout<<"\n\n\nErreichte Punktzahl: "<<score;
                                  return 1;
                                 }
                              if(helddef>=npcschaden)
                                 {npcschaden=0;
                                  cout<<"\nDu hast den ganzen Schaden abgewehrt.";}
                              else
                                 {heldenergie=heldenergie+helddef-npcschaden;                     
                                  cout<<"\nDu hast "<<helddef<<" Schaden abgewehrt.";}
                              system("PAUSE");
                              cout<<"\nDeine Energie: "<<heldenergie<<"/"<<heldmaxenergie;}
                              system("PAUSE");
                       if(anfang==0)
                             {cout<<"\nDer Gegner darf diese Runde eroeffnen.";              
                              system("PAUSE");
                              unsigned npcschaden;
                              do
                               {srand((unsigned) time(NULL));
                                npcschaden=rand();
                               }while(npcschaden<((npctp*npcatk)/10)||npcschaden>npcatk);
                              cout<<"\nDer Gegner hat dir "<<npcschaden<<" Schaden zugefuegt.";
                              system("PAUSE");
                              if((heldenergie+helddef)<=npcschaden)
                                 {cout<<"\n\nNIEDERLAGE!!! Du hast verloren.";
                                  cout<<"\n\n\nErreichte Punktzahl: "<<score;
                                  return 1;
                                 }
                              if(helddef>=npcschaden)
                                 {npcschaden=0;
                                  cout<<"\nDu hast den ganzen Schaden abgewehrt.";}
                              else
                                 {heldenergie=heldenergie+helddef-npcschaden;                     
                                  cout<<"\nDu hast "<<helddef<<" Schaden abgewehrt.";}
                              system("PAUSE");
                              cout<<"\nDeine Energie: "<<heldenergie<<"/"<<heldmaxenergie;
                              system("PAUSE");
                              unsigned heldschaden;
                              do
                               {srand((unsigned) time(NULL));
                                heldschaden=rand();
                               }while(heldschaden<((heldtp*heldatk)/10)||heldschaden>heldatk);
                              cout<<"\nDu hast dem Gegner "<<heldschaden<<" Schaden zugefuegt.";
                              system("PAUSE");
                              if((npcenergie+npcdef)<=heldschaden)
                                 {cout<<"\n\nSIEG!!! Du erhaeltst "<<npcep<<" EP und "<<npcgold<<" KD.";
                                  heldep=npcep+heldep;
                                  heldgold=heldgold+npcgold;
                                  npcenergie=npcmaxenergie;
                                  return 0;
                                 }
                              if(npcdef>=heldschaden)
                                 {heldschaden=0;
                                  cout<<"\nDer Gegner hat den ganzen Schaden abgewehrt.";}
                              else
                                 {npcenergie=npcenergie+npcdef-heldschaden;                      
                                  cout<<"\nDer Gegner hat "<<npcdef<<" Schaden abgewehrt.";}
                              system("PAUSE");
                              cout<<"\nGegnerische Energie: "<<npcenergie<<"/"<<npcmaxenergie;
                              system("PAUSE");}
                       break;
       casetrfehler: case 2: cout<<"\n\n<1> Kleiner Trank ("<<kltrank<<" Stueck); Heilung: 50 HP"
                                 <<"\n<2> Mittlerer Trank ("<<mittltrank<<" Stueck); Heilung: 200 HP"
                                 <<"\n<3> Grosser Trank ("<<grtrank<<" Stueck); Heilung: 500 HP"
                                 <<"\n<4> Zurueck";
                             int kampfheilungswahl;
                             cin>>kampfheilungswahl;
                             switch(kampfheilungswahl)
                                 {case 1: if(kltrank==0)
                                             {cout<<"\nLeider kein Trank vorhanden!";
                                              goto casetrfehler;}
                                          if(kltrank>0)
                                             {kltrank=kltrank-1;
                                              kltrankcounter=kltrankcounter+1;
                                              if((heldmaxenergie-heldenergie)>50)
                                                 {heldenergie=heldenergie+50;}
                                              else
                                                 {heldenergie=heldmaxenergie;}
                                              cout<<"\nEnergie: "<<heldenergie<<"/"<<heldmaxenergie;
                                              system("PAUSE");}
                                          break;
                                  case 2: if(mittltrank==0)
                                             {cout<<"\nLeider kein Trank vorhanden!";
                                              goto casetrfehler;}
                                          if(mittltrank>0)
                                             {mittltrank=mittltrank-1;
                                              mittltrankcounter=mittltrankcounter+1;
                                              if((heldmaxenergie-heldenergie)>200)
                                                 {heldenergie=heldenergie+200;}
                                              else
                                                 {heldenergie=heldmaxenergie;}
                                              cout<<"\nEnergie: "<<heldenergie<<"/"<<heldmaxenergie;
                                              system("PAUSE");}
                                          break;
                                  case 3: if(grtrank==0)
                                             {cout<<"\nLeider kein Trank vorhanden!";
                                              goto casetrfehler;}
                                          if(grtrank>0)
                                             {grtrank=grtrank-1;
                                              grtrankcounter=grtrankcounter+1;
                                                 if((heldmaxenergie-heldenergie)>500)
                                                    {heldenergie=heldenergie+500;}
                                                 else
                                                    {heldenergie=heldmaxenergie;}
                                                 cout<<"\nEnergie: "<<heldenergie<<"/"<<heldmaxenergie;
                                                 system("PAUSE");}
                                          break;
                                  default: break;} 
                             break;}                                                                              
                     default: goto casedefault;}                             
         }
     return 0;}
    


  • Hallo

    Soll das ein Witz sein?
    1. ordentlichen Titel für den Thread
    2. Nicht alles groß - das heißt schreien und nervt
    3. warum benutzt du keinen Compiler?
    4. das sieht nach Mistcode aus

    chrische



  • Abgesehen davon, dass sich keiner deinen Code ansehen wird, möchte ich dir trotzdem ein paar Hinweise geben, die du in deiner zukünftlichen Programmierlaufbahn beachten solltest:

    -Solange ein Code kompilierfähig ist, stimmt auch die Syntax. Die Frage ist eher, ob du auch guten, effizienten Code geschrieben hast. Also rede nicht von Syntax.

    -Verwende anstatt if mal else if.
    -Vermeide gotos, das kann man mit Schleifen lösen.
    -Meide SYSTEM-Aufrufe, äquivalent zu system ("pause") gibt es z.B. std::cin.get (), getchar (), oder getch. SYSTEM-Aufrufe sind langsam und riskant.

    -Verwende Schleifen in deinem Programm. Wie und wo du das machen könntest, werde ich dir aber nicht erklären 😉



  • da es mir gerade langweilig ist, guck ich mir vielleicht den code gleich an xD aber sonst stimme ich mit vorgängern überein

    ok....
    edit:

    verwende doch klassen usw... das ist ja sau unleserlich -.- besonders der funktionskopf, so nebenbei du hast einen fehler in den casefällen



  • Hallo

    Nicht zu vergessen sind Funktion mit ca. 30 Parametern immer ein schlechtes Konzept.
    Teile die Funktion sinnvoll auf und benutzt structs um Werte zusammenzufassen.

    bis bald
    akari



  • Wie soll ich dir sagen ob dein Code richtig oder falsch ist, wenn ich nichtmal weiß, was er machen soll? Das machst du wohl am besten selbst indem du einfach das ganze Projekt kompilierst (wobei natürlich auch die Syntax überprüft wird...) und das ganze dann testest.
    UND SCHREI MICH NICHT AN!!!!



  • Um mal die eigentliche Frage des Threaderstellers zu beantworten: Der Code ist syntaktisch nicht richtig.



  • Toddy schrieb:

    Bitte prüft, ob es syntaktisch richtig ist.

    Mit einem kurzen Blick kann ich dir da eine klare Antwort liefern:
    Nein, ist er nicht.
    Wenn du deinen eigenen Code mal länger betrachtest, kommst du von selbst drauf warum nicht.
    Evtl. helfen dir auch die Antworten der Vorposter.



  • Kann mich meinen Vorgängern nur anschließen + wenn du deinen Funktionskopf mit den (geschätzt) 257 Parametern ansiehst solltest du selber irgendwie mal versuchen nachzudenken ob man das nicht besser zusammenfassen könnte( struct, class)
    außerdem hast du da gotos drin..damit sinkt schon mal die chance auf richtigkeit...
    ->kompilier es und dann schreib es um...



  • wenn du mir deinen ganzen quellcode schickst mach ich vielleicht was 😉 mir is grad langweilig 😛



  • break;
                                  default: break;}
                             break;}                                                                              
                     default: goto casedefault;}
    

    Das sieht schon mal geil aus.


  • Mod

    Sowas macht mich ziemlich neidisch. Immerhin muss man dafür eine enorme Konzentrationsfähigkeit haben...



  • @camper:

    😃 😃 😃

    Du siehst immer das Gute im Menschen...

    @Autor:

    Hast du dir mal Schleifen angeguckt? Oder Klassen (OOP)? Vielleicht hilft auch ein Blick auf den kompletten Quelltext was! Zeig doch mal...



  • camper schrieb:

    Sowas macht mich ziemlich neidisch. Immerhin muss man dafür eine enorme Konzentrationsfähigkeit haben...

    der mensch hat halt durchhaltevermögen für seine tiparbeit.

    da sieht man es, die spieleprogrammierer sind die motiviertesten 😉



  • Es gibt wirklich Leute die schreiben C++ als obs HTML wäre. *schauder*



  • Was C++ ist doch das gleiche wie HTML. (Weltstürzzusammen) 😮



  • ...manchmal denke ich nach...
    ...und oft denke ich dabei... dass so der Windows Sourcecode aussehen muss...



  • The-Kenny schrieb:

    ...manchmal denke ich nach...
    ...und oft denke ich dabei... dass so der Windows Sourcecode aussehen muss...

    weiß garnet was ihr alle so rumzickt, so nebenbei windows ist eigentlich sehr gut, wenn du mal bedenkst wieviel zeilen wohl der quellcode umfasst...



  • Stelfer: Gib mir deine E-Mail Adresse.

    Hallo Leute das war erst die Funktion für den Kampf der Rest ist noch nicht fertig.
    MFG Toddy



  • Also mich stört da alleine schon, daß die Klammern HTML mässig geschrieben sind. Da sieht doch kein Schwein wo die Codeblöcke beginnen.

    Beim Funktionsaufruf wird mir ganz kirre. Bau dir ne Struktur... DEine "Helden" haben garantiert immer die gleichen Variablen...


Anmelden zum Antworten