added bot (almost)
This commit is contained in:
parent
5b527c3f57
commit
12858db2fb
|
@ -32,6 +32,7 @@ typedef struct {
|
||||||
int id;
|
int id;
|
||||||
char name_player[MAX_NAME];
|
char name_player[MAX_NAME];
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
|
int bot;
|
||||||
} player_ds;
|
} player_ds;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -19,10 +19,10 @@
|
||||||
#include <client.h>
|
#include <client.h>
|
||||||
|
|
||||||
void checkClientinput(int argc, char *argv[]);
|
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 main(int argc, char *argv[]){
|
||||||
|
int clientBot = 0;
|
||||||
printf("Il mio pid per killarmi: %d\n", getpid()); //TMP
|
printf("Il mio pid per killarmi: %d\n", getpid()); //TMP
|
||||||
|
|
||||||
setupClient(argc, argv);
|
setupClient(argc, argv);
|
||||||
|
@ -34,7 +34,15 @@ int main(int argc, char *argv[]){
|
||||||
|
|
||||||
|
|
||||||
// mando i miei dati al server
|
// 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]);
|
strcpy(player.name_player, argv[1]);
|
||||||
sndPlayer(&player);
|
sndPlayer(&player);
|
||||||
|
|
||||||
|
@ -62,7 +70,12 @@ int main(int argc, char *argv[]){
|
||||||
|
|
||||||
int pos;
|
int pos;
|
||||||
do {
|
do {
|
||||||
scanf("%d", &move.move);
|
if (!clientBot) {
|
||||||
|
scanf("%d", &move.move);
|
||||||
|
} else {
|
||||||
|
move.move = generateMove(); //TODO:
|
||||||
|
}
|
||||||
|
|
||||||
move.move = checkMove(move.move - 1);
|
move.move = checkMove(move.move - 1);
|
||||||
} while (move.move == -1);
|
} while (move.move == -1);
|
||||||
|
|
||||||
|
@ -76,4 +89,8 @@ int main(int argc, char *argv[]){
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int generateMove() {
|
||||||
|
return 1;
|
||||||
}
|
}
|
|
@ -20,6 +20,8 @@
|
||||||
#include <custom_msgq.h>
|
#include <custom_msgq.h>
|
||||||
#include <custom_sig.h>
|
#include <custom_sig.h>
|
||||||
|
|
||||||
|
int bot = 0;
|
||||||
|
|
||||||
void waitPlayer(char name[2][MAX_NAME]) {
|
void waitPlayer(char name[2][MAX_NAME]) {
|
||||||
player_ds player;
|
player_ds player;
|
||||||
|
|
||||||
|
@ -28,6 +30,10 @@ void waitPlayer(char name[2][MAX_NAME]) {
|
||||||
rcvPlayer(&player);
|
rcvPlayer(&player);
|
||||||
strcpy(name[player.id], player.name_player);
|
strcpy(name[player.id], player.name_player);
|
||||||
_PIDS[player.id] = player.pid;
|
_PIDS[player.id] = player.pid;
|
||||||
|
if (player.bot) {
|
||||||
|
bot = 1;
|
||||||
|
}
|
||||||
|
|
||||||
printf(PSERVER "Player %s connected\n", name[player.id]);
|
printf(PSERVER "Player %s connected\n", name[player.id]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,8 +49,15 @@ int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
char name[2][MAX_NAME];
|
char name[2][MAX_NAME];
|
||||||
|
|
||||||
// aspetto PRIMO client
|
// aspetto PRIMO client
|
||||||
waitPlayer(name);
|
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
|
// aspetto SECONDO client
|
||||||
waitPlayer(name);
|
waitPlayer(name);
|
||||||
|
|
|
@ -46,7 +46,7 @@ void checkClientinput(int argc, char *argv[]){
|
||||||
"\t- PLAYER_NAME \t\tplayer name\n"
|
"\t- PLAYER_NAME \t\tplayer name\n"
|
||||||
);
|
);
|
||||||
exit(EXIT_SUCCESS);
|
exit(EXIT_SUCCESS);
|
||||||
} else if (argc > 2) {
|
} else if (argc > 3) {
|
||||||
printf(PCLIENT "To many arguments!");
|
printf(PCLIENT "To many arguments!");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
@ -54,4 +54,10 @@ void checkClientinput(int argc, char *argv[]){
|
||||||
if (!argv[1] || strlen(argv[1]) > MAX_NAME) {
|
if (!argv[1] || strlen(argv[1]) > MAX_NAME) {
|
||||||
errExitMsg("Invalid player name");
|
errExitMsg("Invalid player name");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (argv[2]) {
|
||||||
|
if (argv[2] != "*" && argv[2] != "^") {
|
||||||
|
errExitMsg("Invalid third argument");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue