Tastaturabfrage funzt net

Dieses Thema im Forum "C/C++" wurde erstellt von djtraumwelt, 10.12.2006.

  1. #1 djtraumwelt, 10.12.2006
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    Code:
    #include <stdio.h>
    
    int ort = 1;
    int exit = 0;
    char *nter = " ";
    
    int main ()
    {
     printf ("Sie befinden sich mitten in einem Komplex aus engen Gängen\nund wissen nicht, wie sie da hin gekommen sind.\nSie wollen weg von diesem seltsamen Ort,\nwas sich aber als ziemlich schwierig erweisen wird...\nZum Beenden des Spiels geben Sie q ein.\n");
    
     while (exit == 0)
     {
      printf ("%s",nter);
    
      if (ort == 1)
      {
       printf ("Sie können nach (l)inks, (r)echts, (o)ben, (u)nten laufen!\n");
       if (nter == "q") exit = 1;
       if (nter == "l") ort = 2;
       if (nter == "r") ort = 3;
       if (nter == "o") ort = 4;
       if (nter == "u") ort = 5;
      }
    
      if (ort == 2)
      {
       printf ("Sie können nach (r)echts laufen!\n");
       if (nter == "q") exit = 1;
       if (nter == "r") ort = 1;
      }
    
      if (ort == 3)
      {
       printf ("Sie können nach (l)inks, (o)ben laufen!\n");
       if (nter == "q") exit = 1;
       if (nter == "l") ort = 1;
       if (nter == "o") ort = 6;
      }
    
      if (ort == 4)
      {
       printf ("Sie können nach (l)inks, (u)nten laufen!\n");
       if (nter == "q") exit = 1;
       if (nter == "l") ort = 7;
       if (nter == "u") ort = 1;
      }
    
      if (ort == 5)
      {
       printf ("Sie können nach (r)echts, (o)ben laufen!\n");
       if (nter == "q") exit = 1;
       if (nter == "o") ort = 1;
       if (nter == "r") ort = 8;
      }
    
      if (ort == 6)
      {
       printf ("Sie können nach (u)nten laufen!\n");
       if (nter == "q") exit = 1;
       if (nter == "u") ort = 3;
      }
    
      if (ort == 7)
      {
       printf ("Sie können nach (r)echts, (o)ben laufen!\n");
       if (nter == "q") exit = 1;
       if (nter == "o") ort = 9;
       if (nter == "r") ort = 4;
      }
    
      if (ort == 8)
      {
       printf ("Sie können nach (l)inks, (o)ben laufen!\n");
       if (nter == "q") exit = 1;
       if (nter == "l") ort = 5;
       if (nter == "o") ort = 10;
      }
    
      if (ort == 9)
      {
       printf ("Sie können nach (r)echts, (o)ben, (u)nten laufen!\n");
       if (nter == "q") exit = 1;
       if (nter == "o") ort = 11;
       if (nter == "r") ort = 12;
       if (nter == "u") ort = 7;
      }
    
      if (ort == 10)
      {
       printf ("Sie können nach (l)inks, (u)nten laufen!\n");
       if (nter == "q") exit = 1;
       if (nter == "l") ort = 13;
       if (nter == "u") ort = 1;
      }
    
      if (ort == 11)
      {
       printf ("Sie können nach (r)echts, (u)nten laufen!\n");
       if (nter == "q") exit = 1;
       if (nter == "r") ort = 14;
       if (nter == "u") ort = 9;
      }
    
      if (ort == 12)
      {
       printf ("Sie können nach (l)inks, (u)nten laufen!\n");
       if (nter == "q") exit = 1;
       if (nter == "l") ort = 9;
       if (nter == "u") ort = 15;
      }
    
      if (ort == 13)
      {
       printf ("Sie können nach (r)echts laufen!\n");
       if (nter == "q") exit = 1;
       if (nter == "r") ort = 10;
      }
    
      if (ort == 14)
      {
       printf ("Sie können nach (l)inks, (u)nten laufen!\n");
       if (nter == "q") exit = 1;
       if (nter == "l") ort = 11;
       if (nter == "u") ort = 16;
      }
    
      if (ort == 15)
      {
       printf ("Sie haben einen Porter zu Level 2 gefunden\n");
       ort = 20;
      }
    
      if (ort == 16)
      {
       printf ("Sie können nach (o)ben laufen!\n");
       if (nter == "q") exit = 1;
       if (nter == "o") ort = 14;
      }
    
      if (ort == 20) exit = 1;
    
      scanf ("%s", &nter);
    
     }
     return 0;
    }
    
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. cremi

    cremi Dude

    Dabei seit:
    15.02.2004
    Beiträge:
    329
    Zustimmungen:
    0
    Ort:
    AUT/Ktn
    nur mal kurz drüber geschaut aber du list ort ja niergens ein
     
  4. #3 djtraumwelt, 10.12.2006
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    das mit ort funktioniert, nur nter funktioniert nicht. ich bräuchte ne funktion, die auf eingabe einer taste wartet ohne dass man enter drücken muss und den buchstaben dann in nter schreibt
     
  5. #4 cremi, 10.12.2006
    Zuletzt bearbeitet: 10.12.2006
    cremi

    cremi Dude

    Dabei seit:
    15.02.2004
    Beiträge:
    329
    Zustimmungen:
    0
    Ort:
    AUT/Ktn
    getch() - see this

    edit:
    wieso nimmst du einenen char-pointer für nter.
    nimm einfach einen char nter und frag den direkt ab - ohne die ganzen ifs und ort-zuweisungen
    du solltest auch absichern dass man nicht mehr als 1 zeichen eingeben kann für nter
    wieso sind deine variablen alle global definiert?

    ich würds so machen:
    Code:
    #include <stdio.h>
    #include <termios.h>
    
    int getch() {
        static int ch = -1, fd = 0;
        struct termios neu, alt;
        fd = fileno(stdin);
        tcgetattr(fd, &alt);
        neu = alt;
        neu.c_lflag &= ~(ICANON|ECHO);
        tcsetattr(fd, TCSANOW, &neu);
        ch = getchar();
        tcsetattr(fd, TCSANOW, &alt);
        return ch;
    }
    
    int main ()
    {
    
     int ort = 1;
     int exit = 0;
     char c;
    
     printf ("Sie befinden sich mitten in einem Komplex aus engen Gängen\nund wissen nicht, wie sie da hin gekommen sind.\nSie wollen weg von diesem seltsamen Ort,\nwas sich aber als ziemlich schwierig erweisen wird...\nZum Beenden des Spiels geben Sie q ein.\n");
    
     while (exit == 0)
     {
    
    
      if (ort == 1)
      {
       printf ("Sie können nach (l)inks, (r)echts, (o)ben, (u)nten laufen!\n");
       c=getch();
       if (c == 'q') exit = 1;
       if (c == 'l') ort = 2;
       if (c == 'r') ort = 3;
       if (c == 'o') ort = 4;
       if (c == 'u') ort = 5;
       printf("ORT %i\n",ort);
      }
    
      [...]
    
     }
     return 0;
    }
    
     
  6. #5 djtraumwelt, 10.12.2006
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    hab jetzt #include <curses.h> reingeschrieben, damit er die funktion getch() findet und versucht mit -lcurses zu kompilieren. dann sagt er mir cannot find -lcurses
     
  7. #6 djtraumwelt, 10.12.2006
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    dann krieg ich einen speicherzugriffsfehler, wenn ich das so mache.

    char c; gibt mir ganz viele warnungen und char *c = " "; keine
     
  8. #7 cremi, 10.12.2006
    Zuletzt bearbeitet: 10.12.2006
    cremi

    cremi Dude

    Dabei seit:
    15.02.2004
    Beiträge:
    329
    Zustimmungen:
    0
    Ort:
    AUT/Ktn
    da kriegst du aber die warnings wahrscheinlich weil du dann mit die werte mit denen du vergleichst unter doppelten hochkommas hast - die müssen unter einfachen stehen.

    Code:
    char c=' ';
    ...
    if (c=='l')
    ...
    
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. #8 djtraumwelt, 10.12.2006
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    danke jetzt funzt es
     
  11. #9 root1992, 10.12.2006
    root1992

    root1992 von IT-Lehrern besessen

    Dabei seit:
    02.01.2006
    Beiträge:
    1.138
    Zustimmungen:
    0
    Ort:
    Märchenwald
    Ich (mit g++/gcc) gebe -lncurses an. Ein NC-Oberfläche sieht gut aus, würde ich dir raten mal anzusehen. Als Wikibook ist es einfach erklärt.
     
