[C++] 2 Fragen (Werte Speichern) & (#define oder ähnliches)

  • Hallo,
    Ich bin gerade dabei ein Spiel in C++ zu programmieren. Erst kam ich auch ganz gut klar ( bin noch nicht lange bei C++ bei...). Doch nun bin ich an 2 probleme gestossen...und zwar das wären

    1. Weiß ich nicht, ob und wie man Werte speichern kann. Also, dass z.b. ich spiel und dann auf Save klicke (bzw. schreibe (ist ein konsolen Spiel :> )) und die Werte iwo gespeichert werden, dass sie trotz schliessen des programms nicht gelöscht werden. Und beim nächsten ausführen (womöglich auch nach pc neustart) wieder aufgerufen werden können...

    2. Soll man sich natürlich Waffen kaufen können...Nun das krieg ich alles hin...doch hab ich zurzeit pro waffe / gegenstand einen doch recht langen code... und da hab ich ne frage, ob man es nicht i.wie verkürzen kann? Also dass es automatisch da eingefügt wird... Für die jenigen, die sich auch nur minimal mit flyff p.servern auskennen - so etwas wie bspl. die propItem.txt
    für diejenigen, die sich nicht auskennen - in der propItem.txt werden werden werte von Waffen/ Gegenständen gespeichert...ne bspl. Zeile :

    Code
    6    II_DEFAULT    IDS_PROPITEM_TXT_000000    1    1    IK1_SYSTEM    =    =    =    =    =    =    1    =    =    =    =    =    =    =    0    =    =    =    =    =    =    =    =    =    =    =    _NONE    0    0    0    =    =    =    =    =    =    =    =    =    =    =    =    =    0.07    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    0    0    0    0    0    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    =    """"""    0    """"""    IDS_PROPITEM_TXT_000001

    jeder wert, nach einem TAB hat eine funktion...ich bräuchte jetzt zwar nicht sooo viele...xD eig. nur schaden, womöglich haltbarkeit, kosten,....vllt. so um die 5-10 Werte...Also hoffe ihr könnt meine definitionenen einwenig verstehen und wisst, was ich meine....


    Und auch einwenig helfen, entweder einen fertigen Code *.*, oder ein link zu einem solchen tutorial schicken, oder wenigstens einen Stichpunkt nennen...wie bsplweise solche variablen oder was es auch immer in Punkt 1 ist heißen...
    lg. Trinity :D
    rechtscheibfÊhler und co. sind eingebaut, damit man sich auf das lezen noch konzentriert.... :P

  • [COLOR="#4169e1"]Zu 1.:
    Du könntest dafür ein Textdokument benutzen.
    Pro Zeile würdest du eben die verschiedenen Werte speichern.
    (Zeile 1 - Level / Zeile 2 - HP, usw.)

    Zu 2.:
    Da könntest du pro Waffe/Gegenstand ein Textdokument verwenden, das wäre aber nicht gerade die optimale Lösung aber eine Option ;)[/COLOR]

    [COLOR=#ff8c00]Beet: lawl[/COLOR]
    [COLOR=#808080]Allowed: *lach*[/COLOR]
    [COLOR=#800080]Käser: XDDDDDD[/COLOR]
    [COLOR=#008000]Psycho: lol *g*[/COLOR]
    [COLOR=#d3d3d3]Gecko: *nach unten schau und nein schlummer*
    [/COLOR][COLOR=#EE82EE]Viech: "ErklärungsGenie", "interästing"[/COLOR]

  • Um die Werte zu speichern bietet sich die bereits implementierte Klasse "LevelSaver" der STL an. Einfach das Objekt des Levels übergeben und der Rest geschieht von allein.
    Für deine zweite Frage: Nutze am Besten die Funktion "loadFlyffResource()". Die ist in der Headerdatei linux/kernel/resource.h (Linux) bzw. win32/resource.h (Windows) definiert.

    Wenn dir das nicht weiterhilft, konzentriere dich auf meinen Vorposter oder lern programmieren ...

  • Zitat von Grandcore;243221

    Zu 1.:
    Du könntest dafür ein Textdokument benutzen.
    Pro Zeile würdest du eben die verschiedenen Werte speichern.
    (Zeile 1 - Level / Zeile 2 - HP, usw.)

    Zu 2.:
    Da könntest du pro Waffe/Gegenstand ein Textdokument verwenden, das wäre aber nicht gerade die optimale Lösung aber eine Option ;)

    Zu 1
    Also seinen Vorschlag verstehe ich wunderbar :D...habs auch hingekriegt, dass die werte die ich haben will auch gespeichert werden in einer datei bspl. weise leben=80 oder sonst was... also kann sie in beiden formaten speichern...
    1.
    leben=80
    stärke=10
    ...=....
    2.
    80
    10
    ....

    mit :

    Zitat

    ofstream schreiben;
    schreiben.open("test.txt");
    schreiben <<"lvl="<< lvl <<"\nhp="<< hp <<"\ncash="<< cash ;
    schreiben.close();
    cout << "Dein Spielstand wurde erfolreich gespeichert."<<endl;

    So nun hab ich ne frage, wie ich das wieder auslesen kann... :o

    das hab ich copy & paste :

    Zitat

    ifstream lesen;string data;
    lesen.open("test.txt");
    getline(lesen,data);

    So...aber wie kann ich nun zuordnen, dass die erste zeile nun wieder der integer variable lvl enstpricht? Oder geht das überhaupt?

    Zu 2 hat Grandcore mir nacher per chat den Tipp gegeben, dass ich ne .ini datei verweden könnte/sollte ...das mach ich auch :)..aber das mache ich erst, wenn problem 1 gelöst ist... :P

  • [FELD="Headerdateien"]#include<iostream>
    #include<fstream>
    #include<string>[/FELD]

    [FELD="Main"]ifstream file("test.txt");
    string level;
    string hp;
    string cash;

    getline(file,level); //1 Zeile
    cout << "Level: " << level << endl;

    getline(file,hp); //2 Zeile
    cout << "HP: " << hp << endl;

    getline(file,cash); //3 Zeile
    cout << "Cash: " << cash << endl;

    file.close();[/FELD]

    [COLOR="#4169e1"]Das auslesen geht irgendwie nur mit strings, aber du kannst ja strings in int umwandeln.[/COLOR]

    [COLOR=#ff8c00]Beet: lawl[/COLOR]
    [COLOR=#808080]Allowed: *lach*[/COLOR]
    [COLOR=#800080]Käser: XDDDDDD[/COLOR]
    [COLOR=#008000]Psycho: lol *g*[/COLOR]
    [COLOR=#d3d3d3]Gecko: *nach unten schau und nein schlummer*
    [/COLOR][COLOR=#EE82EE]Viech: "ErklärungsGenie", "interästing"[/COLOR]

  • Danke !!
    Das ist die lösung !!
    Endlich hab ichs geschafft :P
    Frage 1 wäre nun gepackt :D
    Mein Spiel kann nun auch endlich spielstände laden und speichern :D

  • [FELD="INI Datei schreiben (Falls du das benötigst)"]#include <Windows.h>

    int main()

    {
    WritePrivateProfileString("Schwert","DMG","100","c:\\test.ini");
    WritePrivateProfileString("Schwert","Preis","500","c:\\test.ini");
    WritePrivateProfileString("Schwert","Haltedauer","7","c:\\test.ini");

    WritePrivateProfileString("Helm","Verteidigung","23","c:\\test.ini");
    WritePrivateProfileString("Helm","Preis","250","c:\\test.ini");


    return 0;
    }[/FELD]

    [FELD="INI Datei lesen"]#include <Windows.h>

    int main()
    {
    char Preis[10];
    char Verteidigung[5];


    DWORD destSize;

    destSize=100;

    GetPrivateProfileString("Schwert","Preis","NULL",Preis,destSize,"c:\\test.ini"); //Preis von Schwert in 'Preis' gespeichert
    GetPrivateProfileString("Helm","Verteidigung","NULL",Verteidigung,destSize,"c:\\test.ini"); //Def von Helm in 'Verteidigung' gespeichert

    return 0;
    }[/FELD]

    [COLOR="#4169e1"]PS: Keine Ahnung warum, aber da sind Leerzeichen die da nicht hingehören, wie z.B. bei Preis & NULL -.-'[/COLOR]

    [COLOR=#ff8c00]Beet: lawl[/COLOR]
    [COLOR=#808080]Allowed: *lach*[/COLOR]
    [COLOR=#800080]Käser: XDDDDDD[/COLOR]
    [COLOR=#008000]Psycho: lol *g*[/COLOR]
    [COLOR=#d3d3d3]Gecko: *nach unten schau und nein schlummer*
    [/COLOR][COLOR=#EE82EE]Viech: "ErklärungsGenie", "interästing"[/COLOR]

  • Ist echt nett von dir, dass du mir so unter die arme greifst :D
    Hast ja schon n kleines bspl. gebracht, schau ich mir morgen an...gehe aber jetzt erst mal in die haya...:P
    Und danke noch mal ;D

    lg. Trinity

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!