diff --git a/inc/custom_msgq.h b/inc/custom_msgq.h index a615af5..74d63d1 100644 --- a/inc/custom_msgq.h +++ b/inc/custom_msgq.h @@ -32,6 +32,7 @@ typedef struct { int id; char name_player[MAX_NAME]; pid_t pid; + int bot; } player_ds; typedef struct { diff --git a/src/F4Client.c b/src/F4Client.c index 7a001dd..4911a59 100644 --- a/src/F4Client.c +++ b/src/F4Client.c @@ -19,10 +19,10 @@ #include void checkClientinput(int argc, char *argv[]); +int generateMove(); -//TODO: mettere main ma non l'ho fatto per makefile int main(int argc, char *argv[]){ - + int clientBot = 0; printf("Il mio pid per killarmi: %d\n", getpid()); //TMP setupClient(argc, argv); @@ -34,7 +34,15 @@ int main(int argc, char *argv[]){ // mando i miei dati al server - player_ds player = {.mtype = 3, .id = ID, .pid = getpid()}; + player_ds player = {.mtype = 3, .id = ID, .pid = getpid(), .bot = 0}; + if (argc == 3) { + if (argv[2] == "*") { + player.bot = 1; + } + if (argv[2] == "^") { + clientBot = 1; + } + } strcpy(player.name_player, argv[1]); sndPlayer(&player); @@ -62,7 +70,12 @@ int main(int argc, char *argv[]){ int pos; do { - scanf("%d", &move.move); + if (!clientBot) { + scanf("%d", &move.move); + } else { + move.move = generateMove(); //TODO: + } + move.move = checkMove(move.move - 1); } while (move.move == -1); @@ -76,4 +89,8 @@ int main(int argc, char *argv[]){ } return 0; +} + +int generateMove() { + return 1; } \ No newline at end of file diff --git a/src/F4Server.c b/src/F4Server.c index e1528ab..3442e4d 100644 --- a/src/F4Server.c +++ b/src/F4Server.c @@ -20,6 +20,8 @@ #include #include +int bot = 0; + void waitPlayer(char name[2][MAX_NAME]) { player_ds player; @@ -28,6 +30,10 @@ void waitPlayer(char name[2][MAX_NAME]) { rcvPlayer(&player); strcpy(name[player.id], player.name_player); _PIDS[player.id] = player.pid; + if (player.bot) { + bot = 1; + } + printf(PSERVER "Player %s connected\n", name[player.id]); } @@ -43,8 +49,15 @@ int main(int argc, char *argv[]) { char name[2][MAX_NAME]; - // aspetto PRIMO client + // aspetto PRIMO client waitPlayer(name); + if (bot) { + int child = fork(); + if (child == 0) { + //TODO: fare un exec come se si facesse partire un player da terminale + // dicendogli pero che é un bot e che non fa le scanf + } + } // aspetto SECONDO client waitPlayer(name); diff --git a/src/client.c b/src/client.c index 2228e86..a3737a7 100644 --- a/src/client.c +++ b/src/client.c @@ -46,7 +46,7 @@ void checkClientinput(int argc, char *argv[]){ "\t- PLAYER_NAME \t\tplayer name\n" ); exit(EXIT_SUCCESS); - } else if (argc > 2) { + } else if (argc > 3) { printf(PCLIENT "To many arguments!"); exit(EXIT_FAILURE); } @@ -54,4 +54,10 @@ void checkClientinput(int argc, char *argv[]){ if (!argv[1] || strlen(argv[1]) > MAX_NAME) { errExitMsg("Invalid player name"); } + + if (argv[2]) { + if (argv[2] != "*" && argv[2] != "^") { + errExitMsg("Invalid third argument"); + } + } } \ No newline at end of file