Thema:

Tastaturabfrage funzt net

Die Seite wird geladen...

Tastaturabfrage funzt net - Ähnliche Themen

  1. X11 funzt nicht richtig

    X11 funzt nicht richtig: Hi Leute, ich möchte einer Bekannten Kubuntu auf ihrem alten Notebook installieren ( Alte Siemens Möhre mir 1400 Celeron und 512mb RAM). Linux...
  2. Cygwin, fetchmail und W2K8-Server funzt nicht

    Cygwin, fetchmail und W2K8-Server funzt nicht: Hallo zusammen, ich bekomme fetchmail unter W2K8 nicht zum laufen. Wenn ich fetchmail von der Kommandozeile starte funktioniert es...
  3. Tartarus + LVM funzt nicht

    Tartarus + LVM funzt nicht: Moin, habe einen rootserver (debian etch), und möchte mit tartarus dessen Daten sichern. Das ganze wird auf nen Backupserver innerhalb der...
  4. O2 Internet Stick funzt bei SUSE 11.0 nicht

    O2 Internet Stick funzt bei SUSE 11.0 nicht: Hi Ihr.. Folgendes: Ich habe mir vor kurzem den O2 Internet Stick besorgt und bin damit im grossen und ganzen recht zufrieden. Wie viele andere...
  5. umts-modem (usb) Novatel/Toshiba Portege r500 , welcher Chipsatz? funzt nicht!!

    umts-modem (usb) Novatel/Toshiba Portege r500 , welcher Chipsatz? funzt nicht!!: Hallo Leute, möchte das hsdpa/umts-modem auf einem Toshiba Portege r500 ( ppr50e-03902MGR ) mit vodafone zum laufen bringen, aber irgendwie krieg...