From 4c6e50dfc2edfeef7a5f4b76b205766ef7ca76ab Mon Sep 17 00:00:00 2001 From: Lorenzo Bianchi Date: Thu, 25 May 2023 14:28:45 +0200 Subject: [PATCH] commit --- TODO.txt | 6 ++---- src/F4Client.c | 2 +- src/F4Server.c | 2 +- src/custom_sem.c | 2 -- src/custom_shm.c | 17 +++++++++++------ src/custom_sig.c | 2 +- src/forza4.c | 22 +++++++++------------- 7 files changed, 25 insertions(+), 28 deletions(-) diff --git a/TODO.txt b/TODO.txt index f9a7c03..8d6b608 100644 --- a/TODO.txt +++ b/TODO.txt @@ -5,10 +5,8 @@ - al momomento i client non sanno ancora le dimensioni del campo (le hanno ricevute ma non settate) (in realta non so perche funzioni la checkwin al momento) -- sistemare se usare printfServer/Client - - ho messo input del server globale, alcune funzioni non ne usufruiscono ancora (tip shm); -- printfServer mette \n all'inizio quindi non stampa lultima riga al momento +- define per i semafori invece di usare 1/-1 -- ho fatto le define per i semafori invece di usare 1/-1 \ No newline at end of file +- ctrl+c con time \ No newline at end of file diff --git a/src/F4Client.c b/src/F4Client.c index bb6f783..38cf18c 100644 --- a/src/F4Client.c +++ b/src/F4Client.c @@ -159,7 +159,7 @@ int main(int argc, char *argv[]){ int pos; do { scanf("%d", &move.move); - move.move = checkMove(boardClient, move.move); + move.move = checkMove(boardClient, move.move - 1); } while (move.move == -1); // mando mossa al server diff --git a/src/F4Server.c b/src/F4Server.c index 1d7be3b..8e4cdb1 100644 --- a/src/F4Server.c +++ b/src/F4Server.c @@ -20,7 +20,7 @@ #include int main(int argc, char *argv[]){ - printf("Il mio pid per killarmi: %d\n", getpid()); //TMP + printf("Il mio pid per killarmi: %d\n", getpid()); //FIXME: TMP // CHECK_INPUT _INPUT_S = check_input(argc, argv); diff --git a/src/custom_sem.c b/src/custom_sem.c index ea4303e..bf9780a 100644 --- a/src/custom_sem.c +++ b/src/custom_sem.c @@ -19,8 +19,6 @@ void setupServerSem() { } resetServerSem(_SEMID); - - printf("%d\n", _SEMID); } void semOp(int semid, short sem_num, short sem_op) { diff --git a/src/custom_shm.c b/src/custom_shm.c index db3186e..2e43513 100644 --- a/src/custom_shm.c +++ b/src/custom_shm.c @@ -4,6 +4,7 @@ #include #include +#include int _SHMID; @@ -17,21 +18,25 @@ int getShmid(int row, int col) { } tile_t * shmServerAt(int shmid) { - tile_t *result = (tile_t *)shmat(shmid, NULL, 0); - if (result == SHMERR) { + tile_t *board = (tile_t *)shmat(shmid, NULL, 0); + if (board == SHMERR) { errExit("shmat", "shmServerAt"); } - return result; + for (int i=0; i < _ROWS * _COLLUMS; i++) { + board[i] = 0; + } + + return board; } tile_t * shmClientAt(int shmid) { - tile_t *result = (tile_t *)shmat(shmid, NULL, SHM_RDONLY); - if (result == SHMERR) { + tile_t *board = (tile_t *)shmat(shmid, NULL, SHM_RDONLY); + if (board == SHMERR) { errExit("shmat", "shmClientAt"); } - return result; + return board; } void shmDt(void *shm_ptr) { diff --git a/src/custom_sig.c b/src/custom_sig.c index 4b31b91..dc1ac21 100644 --- a/src/custom_sig.c +++ b/src/custom_sig.c @@ -67,7 +67,7 @@ void sigHandlerServer(int sig) { // msgq if (_MSGQID) { printf(PSERVER "Deleting msg\n"); - if (msgctl(_MSGQID, IPC_RMID, NULL) == -1) { //TODO: funzione + if (msgctl(_MSGQID, IPC_RMID, NULL) == -1) { //TODO: funzioni errExit("msgctl", "sigHandlerServer"); } } diff --git a/src/forza4.c b/src/forza4.c index 0e3a852..a901216 100644 --- a/src/forza4.c +++ b/src/forza4.c @@ -82,22 +82,18 @@ int checkWinAll(tile_t *board){ void printBoard(tile_t *board) { for (int i=0; i < _ROWS; i++) { + printf("|"); for (int j=0; j < _COLLUMS; j++) { + printf(" "); printTile(board[getIndex(i, j)]); - if (j != _COLLUMS - 1) { - printf(" | "); - } else { - printf("\n"); - } - } - - for (int j=0; i != _ROWS - 1 && j < _COLLUMS - 1; j++) { - printf("----"); - } - if (i < _ROWS - 1) { - printf("---\n"); + printf(" "); } + printf("|\n"); } + for (int i=0; i<_ROWS; i++) { + printf("--"); + } + printf("------\n"); } void printTile(tile_t t) { @@ -118,7 +114,7 @@ void printTile(tile_t t) { // gli si passa la colona partendo da 1 // se int checkMove(tile_t *board, int collums) { - if (collums <= 0 || collums > _COLLUMS) { + if (collums < 0 || collums >= _COLLUMS) { char buf[100]; sprintf(buf, "the collums must be between 1 and %d", _COLLUMS); warningMsg(buf);