Advertisement
Guest User

Hangman in C (v2)

a guest
Jan 23rd, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.45 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. void draw(int);
  5. void draw_wort(char[], char[]);
  6. int wort_gefunden(char[], char[]);
  7.  
  8. char wort[] = "test";
  9. int fehler = 0;
  10. const int MAX_FEHLER = 9;
  11. const int MAX_WORTLAENGE = 1024;
  12.  
  13. int main(void)
  14. {
  15.     printf("Gebe das Wort ein, welches er erraten soll, es duerfen aber nur kleinbuchstaben sein.\n");
  16.     scanf("%s", wort);
  17.  
  18.     // hiermit holen wir uns die ganze länge des Suchworts.
  19.     int wortLaenge = strlen(wort);
  20.  
  21.     // Hiermit merken wir uns welche Buchstaben wir bereits gefunden haben
  22.     char gefundene[MAX_WORTLAENGE];
  23.     int gefundenAnzahl = 0;
  24.     int gewonnen = 0;
  25.  
  26.     do
  27.     {
  28.         // Das wird die Eingabe von einem Wort (Buchstaben) beinhalten.
  29.         char eingabe[1];
  30.         scanf("%s", eingabe);
  31.  
  32.         // Wir haben noch kein Buchstaben gefunden. -> ist erst der Anfang von der For-Schleife
  33.         int gefunden = 0;
  34.  
  35.         // Wir prüfen jeden einzelnen Buchstaben des Suchworts mit dem gerade eingegebenen Buchstaben.
  36.         for (int i = 0; i < wortLaenge; i++)
  37.         {
  38.             // Wenn wir einen Treffer haben, können wir uns den Buchstaben merken
  39.             // und vorzeitig abbrechen.
  40.             if (wort[i] == eingabe[0])
  41.             {
  42.                 gefunden = 1;
  43.                 gefundene[gefundenAnzahl] = eingabe[0];
  44.                 gefundenAnzahl++;
  45.                 break;
  46.             }
  47.         }
  48.         // Wenn kein Buchstabe gefunden wurde, wurde ein Fehler gemacht.
  49.         if (gefunden == 0)
  50.         {
  51.             fehler++;
  52.         }
  53.         // Zeichnen vom Galgenmännchen
  54.         draw(fehler);
  55.         draw_wort(wort, gefundene);
  56.  
  57.         gewonnen = wort_gefunden(wort, gefundene);
  58.         // Solange spielen bis man entweder verloren oder gewonnen hat.
  59.     } while ((fehler < MAX_FEHLER) && (gewonnen == 0));
  60.     if (gewonnen != 0)
  61.     {
  62.         printf("Du hast Gewonnen!");
  63.     }
  64.     else
  65.     {
  66.         printf("Loser!");
  67.     }
  68.  
  69.     return 0;
  70. }
  71.  
  72. void draw(int fehlerAnzahl)
  73. {
  74.     char fehler_0[] =
  75.         "\n\n\n\n\n\n\n";
  76.     char fehler_1[] =
  77.         "\n|\n|\n|\n|\n|\n|\n";
  78.     char fehler_2[] =
  79.         " _________\n|\n|\n|\n|\n|\n|\n";
  80.     char fehler_3[] =
  81.         " _________\n|         |\n|           \n|          \n|          \n|              \n|              \n";
  82.     char fehler_4[] =
  83.         " _________\n|         |    \n|         0    \n|          \n|          \n|              \n|              \n";
  84.     char fehler_5[] =
  85.         " _________     \n|         |    \n|         0    \n|         |  \n|          \n|              \n|              \n";
  86.     char fehler_6[] =
  87.         " _________\n|         |    \n|         0    \n|        /|  \n|              \n|              \n|              \n";
  88.     char fehler_7[] =
  89.         " _________\n|         |    \n|         0    \n|        /|\\  \n|              \n|              \n|              \n";
  90.     char fehler_8[] =
  91.         " _________\n|         |    \n|         0    \n|        /|\\  \n|        /  \n|              \n|              \n";
  92.     char fehler_9[] =
  93.         " _________\n|         |    \n|         0    \n|        /|\\  \n|        / \\  \n|              \n|              \n";
  94.  
  95.     char *ergebnis;
  96.     switch(fehlerAnzahl)
  97.     {
  98.         case 0: ergebnis = fehler_0; break;
  99.         case 1: ergebnis = fehler_1; break;
  100.         case 2: ergebnis = fehler_2; break;
  101.         case 3: ergebnis = fehler_3; break;
  102.         case 4: ergebnis = fehler_4; break;
  103.         case 5: ergebnis = fehler_5; break;
  104.         case 6: ergebnis = fehler_6; break;
  105.         case 7: ergebnis = fehler_7; break;
  106.         case 8: ergebnis = fehler_8; break;
  107.         case 9: ergebnis = fehler_9; break;
  108.     }
  109.  
  110.     printf("═══════════════════════════════\n%s\n═══════════════════════════════\n", ergebnis);
  111. }
  112.  
  113. int wort_gefunden(char wort[], char gefundeneBuchstaben[])
  114. {
  115.     int alle_gefunden = 0;
  116.     // Prüfen ob alle buchstaben aus dem Suchwort gefunden wurden.
  117.     // alle_gefunden muss die Länge des Suchworts haben.
  118.     for (int j = 0; j < strlen(gefundeneBuchstaben); j++)
  119.     {
  120.         for (int i = 0; i < strlen(wort); i++)
  121.         {
  122.             if (wort[i] == gefundeneBuchstaben[j])
  123.             {
  124.                 alle_gefunden++;
  125.             }
  126.         }
  127.     }
  128.     if (alle_gefunden == strlen(wort))
  129.     {
  130.         return 1;
  131.     }
  132.     return 0;
  133. }
  134.  
  135. void draw_wort(char wort[], char gefundeneBuchstaben[])
  136. {
  137.     // Alle Buchstaben ablaufen und jeden buchstaben "zeichen" wenn er gefunden wurde.
  138.     // Ansonsten mit einem "_" verstecken.
  139.     for (int i = 0; i < strlen(wort); i++)
  140.     {
  141.         char buchstabe;
  142.         int gefunden = 0;
  143.  
  144.         for (int j = 0; j < strlen(gefundeneBuchstaben); j++)
  145.         {
  146.             if (wort[i] == gefundeneBuchstaben[j])
  147.             {
  148.                 gefunden = 1;
  149.             }
  150.         }
  151.         if (gefunden == 0) buchstabe = '_';
  152.         else buchstabe = wort[i];
  153.        
  154.         printf("%c", buchstabe);
  155.     }
  156.     printf("\n");
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement