added bot (almost)

This commit is contained in:
Lorenzo Bianchi 2023-06-17 11:10:30 +02:00
parent 5b527c3f57
commit 12858db2fb
4 changed files with 43 additions and 6 deletions

View File

@ -32,6 +32,7 @@ typedef struct {
int id;
char name_player[MAX_NAME];
pid_t pid;
int bot;
} player_ds;
typedef struct {

View File

@ -19,10 +19,10 @@
#include <client.h>
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;
}

View File

@ -20,6 +20,8 @@
#include <custom_msgq.h>
#include <custom_sig.h>
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);

View File

@ -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");
}
}
}