Browse Source

Récupération du nombre de joueurs et détermination de qui placer où sur le plateau (maximisation du face à face + aléatoire)

master
Bastien 8 years ago
committed by Squiz
parent
commit
c1a939f53a
1 changed files with 82 additions and 0 deletions
  1. +82
    -0
      main.c

+ 82
- 0
main.c View File

@ -0,0 +1,82 @@
#include <stdlib.h>
#include <stdio.h>
#include <dlfcn.h>
#include <time.h>
#include "api.h"
#define debug
int char_to_int(char *argv, int *nombre) {
char* error;
error=argv;
*nombre=strtol(argv,&error,10);
return (error!=argv);
}
/* fonction qui retourne la branche de l'étoile du joueur i */
size_t branche_etoile(int i) {
return i%2?((i-1)/2)+3:i/2;
}
int main(int argc, char** argv) {
void *lib_players[6];
int i, j, nb_game, nb_player;
struct game_state_t game_state;
if (argc < 3 || argc > 9) {
fprintf(stderr, "%s nb_game nb_player [[ia]…].\n", argv[0]);
return 1;
}
/* on lit le nombre de parties */
if(!char_to_int(argv[1],&nb_game) || nb_game <= 0) {
fprintf(stderr, "%s must be a positive number.\n", argv[1]);
return 2;
}
/* on lit le nombre de joueurs */
if(!char_to_int(argv[2],&nb_player) || nb_player <= 0) {
fprintf(stderr, "%s must be a positive number.\n", argv[2]);
return 3;
}
/* on vérifie que le nombre de joueurs est supérieur au nombse d'ia passées en paramètrest */
if(nb_player < argc-3) {
fprintf(stderr, "%d IA specified but only %d player%s.\n", argc-3, nb_player, nb_player==1?"":"s");
return 4;
}
srand(time(NULL));
/* on charge les IA */
j = 3;
for(i = 0; i < nb_player ; i++) {
/* on choisit de placer un joueur réel ou une stratégie */
if( (rand()%(nb_player-i)) < (argc-j) ) {
/* on ajoute une stratégie */
#ifdef debug
fprintf(stderr,"stratégie %s (branche %d)\n",argv[j],branche_etoile(i));
#endif
lib_players[branche_etoile(i)] = dlopen(argv[j], RTLD_LAZY);
// TODO : continuer le chargement de la bibliothèque
j++;
} else {
/* on ajoute un joueur réel */
#ifdef debug
fprintf(stderr,"joueur réel (branche %d)\n",branche_etoile(i));
#endif
lib_players[branche_etoile(i)] = NULL;
}
}
for(i=0;i<6;printf("%d ",lib_players[i++]));
puts("");
return 0;
}

Loading…
Cancel
Save