Anfänger Frage zu Benutzereingaben (C)



  • Hallo,

    ich habe eine, für euch sicherlich leichte, Frage bezüglich dem Einlesen und dann dementsprechendes Handeln von Text. Da ich nicht so recht weiß, womit ich starten kann, beschloss ich, ein kleines, Text/CMD basiertes Spielchen zu kreieren.
    Aber jetzt häng ich mich bei einem kleinen Problem auf. Nämlich soll, wenn der User beispielsweise "Geldstand" oder "Inventar" eingibt, eine dementsprechende Funktion gestartet werden.

    Nur, wie lese ich die Nutzereingaben richtig ein?
    Also, egal wo oder wann das eingegeben wird, die Funktion soll immer ausgeführt werden.

    Bis jetzt hab ich diesen Code zusammengebastelt:

    #include <stdio.h>
    #include <stdlib.h>
    
    //Globale Variablen
    
    int geld;
    geld=100;
    char string_geldabfragen[1000] = {"Geldstand"};
    char string_inventaroeffnen[1000] = {"Inventar"};
    
    // Funktionen
    
    int function_geldabfragen()
    {
        printf("Sie besitzen %d", geld);
        printf(" Gold. \n");
    }
    
    int function_inventar()
    {
        printf("Im Inventar befinden sich folgende Sachen: ");
    }
    
    //Hauptteil
    
    int main()
    {
    
    //Allgemeine Abfragen
    
    if (fgets(string_geldabfragen, 1000, stdin))
    {
       function_geldabfragen();
    }
    
    if (fgets(string_inventaroeffnen, 1000, stdin))
    {
       function_inventar();
    }
    
    //Spielgeschehen
    
    system("PAUSE");
    return 0;
    }
    

    Nur, 1. funktioniert das nicht, egal was ich eingebe, ausgeführt werden die Funktionen der Reihe nach und 2. verstehe ich den Code selbst nicht ganz, vermutlich weil er falsch ist.

    Wenn jemand ein Codebeispiel oder Lösungsansatz für mein "Problem" (am besten mit Erklärung) machen würde, wäre das sehr nett. Und sorry für die Frage, ist sicher schon zich mal gestellt worden.
    🙂

    Grüße



  • Petunien schrieb:

    egal was ich eingebe, ausgeführt werden die Funktionen der Reihe nach

    So funktionieren Computerprogramme nun mal.

    Du musst

    - den Text einlesen.
    - den Text mit "Geldstand" vergleichen und bei Gleichheit function_geldabfragen() aufrufen.
    - den Text mit "Inventar" vergleichen und bei Gleichheit function_inventar() aufrufen.
    - .....
     von vorne anfangen
    

    Petunien schrieb:

    Und sorry für die Frage, ist sicher schon zich mal gestellt worden.

    Hast du schon die Forensuche ausprobiert?

    Wie/Womit lernst du C?



  • DirkB schrieb:

    Du musst

    - den Text einlesen.
    - den Text mit "Geldstand" vergleichen und bei Gleichheit function_geldabfragen() aufrufen.
    - den Text mit "Inventar" vergleichen und bei Gleichheit function_inventar() aufrufen.
    - .....
     von vorne anfangen
    

    Ist es also die einzige Möglichkeit, jeden Text, der eingegeben wird, immer auf diese Sachen hin zu überprüfen? Gibt es keine Möglichkeit, einfach explizit zu sagen, "wenn dasunddas eingegeben, dann starte funktion soundso"?

    DirkB schrieb:

    Hast du schon die Forensuche ausprobiert?

    Jein, ich habe ein paar Seiten per Hand durchsucht, da meine Forensuchen sehr selten von Erfolg gekrönt sind, hätte aber länger suchen müssen, falls du das meinst. Desweiteren habe ich natürlich auch Google angestrengt, will hier nicht als faul erscheinen.

    DirkB schrieb:

    Wie/Womit lernst du C?

    Mehrere Internetseiten sowie dutzende Anleitungen in Videoform in englischer/deutscher Sprache.



  • Was soll der Unterschied sein zwischen

    Petunien schrieb:

    Ist es also die einzige Möglichkeit, jeden Text, der eingegeben wird, immer auf diese Sachen hin zu überprüfen?

    und

    Petunien schrieb:

    Gibt es keine Möglichkeit, einfach explizit zu sagen, "wenn dasunddas eingegeben, dann starte funktion soundso"?



  • Der Einfachheit halber macht man so etwas häufig in der Art, dass man auf den Bildschirm ausgibt:

    Geld abfragen = 0
    Inventar öffnen = 1
    dies machen = 2
    jenes machen = 3

    Ihre Eingabe:

    und den User nun eine der Zahlen 0 - 3 eingeben lässt. Auf Grund der eingegebenen Zahl führt man dann im Programm die entsprechende Aktion aus.



  • Danke, aber das Prinzip ist mir bereits bekannt.

    Nach euren Antworten muss man also wirkliche jede Eingabe überprüfen, ist zwar umständlich, aber was solls.

    Eigentlich auch logisch, sry.

    Danke für die Antworten... 🙂



  • Du kannst dein Programm auch Event-gesteuert machen.
    Das wird z.B. bei einem GUI so gemacht.

    Wenn du da ein Knöpfchen drückst, wird das auch nebenher ausgeführt.
    Da knnst du eine Textfeld machen, das dann eine Funktion ausführt.
    - Nur den Vergleich nach der Texteingabe wirst du da auch machen müssen.

    Das ist dann aber nicht mehr Standard-C.
    Das gehört dann zur entsprechenden API (Windows, Linux, ...)

    Petunien schrieb:

    Mehrere Internetseiten sowie dutzende Anleitungen in Videoform in englischer/deutscher Sprache.

    Nicht gut.
    Besorg dir ein Buch. Aus Papier.



  • Buch... naja, ich weiß nicht. Will mich eher so nebenher damit beschäftigen.

    Aber danke.



  • Petunien schrieb:

    Buch... naja, ich weiß nicht. Will mich eher so nebenher damit beschäftigen.

    Dann leih dir eins aus.
    Ohne Buch wird das nichts.

    Kannst du schon programmieren? Irgendeine andere Sprache?



  • HTML

    Aber das ist ja keine richtige Sprache. Die Sache ist nur die, ich bin nicht unbedingt aufs Fertigstellen von supertollen Programmen aus, sondern suche eine Sprache, mit der man ein bisschen rumspielen, evtl. andere Programme verändern kann.
    Pendle nun schon zwischen C und anderen hin und her, probiere eben ein bisschen aus. Sogar LUA war schon drunter... 🙂

    Evtl. probier ich mal C#.

    Aber eben für diese Spielereien möcht ich kein Geld ausgeben, aber ausleihen ist eine gute Idee. Danke, ich gehe sobald als möglich in die örtliche Bibliothek...



  • Such mal im Web nach the gnu c programming tutorial - damit hab ich C gelernt.
    Da wird auch auf Windows-Belange eingegangen.



  • Ich schau mal, danke.


Log in to reply