kółko i krzyżyk jakiś błąd

0

Co tutaj jest poknocone, że nie działa? prawdopodobnie zwaliłem coś w tej funkcji odczytu

#include <stdio.h>
#include <stdlib.h>

char tablica[3][3];  

char check(void);
void init_tablica(void);
void ruch_gracza(void);
void ruch_komp(void);
void disp_tablica(void);
int main(void);
void wybor =-1;
{

  char done;

  printf("Witam w grze kołko i krzyzyk. Zapraszam do wspolnej zabawy\n");
  

  done =  ' ';
  init_tablica();
  if (wybor == 1) {
		FILE*plik=fopen("kolkoikrzyzyk.txt","r");

for(int i=0; i < 3; ++i)for(int j=0; j < 3; ++j)

tablica[i][j] = fgetc(plik);
fclose(plik);
		
               
        } else {
               
 puts("Kto zaczyna gre, władco:\n1 - KOMPUTER\n2 - UZYTKOWNIK");
int x;
scanf("%d", &x);
switch(x)
{
 case 1:
   disp_tablica();
   ruch_komp();
break;
}

do {
   disp_tablica();
   ruch_gracza();
   done = check(); 
   if(done!= ' ') break; 
   ruch_komp();
   done = check(); 
 } while(check() == ' ');;

  

 

  if(done=='X') printf("Wygrales!\n");
  else printf(" Wygralem\n");
  disp_tablica(); 

  return 0;
}}


void init_tablica(void)
{
  int i, j;

  for(i=0; i<3; i++)
    for(j=0; j<3; j++) tablica[i][j] =  ' ';
}


void ruch_gracza(void)
{
  int x, y;

  printf("Wpisz wspolrzedne ruchu: ");
  scanf("%d%*c%d", &x, &y);

  x--; y--;

  if(tablica[x][y]!= ' '){
    printf("Zle dane, sprobuj jeszcze raz.\n");
    ruch_gracza();
  }
  else tablica[x][y] = 'X';
}


void ruch_komp(void)
{
  int i, j;
  for(i=0; i<3; i++){
    for(j=0; j<3; j++)
      if(tablica[i][j]==' ') break;
    if(tablica[i][j]==' ') break;
  }

  if(i*j==9)  {
    printf("remis\n");
    exit(0);
  }
  else
    tablica[i][j] = 'O';
}


void disp_tablica(void)
{
  int t;

  for(t=0; t<3; t++) {
    printf(" %c | %c | %c ",tablica[t][0],
            tablica[t][1], tablica [t][2]);
    if(t!=2) printf("\n---|---|---\n");
  }
  printf("\n");
}


char check(void)
{
  int i;

  for(i=0; i<3; i++)  
    if(tablica[i][0]==tablica[i][1] &&
       tablica[i][0]==tablica[i][2]) return tablica[i][0];

  for(i=0; i<3; i++)  
    if(tablica[0][i]==tablica[1][i] &&
       tablica[0][i]==tablica[2][i]) return tablica[0][i];

  
  if(tablica[0][0]==tablica[1][1] &&
     tablica[1][1]==tablica[2][2])
       return tablica[0][0];

  if(tablica[0][2]==tablica[1][1] &&
     tablica[1][1]==tablica[2][0])
       return tablica[0][2];

  return ' ';
}
0

A może podałbyś treść błędu?

0

variable or field 'wybor' declared void 12_6
expected unqualified-id before '{' token 13_1

te dwa, i ogólnie chciałem żebyście sprawdzili czy dobrze jest zrobiona ta funkcja odczytu

0

A co to wg ciebie to ma znaczyć:

int main(void);
void wybor =-1;

?

0
 
void wybor =-1;
{
    //...
}

Co chcesz przez taki zapis osiągnąć?

0
#include <stdio.h>
#include <stdlib.h>

char tablica[3][3];  

char check(void);
void init_tablica(void);
void ruch_gracza(void);
void ruch_komp(void);
void disp_tablica(void);
int main(void);
{
int wybor;


  char done;

  printf("Witam w grze kołko i krzyzyk. Zapraszam do wspolnej zabawy\n");
  

  done =  ' ';
  init_tablica();
  if (wybor == 1) {
		FILE*plik=fopen("kolkoikrzyzyk.txt","r");

for(int i=0; i < 3; ++i)for(int j=0; j < 3; ++j)

tablica[i][j] = fgetc(plik);
fclose(plik);
		
               
        } else {
               
 puts("Kto zaczyna gre, władco:\n1 - KOMPUTER\n2 - UZYTKOWNIK");
int x;
scanf("%d", &x);
switch(x)
{
 case 1:
   disp_tablica();
   ruch_komp();
break;
}

do {
   disp_tablica();
   ruch_gracza();
   done = check(); 
   if(done!= ' ') break; 
   ruch_komp();
   done = check(); 
 } while(check() == ' ');;

  

 

  if(done=='X') printf("Wygrales!\n");
  else printf(" Wygralem\n");
  disp_tablica(); 

  return 0;
}


void init_tablica(void)
{
  int i, j;

  for(i=0; i<3; i++)
    for(j=0; j<3; j++) tablica[i][j] =  ' ';
}


void ruch_gracza(void)
{
  int x, y;

  printf("Wpisz wspolrzedne ruchu: ");
  scanf("%d%*c%d", &x, &y);

  x--; y--;

  if(tablica[x][y]!= ' '){
    printf("Zle dane, sprobuj jeszcze raz.\n");
    ruch_gracza();
  }
  else tablica[x][y] = 'X';
}


void ruch_komp(void)
{
  int i, j;
  for(i=0; i<3; i++){
    for(j=0; j<3; j++)
      if(tablica[i][j]==' ') break;
    if(tablica[i][j]==' ') break;
  }

  if(i*j==9)  {
    printf("remis\n");
    exit(0);
  }
  else
    tablica[i][j] = 'O';
}


void disp_tablica(void)
{
  int t;

  for(t=0; t<3; t++) {
    printf(" %c | %c | %c ",tablica[t][0],
            tablica[t][1], tablica [t][2]);
    if(t!=2) printf("\n---|---|---\n");
  }
  printf("\n");
}


char check(void)
{
  int i;

  for(i=0; i<3; i++)  
    if(tablica[i][0]==tablica[i][1] &&
       tablica[i][0]==tablica[i][2]) return tablica[i][0];

  for(i=0; i<3; i++)  
    if(tablica[0][i]==tablica[1][i] &&
       tablica[0][i]==tablica[2][i]) return tablica[0][i];

  
  if(tablica[0][0]==tablica[1][1] &&
     tablica[1][1]==tablica[2][2])
       return tablica[0][0];

  if(tablica[0][2]==tablica[1][1] &&
     tablica[1][1]==tablica[2][0])
       return tablica[0][2];

  return ' ';
}
0

nie zauważyłem tego, ale mimo, ze to poprawiłem to nadal nie chodzi

0

Bo ten program nie ma żadnego sensu. Funkcje i instrukcje można wywoływać tylko wewnątrz jakiejś innej funkcji. Nie wspomne nawet o braku ciała funkcji main...

0

A co to wg ciebie ma znaczyć:
int main(void);
?

0

Te wszystkie zadeklarowane przez Cb funkcje i tak się nigdy nie wykonają, bo nie wywołujesz żadnej z nich w main(która nie ma nawet ciała -.-).

1 użytkowników online, w tym zalogowanych: 0, gości: 1