Witam!
Mam pewien problem, mianowicie: piszę program do gry w kółko i krzyżyk, napisałem funkcję realizującą pobieranie danych od użytkownika - kod funkcji nie ma tu większego znaczenia ponieważ pisałem ją na 3 różne sposoby i wciąż jest ten sam problem.
Cała rzecz zasadza się na wielokrotnym użyciu tej funkcji. Wykonuje ona w zasadzie 3 operacje: wyświetla tekst zachęty, pobiera dane, zapisuje je do tablicy. Jednakże gdy chcę ją uruchomić więcej niż raz - dajmy na to 4 razy - to owszem, wyświetli się 4 razy tekst zachęty, ale czekać na podanie danych będzie tylko raz. WTF ?! O co chodzi? Czemu tak się dzieje ? Proszę o szybką odpowiedź.
Pozdrawiam i z góry dziękuję.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ERROR1 "\n!!! BŁĄD: złe współrzędne, podaj poprawne dane !!!\n"
void surf_gen(char surf_array[][5]); /*prototyp funkcji rysującej planszę*/
int player_turn(char surf_array[][5]); /*prototyp funkcji wprowadzania poleceń*/
//*******************************************************************************************************************
/*program do gry w kółko i krzyżyk*/
int main() {
int x_count, y_count; /*zmienne służące do indeksowania pętli czyszczącej planszę'*/
char surface[5][5]; /*tablica zawierająca informacje o planszy*/
srand(time(0));
for(x_count=0;x_count<5;x_count++) {
for(y_count=0;y_count<5;y_count++) { /*pętla 'zerująca' planszę*/
surface[x_count][y_count]=' ';
}
}
player_turn(surface);
player_turn(surface);
return 0;
}
//***************************************************************************************************************
/*funkcja generująca aktualny stan planszy*/
void surf_gen(char fields[5][5]) {
int in_y;
//system("clear"); /*dla lepszego efektu czyści ekran przed każdym odświerzeniem planszy*/
putchar('\n');
for(in_y=3;in_y>0;in_y--) /*wyświetla planszę paskami równoległymi do osi x*/
printf(" %d[%c][%c][%c]\n", in_y, fields[1][in_y], fields[2][in_y], fields[3][in_y]);
printf(" 1 2 3\n\n");
return;
}
//*******************************************************************************************************
/*funkcja wprowadzania komend*/
int player_turn(char surf_array[5][5]) {
surf_gen(surf_array);
printf("Wprowadź współrzędne pola w postaci < x,y > :\t");
short length=4, indx=0;
char command[length], input; /*wprowadzanie*/
while((input=getchar())!='\n') {
command[indx++]=input;
if(indx==length-1) break;
}
command[indx]='\0';
short x, y;
x=atoi(command);
command[0]=command[2];
y=atoi(command);
char mark;
mark=surf_array[x][y];
if(mark!=' ')
puts(ERROR1);
else
surf_array[x][y]='X';
return 0;
}