diff --git a/inc/client.h b/inc/client.h index 7e811b9..796c7e8 100644 --- a/inc/client.h +++ b/inc/client.h @@ -2,6 +2,7 @@ #define CLIENT_H extern int ID; +extern int clientBot; extern pid_t SERVER_PID; void setupClient(int argc, char *argv[]); diff --git a/inc/structures.h b/inc/structures.h index 12b0f8c..2b29fc5 100644 --- a/inc/structures.h +++ b/inc/structures.h @@ -9,7 +9,7 @@ #define CLEAR 1 -#define TIME_TO_MOVE 15 +#define TIME_TO_MOVE 10 // semaphore union semun { diff --git a/src/F4Client.c b/src/F4Client.c index acead12..0934a39 100644 --- a/src/F4Client.c +++ b/src/F4Client.c @@ -22,9 +22,9 @@ void checkClientinput(int argc, char *argv[]); int generateMove(); int main(int argc, char *argv[]){ - int clientBot = 0; + printf("Il mio pid per killarmi: %d\n", getpid()); //TMP - printf("%d\n", argc); + setupClient(argc, argv); // aspetto che il server mi dia il permesso di collegarmi e segnalo collegamento al server @@ -41,19 +41,22 @@ int main(int argc, char *argv[]){ } if (!strcmp(argv[2], "auto")) { clientBot = 1; + printf("sono un bot\n"); } } strcpy(player.name_player, argv[1]); sndPlayer(&player); - printf(PCLIENT "Searching for oponent...\n"); - + if (!clientBot) { + printf(PCLIENT "Searching for oponent...\n"); + } semOp(_SEMID, ID, -1); - printf(PCLIENT "Opponent found\n"); - - printBoard(); - printf(PCLIENT "Waiting for oponent\n"); + if (!clientBot) { + printf(PCLIENT "Opponent found\n"); + printBoard(); + printf(PCLIENT "Waiting for oponent\n"); + } @@ -63,10 +66,13 @@ int main(int argc, char *argv[]){ while (1) { // aspetto il mio turno semOp(_SEMID, ID, -1); - printBoard(); - // input e controllo - printf(PCLIENT "Your Turn: "); + if (!clientBot) { + printBoard(); + + // input e controllo + printf(PCLIENT "Your Turn: "); + } int pos; do { @@ -83,14 +89,24 @@ int main(int argc, char *argv[]){ sndMove(&move); semOp(_SEMID, ID, -1); - printBoard(); - - printf(PCLIENT "Waiting for opponent\n"); + if (!clientBot) { + printBoard(); + printf(PCLIENT "Waiting for opponent\n"); + } } return 0; } int generateMove() { - return 1; + int cont = 0; + int arr[_COLLUMS]; + for (int i=0; i<_COLLUMS; i++) { + if (checkMove(i)) { + arr[cont] = i; + cont++; + } + } + + return arr[rand()%cont]; } \ No newline at end of file diff --git a/src/client.c b/src/client.c index 528eee7..11601a6 100644 --- a/src/client.c +++ b/src/client.c @@ -18,6 +18,7 @@ int ID; pid_t SERVER_PID; +int clientBot = 0; void checkClientinput(int argc, char *argv[]); @@ -55,7 +56,6 @@ void checkClientinput(int argc, char *argv[]){ } if (argv[2]) { - printf("%s\n", argv[2]); if (strcmp(argv[2], "bot") && strcmp(argv[2], "auto")) { errExitMsg("Invalid third argument"); } diff --git a/src/custom_sig.c b/src/custom_sig.c index 552873d..58fcf87 100644 --- a/src/custom_sig.c +++ b/src/custom_sig.c @@ -126,7 +126,7 @@ void setServerSignal(int sig) { void sigHandlerClient(int sig) { // Ctrl+C - if (sig == SIGINT) { + if (sig == SIGINT && !clientBot) { printf("\n" PCLIENT "Quitting game\n"); game_end_t game = {.mtype = GAME_END, .winner = ID ^ 1}; sndGame_end(&game); diff --git a/src/forza4.c b/src/forza4.c index 8152748..97a3ff9 100644 --- a/src/forza4.c +++ b/src/forza4.c @@ -122,9 +122,7 @@ void printTile(tile_t t) { } } -// ritorna la posizione in cui il giocqtore potra iserire la sua mossa -// gli si passa la colona partendo da 1 -// se +// ritorna la posizione in cui il giocatore potra iserire la sua mossa int checkMove(int collums) { if (collums < 0 || collums >= _COLLUMS) { char buf[100];