Was soll ich programmieren(Anfänger)?



  • Danke jetz muss ich nur mal anfangen. 🙂 😃 🙄
    Nen Feld hatte ich schon mal gemachr bei nem Tic Tac Toe Spiel aber ich konnt
    damals noch nie z.B. ne Highscore oder so schreiben.



  • Bin froh dass ich dir helfen konnte! 😃

    An deiner Stelle würde ich mir gleich ein paar Funktionen schreiben die du immer wieder in deinen Programmen einsetzten kannst! Z.B. "ReadFile(int nr, char *filename)" oder so! Die Nummer verwändest du dann einfach für ein Array! Falls das jetzt etwas blöd zu verstehen ist, hier ein kleines Beispiel:

    #define MAX_FILES 10
    FILE *hFile[MAX_FILES];
    
    bool ReadFile(int nr, char *file_name) {
      if (hFile[nr] = fopen(file_name, "r"))
        return true;
      else
        return false;
    }
    
    bool EOF(int nr) {
      return feof(hFile[nr]); /* hab ich noch nicht erwähnt! EOF steht für File-EndOfFile */
    }
    
    /* Sonstige Funktion wie z.B. "ReadString", "WriteString" usw. */
    

    Neben bei:
    Wenn du einen char* bzw. 'char zeile[]' hast und willst ihn in einen C++String umwandeln kannst du dass z.B. so machen:

    zeile[1024];
    string str;
    
    fgets(zeile, MAX_STR_LEN, hFile[nr]);
    zeile[strlen(zeile)-1] = 0;
    /* letztes Zeichen muss durch die Zahl 0 (nicht Ziffer 0) ersätzt werden damit C++ weiß, dass die Zeile zuende ist */
    for (unsigned int i = 0; i != strlen(zeile); ++i)
    /* i muss unsigned sein weil die Funktion 'strlen(...)' auch unsigned ist! (gibt die Anzahl Zeichen in einem char* zurück!) */
      str += zeile[i];
    

    Hoffe ich konnte dir damit noch mal helfen! 🙂

    Aber mal nur so aus Interesse: welche Grafikbibliothek verwändest du für deine Spiele?



  • Wir sind hier im C++ Forum ... und das was du da schreibst ist unter C++ kein sauberes Programmieren ...

    und wenn dann müsste dein code

    bool ReadFile(size_t file_number, const char* file_name) 
    {
        if (file_name == NULL || file_number >= MAX_FILES)
            return false;
    
        hFile[file_number] = fopen(file_name, "r"))
    
       return (hFile[file_number] != NULL);
    }
    

    ... und selbst dann ist das mehr C als C++ -.-

    und dein anderer Code ist auch schwachsinnig -.- ... so wäre das wohl sinniger:

    std::ifstream file_stream(std::ios::in | std:ios::binary);
    if (!file_stream)
        return false;
    
    std::string string_line;
    while (file_stream.eof() == false)
    {
        std::getline(file_stream, string_line);
        // Hier ist string_line mit Daten gefüllt.
    }
    file_stream.close();
    

    Und zu deinem Edit ... er braucht normal für sowas GARKEINE Grafikbibliothek.



  • SCHLAU! 😡

    Ich hatte auch nicht wegen des Dateien Lesen und Schreibens nach der Grafikbibliothek gefragt sondern weil er von einem Spiel geredet hatte!

    Außerdem heißt das Forum "C/C++ Forum" und ich habe eben eine C Funktion aufgeführt, zugegeben nicht perfeckt aber es sollte ja auch nur als BeispielIdee dienen.
    Und da ich bis her noch nicht gerade von eigenen Beispielen überschüttet wurde wollte ich eben einem anderen Anfänger ein paar meiner Beispiele geben, da ich seine Situation durchaus kenne!



  • Es heiszt C/C++ Forum, aber wir sind hier im C++ Berreich, wenn du es dir mal ansiehst.



  • Habe Vier Gewinnt programmiert und es in die ZFX Open Source Ecke gestellt. Es handelt sich um eine Version 1.0.
    Einige Sachen sind erst in neueren Versionen realisiert (verbesserte KI-Stärke, KI in Thread ausgelagert, absolute Flicker-Free-Drawing, GUI Verbesserungen).

    Die Version, die ich veröffentlicht habe hat eine mittelgute bis gute KI. Kannste Dir ja mal angucken und schauen, ob es Dir weiterhilft.

    Hier die Adresse:
    http://www.zfx.info/OpenSource.php?ID=3

    Verwendet wird nur die WinApi.



  • Bis jetz hab ich noch gar keine Grafikbibliothek benutzt.
    Ich hab alles nur immer mit so ner Konsole gemacht Wo ich dann z.B. mein Tic Tac Toe Feld so dargestellt hab:
    1|0|0
    2|2|0
    1|0|0
    naja daran kann man noch arbeiten 😃
    Die Beispiele hab ich zwar net alles verstanden aber so des Grundprinzip. Muss mal in einem Buch weiter lesen damit ich alles versteh.Aber danke für eure Hilfe 👍



  • Hab mal ne Frage warum klappt das nicht oder was macht das Überhaupt:

    FILE*hFile;
    hFile=fopen("C:\highscore.txt","w");

    fprintf(hFile,"Ein Sieg");
    fclose(hFile);
    }

    Ich kanns zwar ohne Error Meldung combilieren lassen aber es Tut nicht das was es soll oder was ich dachte was es machen soll. 😡



  • Tut mir leid, hat noch kleines gefehlt!
    Du musst noch die Bibliothek "iostream" inkludieren!

    #include <iostream> /* Input- Output Streams */
    

    Also, ich hab`s jetzt noch mal als ganz kleines Programm geschrieben und getestet! Bei mir funktioniert folgender Code einwandfrei:

    // SimpleFileTest3 - (24.3.2007)
    
    #include <iostream>
    
    int main(void) {
        FILE *hFile;
        if (hFile = fopen("MyFile.txt", "w")) {
            fprintf(hFile, "Dieser Text wurde von einem C Programm erstellt!");
            fclose(hFile);
        }
        return 0;
    }
    
    // ==========
    


  • Hallo

    Sorry, aber das hier ist ein c++-Forum und da sollte man eben auch möglichst c++-Lösungen anbieten. Das, was du da machst gehört ins c-Forum.

    chrische



  • Tut, mir leid wenn euch dass wirklich so sehr stört! 😞

    ich weiß ja dass das C ist und nicht C++ ist aber auf die letzte Rückfrage musste ich eben noch mal kurz ne Antwort geben!

    Aber da ich neu bin werd ich in Zukunft mehr darauf anchten! 👍



  • Das klappt nicht, weil Du den Backslash im Pfadnamen nicht escapt hast.

    hFile=fopen("C:\highscore.txt","w");
    

    So müsste es gehen...

    hFile=fopen("C:\\highscore.txt","w");
    


  • Stimmt 'NickHappy', darauf hab ich in seinem Programm gar nicht geachtet! 💡

    In Windows ist das eh egal ob man "/" oder "\" schreibt und um nicht immer "\" schreiben zu müssen schreibe ich nur noch "/"! 😉



  • LukasBanana schrieb:

    In Windows ist das eh egal ob man "/" oder "\" schreibt und um nicht immer "\" schreiben zu müssen schreibe ich nur noch "/"! 😉

    Lieber Lukas,

    ich kann zwar nicht mit Sicherheit sagen, ob Du da Recht hast, weil ich ausschliesslich unter Linux arbeite. Aber ich könnte mir vorstellen, dass das vom verwendeten SDK abhängt. Wenn Du mit VC++ arbeitest ist das möglicherweise anders, als wenn Du g++ (MinWG, DevC++) verwendest. Vielleicht kann da mal ein Windows-Entwickler was zu sagen, der Fall interessiert mich jetz mal.

    Ist das Implementeirungsabhängig? Setzen die Gnu-Libraries den Slash bei Dateioperationen automatisch in einen Backslash um? Wie macht VC das?

    Grüsse
    emax

    PS: ich frage aus aktuellem Anlass: mein derzeitiges Projekt wird unter Linux entwickelt, soll aber portabel sein, Zielplattformen: Linux, AIX, Windows und (wirklich!) AS400.



  • Hallo "emax",

    Das du unter Linux arbeitest find ich echt klasse, ich will selbst bald von Windows abkommen, hab auch schon unter VMWare Workstation mein kleines KnopixLinux laufen! 🙂

    Ich arbeite mit "GnuC++"! In GnuC++ schneit das mit dem Slash oder Backslash egal zu sein, auch in PureBasic und Blitz3D ist das unwichtig!
    Wie dass in VisualC++ aussieht weiß ich nicht aber vermutlich ist das Windows allgemein egal, dafür ist Windows ja auch bekanntlich langsamer als Linux! 😉



  • Windows versteht auch normale Slashes... einfach mal in der Kommandozeile (CMD.EXE) benutzen. Kein Problem. Hat nichts mit dem Compiler zu tun...



  • 😡
    Was soll der C-Scheiß in einem C++-Forum? Entweder ihr verschiebt dieseb Thread oder lasst den Müll hier raus. Ist ja grausam. Und dann noch C++-Header nutzen und meinen das die rein müssten ... klar.

    #include <iostream>
    #include <fstream>
    
    int main() 
    {
        std::cout << "Mein Programm" << std::endl;
        std::ofstream file_stream("C:\\Test.cpp", std::ios::out);
        if (!file_stream)
            return 1;
    
        file_stream << "Das ist ja nen ulkiger Text!!!";
        file_stream.close();
        return 0;
    }
    

    deine C-Variante braucht den Header cstdio

    #include <cstdio>
    


  • Man danke!!!!
    Hab net gedacht dass ich des noch hin bekom.
    Jetz weiß ich au warum des dafor net geklappt hat.
    Hab erst gedacht bin zu blöd dafür. 😕
    Und braucht euch net zu wundern warum ich manchmal mit nem anderen Namen zurückgeschrieben hab(shorty080(2))des lag daran dass ich verrafft hab dass man
    sich erst einloggen muss :p .



  • (D)Evil schrieb:

    😡
    Was soll der C-Scheiß in einem C++-Forum? Entweder ihr verschiebt dieseb Thread oder lasst den Müll hier raus. Ist ja grausam.

    hör auf zu jammern. 👎
    in c++ geht beides.



  • in c++ geht beides.

    Ja, manchmal tut mir das Leid. Ich gebe (D)Evil schon Recht, C Code hat nun wirklich nichts in C++ Code zu suchen, das ist absolut schlechter Stil. C und C++ sind zwei eigenständige Sprachen. Beide extrem zu vermischen ist wirklich keine gute Lösung, und es gibt bessere Alternativen. 👎

    MFG mikey.


Anmelden zum Antworten