Frage von TheBest4Ever, 27

C-Problem mit text labyrinth, kann mir jemand helfen?

Hallo zusammen, ich wollte mir ein kleines Spiel schreiben so als übung, weil ich gerade mit C angefangen habe und komme einfach nicht weiter. also ich starte es und habe die Möglichkeit gegeben das spiel zu verlassen ansonsten sollte man es spielen können, aber es geht einfach nicht richtig. Hier mal der Code:

#include <windows.h> 
#include <stdio.h>

main()
{
      char richtung[10];
      char eingabe[10];
      printf("\n\tDas Labyrinth\n\n");
      printf("------ HILFE ------\nNorden = north\nWesten = west\nSueden = south\n Osten = ost");
      printf("\n\n\nDu befindest dich am Eingang von einem grossen Labyrinth.\nNoch besteht die Moeglichkeit zu fluechten, indem du ");
      printf("exit eingibst.\nansonsten kannst du nach norden gehen, \nlinks und rechts sind riesige Gruene Hecken und du hast keinen Gegenstand \nbei dir, ");
      printf("der dir bei dem Abenteur helfen kann.\n");
      printf("Wo lang moechtest du gehen ?: ");
      scanf("%s",&richtung);
      scanf("%s",&eingabe);
      if(richtung == "north")
      {
              printf("du bist nach Norden gegangen. Du kannst nach links oder nach rechts gehen.\n");            
      }
      else if(richtung == "west" || richtung == "south" || richtung == "ost")
      {
              printf("hier lang kannst du nicht gehen!\n");
      }
            if(eingabe == "exit");
      {
              printf("du hast das Spiel verlassen. auf wiedersehen");
              getch();            
      }
 system("pause");     
 return 0;
}

wäre nett, wenn mir jemand helfen könnte ;)

Antwort
von TheBest4Ever, 9

Danke, ich glaube so könnte es funktonieren, aber wird es dann nicht etwas unübersichtlich ?...

      char richtung[15];
int versuch;
system("COLOR 0C");
printf("\n\tDas Labyrinth (produced by Ben Damerow(c))\n\n");
printf("------ HILFE ------\nNorden = north\nWesten = west\nSueden = south\n Osten = ost");
printf("\n\n\nDu befindest dich am Eingang von einem grossen Labyrinth.\n");
printf("du kannst nach norden gehen, \nlinks und rechts sind riesige gruene Hecken und du hast keinen Gegenstand \nbei dir, ");
printf("der dir bei dem Abenteur helfen kann.\n");
do
{
printf("Wo lang moechtest du gehen ?\n>");
gets(richtung);
if(strcmp("north",richtung) == 0)
{
printf("Sie sind nach Norden gegangen. ");
break;
}
else
printf("Hier kannst du nicht lang gehen\n");
versuch--;
}
while(versuch > 0);
printf("Hier fuehrt ein Weg nach westen und einer nach Osten.");
do
{
printf("Wo lang moechtest du gehen ?\n>");
gets(richtung);
if(strcmp("west",richtung) == 0)
{
printf("Sie sind nach westen gegangen. Es fuehrt ein Weg nach Westen und einer nach Norden");
do
{
printf("Wo lang moechtest du gehen ?\n>");
gets(richtung);
if(strcmp("west",richtung) == 0)
{
printf("Sie sind nach Westen gegangen, aber hier geht es wohl nicht weiter\n");
do
{
printf("Wo lang moechtest du gehen ?\n>");
gets(richtung);
if(strcmp("ost",richtung) == 0)
{
printf("Sie sind nach Osten gegangen. ");
break;
}
else
printf("Hier kannst du nicht lang gehen\n");
versuch--;
}
while(versuch > 0);
break;
}
else if(strcmp("north",richtung) == 0)
{
printf("Sie sind nach Norden gegangen. ");
break;
}
else
printf("Hier kannst du nicht lang gehen\n");
versuch--;
}
while(versuch > 0);
break;
}
else if(strcmp("ost",richtung) == 0)
{
printf("Sie sind nach Osten gegangen. ");
break;
}
else
printf("Hier kannst du nicht lang gehen\n");
versuch--;
}
while(versuch > 0);
Antwort
von Fitje, 14

Bei einer scanf-Anweisung brauchst du den Adressoperator "&" beim einlesen von Strings nicht angeben. Bei allen anderen Arten von Variablen schon. Das kommt daher, das bei Strings, also in der C-Programmierung sind das zumeist statische Arrays, sowieso die ersten elemente angesprochen werden, somit entfällt NUR bei Strings bei scanf  das "&"-Zeichen.

Außerdem mußt du mit strcmp die Strings vergleichen und mit dem Rückgabewert von strcmp bei if arbeiten.


Antwort
von Fitje, 11

Hier mal mein Beispiel dazu:

if((strcmp (richtung, "north")) == 0 )

{

.....................;

}

else if(((strcmp (richtung, "west")) == 0 ) || ((strcmp (richtung, "south")) == 0 ) || ((strcmp (richtung, "ost")) == 0))

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten