From 9ecee70798903441092b49371a8ffb1964d4b42d Mon Sep 17 00:00:00 2001 From: Edi De Candido Date: Thu, 18 May 2023 11:59:36 +0200 Subject: [PATCH] checkmove --- TODO.txt | 12 ++---------- src/custom_signal.c | 28 +++++++++++++-------------- src/forza4.c | 47 ++++++++++++++++++++++++++++++++++----------- 3 files changed, 52 insertions(+), 35 deletions(-) diff --git a/TODO.txt b/TODO.txt index 3367e7f..f662710 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,17 +1,9 @@ - magari fare che (alcune delle) print vengano messe su tutti e tre i terminali (motivo per cui ho messo le funzioni in nonsodovemetterle) (forse basta tipo duplicare il fd ma sono stanco ci penso domani) - -- controllo input dei client - + - sistemare include (FARE SOLO ALLA FINE ALTRIMENTI SPRECO DI TEMPO COME LA TUA VITA) - invece di fare tutti if == -1 si potrebbe fare come semOp e creare una funzione identica che fa gia il controllo (ha come svantaggio che non puoi specifare dove va in errore con l'errexit) - (anche se forse basta passare la/le stringe ma vedi riga 3) - -- killare il server deve uccidere i figli - -- isValid รจ corretto? - -- getIndex con define? \ No newline at end of file + (anche se forse basta passare la/le stringe ma vedi riga 3) EDI APPROVA diff --git a/src/custom_signal.c b/src/custom_signal.c index 2e6c4a4..570f049 100644 --- a/src/custom_signal.c +++ b/src/custom_signal.c @@ -9,20 +9,20 @@ void serverSigHandler(int sig) { static int sigint_count = DEFAULT_SIGINT; switch (sig) { - case SIGINT: - sigint_count--; - if (sigint_count > 0) { - printf(" Press again Ctrl^C to exit (whitin %d sec)\n", TIME_TO_RESET); - alarm(TIME_TO_RESET); - } else { - // TODO bisogna fare un "at exit" - exit(0); - } - break; - default: //SIGALRM - printf(" Time to exit (%d sec) expired\n", TIME_TO_RESET); - sigint_count = DEFAULT_SIGINT; - break; + case SIGINT: + sigint_count--; + if (sigint_count > 0) { + printf(" Press again Ctrl^C to exit (whitin %d sec)\n", TIME_TO_RESET); + alarm(TIME_TO_RESET); + } else { + // TODO bisogna fare un "at exit" + exit(0); + } + break; + default: //SIGALRM + printf(" Time to exit (%d sec) expired\n", TIME_TO_RESET); + sigint_count = DEFAULT_SIGINT; + break; } } diff --git a/src/forza4.c b/src/forza4.c index 16031a3..d5521cd 100644 --- a/src/forza4.c +++ b/src/forza4.c @@ -1,6 +1,6 @@ #include #include - +#include #include void setRows(int rows) { @@ -11,13 +11,18 @@ void setCollums(int collums) { _COLLUMS = collums; } +void setDimension(int rows, int collums) { + setRows(rows); + setCollums(collums); +} + void setTokens(char t1, char t2) { _TOKEN1 = t1; _TOKEN2 = t2; } -int getIndex(int r, int c) { - return r * _COLLUMS + c; +int getIndex(int i, int j) { + return i * _COLLUMS + j; } @@ -73,10 +78,10 @@ int checkWinAll(tile_t *board){ return EMPTY; } -void printBoard(tile_t *board){ +void printBoard(tile_t *board) { for (int i=0; i < _ROWS; i++) { for (int j=0; j < _COLLUMS; j++) { - printTile(board[i * _COLLUMS + j]); + printTile(board[getIndex(i, j)]); if (j != _COLLUMS - 1) { printf(" | "); } else { @@ -84,7 +89,7 @@ void printBoard(tile_t *board){ } } - for(int j=0; i != _ROWS - 1 && j < _COLLUMS - 1; j++) { + for (int j=0; i != _ROWS - 1 && j < _COLLUMS - 1; j++) { printf("----"); } if (i < _ROWS - 1) { @@ -93,7 +98,7 @@ void printBoard(tile_t *board){ } } -void printTile(tile_t t){ +void printTile(tile_t t) { switch(t) { case EMPTY: printf(" "); @@ -107,9 +112,29 @@ void printTile(tile_t t){ } } -int getHeight(tile_t *board, int col){ - int height = _ROWS - 1; - while (height-- >= 0 && board[getIndex(height, col)] == EMPTY); +int checkMove(tile_t *board, int collums) { + if (collums < 0 || collums > _COLLUMS) { + char buf[100]; + sprintf(buf, "the collums must be between 1 and %d", _COLLUMS); + warningMsg(buf); + return -1; + } - return height; + if (board[collums] != EMPTY) { + char buf[100]; + sprintf(buf, "the collum %d is full", collums + 1); + warningMsg(buf); + return -1; + } + + int pos = collums; + while (isValid(pos + VERTICAL) && board[pos + VERTICAL] == EMPTY) { + pos += VERTICAL; + } + + return pos; +} + +void insertCoin() { + } \ No newline at end of file