Schiffe versenken in C

Neue Frage »

Auf diesen Beitrag antworten »
Lars Schiffe versenken in C

Meine Frage:
Ich bin's mal wieder, diesmal müssen wir in C Schiffe versenken programmieren und haben dafür eine Vorgabe bekommen. Bloß das Zählen, ob alle Schiffe versenkt wurden klappt net, ich verstehe nicht wieso. Es geht bis zu einer bestimmten Zahl, aber für alle klappts nicht unglücklich .

Meine Ideen:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
#include <stdio.h>

void anzeigen(char feld[][10])
{
	for (int i = 0; i != 10; ++i)
{
  for (int j = 0; j != 10; ++j)
    printf("%c", feld[i][j]);
  printf("\n");
}
}

int main() 
{
  char spielfeld[10][10]  = {
  {'s','s','.','s','.','.','s','s','s','s'},
  {'.','.','.','s','.','.','.','.','.','.'},
  {'s','.','.','s','.','s','s','s','.','s'},
  {'s','.','.','.','.','.','.','.','.','s'},
  {'s','.','.','.','.','.','.','.','.','.'},
  {'s','.','.','.','.','s','.','.','.','s'},
  {'.','.','.','.','.','s','.','.','.','s'},
  {'s','s','.','.','.','.','.','.','.','s'},
  {'.','.','.','.','.','.','.','.','.','.'},
  {'.','.','.','.','.','s','s','s','s','s'}
  };
 
  int schritte = 0;
  int y=0;

  while(y!=30) 
  {  
    anzeigen(spielfeld);
    int xko = 0; 
    int yko = 0;
    printf("\nFalls du beenden willst, gib [-1] ein");
    printf("\nGib die x-Koordinate (Spalte) ein, die du beschiessen willst (1-10): ");
    scanf("%i", &xko);
    printf("\nGib die y-Koordinate (Zeile) ein, die du beschiessen willst (1-10): ");
    scanf("%i", &yko);
    if(xko==-1 || yko==-1)break;
    schritte++;

    if(spielfeld[yko-1][xko-1] == 's') 
    { 
      printf("\nGetroffen! \n");
      spielfeld[yko-1][xko-1] = 'x';
    }
    else printf("\nnicht Getroffen. \n");
	

	for (int i = 0; i != 10; ++i)
	{
	 int x=0;
 	 for (int j = 0; j != 10; ++j)
 	 if(spielfeld[i][j]=='x')x++;
 	 if(x==30)
	  {
	  anzeigen(spielfeld);
	  y=x;
	  continue;
	  }
 	}
  
       
  }
 weiter: printf("Das waren %i Runden.\n", schritte);
 return 0;
}
 
Auf diesen Beitrag antworten »
Lars

Sorry, ich bin dämlich, ich hab das x falsch deklariert, nun funktioniert alles. Und ich saß 1h und hab den Fehler gesucht... Forum Kloppe
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
#include <stdio.h>

void anzeigen(char feld[][10])
{
	for (int i = 0; i != 10; ++i)
{
  for (int j = 0; j != 10; ++j)
    printf("%c", feld[i][j]);
  printf("\n");
}
}

int main() 
{
  char spielfeld[10][10]  = {
  {'s','s','.','s','.','.','s','s','s','s'},
  {'.','.','.','s','.','.','.','.','.','.'},
  {'s','.','.','s','.','s','s','s','.','s'},
  {'s','.','.','.','.','.','.','.','.','s'},
  {'s','.','.','.','.','.','.','.','.','.'},
  {'s','.','.','.','.','s','.','.','.','s'},
  {'.','.','.','.','.','s','.','.','.','s'},
  {'s','s','.','.','.','.','.','.','.','s'},
  {'.','.','.','.','.','.','.','.','.','.'},
  {'.','.','.','.','.','s','s','s','s','s'}
  };
 
  int schritte = 0;
  int y=0;

  while(y!=30) 
  {  
    anzeigen(spielfeld);
    int xko = 0; 
    int yko = 0;
    printf("\nFalls du beenden willst, gib [-1] ein");
    printf("\nGib die x-Koordinate (Spalte) ein, die du beschiessen willst (1-10): ");
    scanf("%i", &xko);
    printf("\nGib die y-Koordinate (Zeile) ein, die du beschiessen willst (1-10): ");
    scanf("%i", &yko);
    if(xko==-1 || yko==-1)break;
    schritte++;

    if(spielfeld[yko-1][xko-1] == 's') 
    { 
      printf("\nGetroffen! \n");
      spielfeld[yko-1][xko-1] = 'x';
    }
    else printf("\nnicht Getroffen. \n");
	
	int x=0;
	for (int s = 0; s != 10; ++s)
	{
 	 for (int d = 0; d != 10; ++d)
 	 if(spielfeld[s][d]=='x')x++;
 	 if(x==30)
	  {
	  anzeigen(spielfeld);
	  y=x;
	  continue;
	  }
 	}
  
       
  }
 
Neue Frage »
Antworten »


Verwandte Themen