示例#1
0
Shader::Shader(Shader const &shader) : m_vertexSource(shader.m_vertexSource), m_fragmentSource(shader.m_fragmentSource), m_vertexID(0), m_fragmentID(0), m_programID(0), m_initialise(shader.m_initialise)
{
	// On initialise le shader si le shader source est lui aussi initialisé

	if(m_initialise == true)
		initialiser();
}
示例#2
0
int main (int argc, char *argv[ ])
{
    unsigned int frameLimit = SDL_GetTicks() + DELAI_ENTRE_IMAGES;
    int go = 1;

    initialiser(&donnees);

    atexit(nettoyer);

    // Boucle infinie, principale, du jeu
    while (go == 1)
    {

        // Entrées clavier
        recupEvenement(&donnees);

        // Affichage
        rendu(&donnees);

        delay(frameLimit);
        frameLimit = SDL_GetTicks() + DELAI_ENTRE_IMAGES;

    }

    // Fin
    exit(0);
}
示例#3
0
Shader& Shader::operator=(Shader const &shader)
{
	// Si le shader à copier n'est pas lui-même

	if(this != &shader)
	{
		// Copie des sources

		m_vertexSource = shader.m_vertexSource;
		m_fragmentSource = shader.m_fragmentSource;
		m_initialise = shader.m_initialise;


		// Destruction du shader actuel

		detruire();


		// Initialisation du nouveau shader

		initialiser();
	}

	return *this;
}
示例#4
0
文件: File.cpp 项目: vimdude/File
File< Objet >::File ( unsigned int capacite, unsigned int increment ) 
/*------------------------------------------------------------------------- */
{
	this->capacite = capacite;
	this->increment = increment;
	initialiser ( ) ;
}
示例#5
0
void diffuser( double cyl[], int nbp, int nbit, double gauche, double droite )
{
  // On cree un tableau auxiliaire pour representer le cylindre au
  // temps suivant, d'ou le "p1" (plus 1).
  double *cylp1 = malloc( sizeof(double) * nbp );
  initialiser( cylp1, nbp, gauche, droite );


  // On repete pendant le nombre d'iterations desirees.
  for ( int k = 0; k < nbit; k++ ) {

    // On calcule la prochaine approximation (temporelle).
    cylp1[0] = cyl[0];
    for ( int i = 1; i < nbp-1; i++ ) {
      cylp1[i] = 0.5 * (cyl[i-1] + cyl[i+1]);
    }
    cylp1[nbp-1] = cyl[nbp-1];

    // On interchange le role des deux tableaux.
    double *temp = cylp1; cylp1 = cyl; cyl = temp;

    // De temps en temps, on imprime.
    if ( k > 0 && nbIterationsImpression != 0 && k % nbIterationsImpression == 0 ) {
      imprimer( cyl, nbp, k );
    }

  }
}
示例#6
0
int main(int argc, char **argv)
{
  initialiser(&argc, &argv);

  Widget *fen = fenetre_creer("Ma fenetre", .estPrincipale = TRUE);
  Widget *hbox = conteneur_h_creer();
  Widget *vbox = conteneur_v_creer();

  conteneur_ajouter(fen, hbox);
  conteneur_ajouter(hbox, vbox);


  Widget *bouton1 = bouton_creer("bouton1");
  Widget *bouton2 = bouton_creer("bouton2");
  Widget *bouton3 = bouton_creer("bouton3");

  Widget *checkbox = checkbox_creer("Case à cocher!!");

  Widget *menu = menu_creer(3, "Element 1", "Element 2", "Element 3");

  conteneur_ajouter(vbox, bouton1);
  conteneur_ajouter(vbox, bouton2);
  conteneur_ajouter(vbox, checkbox);

  conteneur_ajouter(hbox, bouton3);
  conteneur_ajouter(hbox, menu);


  fenetre_afficher(fen);
  boucle_principale();
  return 0;
}
示例#7
0
文件: File.cpp 项目: vimdude/File
File< Objet >::File ( void ) 
/*------------------------------------------------------------------------- */
{
	capacite = capaciteImplicite;
	increment = incrementImplicite;
	initialiser ( ) ;
}
示例#8
0
文件: tp21.c 项目: ulricheza/Isima
int main(int argc, char * argv[])
{
/*declaration des variables*/   
   int i;
   int ** grille = (int**)malloc(N*sizeof(int *));
 /*int ** reservation = (int**)malloc(N*sizeof(int *));*/
   int * remplissage = (int*)malloc(sizeof(int));
   int temp;
   int res = 0;
/* fin des declarations*/
   *remplissage = 0;
   for(i=0;i<N;i++)
      grille[i]=(int *)malloc(N*sizeof(int));
   printf("*****SUDOKU*****\n");
   temp = initialiser(grille);
 /*temp = initialiser(reservation);*/
   generer(grille,remplissage);
   printf("remp=%d\n",*remplissage);
   afficher(grille);
   while(res==0)
   {
      saisir(grille,remplissage);
      afficher(grille);
      printf("remp=%d\n",*remplissage);
      if(*remplissage == 81)
         res=verif_grille(grille);
   }
   printf("Bravo,reussi\n");
   return 0;
}
示例#9
0
int main()
{
  initialiser();
  
  ajusterPWM(150, 0);
  _delay_ms(1500);
  ajusterPWM(0, 0);
}
示例#10
0
Guideline::Guideline(dirctn t, double position)
    : Indicator(ZORD_Guideline)
{
    type = t;

    setItemType(x_guideline);

    initialiser(position);
}
示例#11
0
Guideline::Guideline(Canvas *canvas, const QDomElement& node, const QString& ns):
    Indicator(node, ns, ZORD_Guideline)
{
    Q_UNUSED (canvas)

    type = (dirctn) essentialProp<int>(node, x_direction, ns);
    double position = essentialProp<double>(node, x_position, ns);

    initialiser(position);
}
示例#12
0
int main( int argc, char *argv[] ) 
{
  // On obtient et on valide les arguments du programme.
  if ( argc < 6 ) {
     printf( "usage:\n" );
     printf( "  %s nbp nbit gauche droite nbThreads\n", argv[0] );
     printf( "  nbp       : Nombre de points a utiliser\n" );
     printf( "  nbit      : Nombre d'iterations a simuler\n" );
     printf( "  gauche    : Temperature extremite gauche\n" );
     printf( "  droite    : Temperature extremite droite\n" );
     printf( "  nbThreads : Nombre de threads a utiliser\n" );
     printf( "" );
     printf( "Il faut aussi definir NB_ITERATIONS_IMPRESSION!\n" );
     return(-1);
  }

  int nbp = atoi( argv[1] );
  assert( nbp > 0 );

  int nbit = atoi( argv[2] );
  assert( nbit > 0 );

  double gauche = atof( argv[3] );
  double droite = atof( argv[4] );

  // On fixe le nombre de threads a utiliser.
  int nb_threads = atoi( argv[5] );
  assert( nb_threads > 0 );  
  omp_set_dynamic(0);
  omp_set_num_threads(nb_threads);

 
  // On alloue l'espace pour le tableau de valeurs representant le
  // cylindre et on les initialise.
  double *cyl = malloc( sizeof(double) * nbp );
  initialiser( cyl, nbp, gauche, droite );

  // On indique si, de temps en temps, il faut imprimer pour voir l'evolution.
  char *s = getenv("NB_ITERATIONS_IMPRESSION");
  if ( s != NULL && strcmp(s, "") != 0 ) {
    nbIterationsImpression = atoi(s);
  }

 
  // On diffuse pendant le nombre d'iterations requis.
  diffuser( cyl, nbp, nbit, gauche, droite );


  // On emet le resultat sur stdout, si demande.
  if ( nbIterationsImpression != 0 ) {
    imprimer( cyl, nbp, nbit );
  }

  return( 0 );
}
示例#13
0
/**
 * @brief Définit le damier but du Puzzle
 * @param[out] t Tab2D dans lequel stocker le but
 * @param[in] nbl le nombre de lignes
 * @param[in] nbc le nombre de colonnes
 */
void but(Tab2D& t, const unsigned int nbl, const unsigned int nbc) {
	initialiser(t, nbl, nbc);
	char lettre = 'A';

	for (unsigned int l = 0; l < nbl; ++l) {
		for(unsigned int c = 0; c < nbc; ++c) {
			t.tab[l][c] = lettre;
			++lettre;
		}
	}
	t.tab[nbl-1][nbc-1] = '#';
}
示例#14
0
文件: sudoku.c 项目: vlnk/isima
int main (int argc, char *argv[])
{
  /** VARIABLES LOCALES */
  int grille[N][N][2];
  int remplissage=0, verif=1,i,j,n=N*N,g;

  /** Affichage & Initialisation */
  printf("SODOKU\n");
  initialiser(grille);

  /** Generer grille aléatoire */
  printf("germe ? ");
  fflush(stdout);
  scanf("%d%*c",&g);
  remplissage = generer(grille,g);
  
  affiche(grille);

  /*Test de grille_test*/
  /*for(i=0;i<N;i++)
  {
    for(j=0;j<N;j++)
    {  
      grille[i][j][0] = grille_test[i][j];
    }
  }
  
  printf("germe ? ");
  fflush(stdout);
  scanf("%d%*c",&g); 
  remplissage = n - generer2(grille,g);
	affiche(grille);*/
  
  printf("Nombre de chiffre place = %d\n",remplissage);

  /** boucle du jeu */
	do
	{
    remplissage = saisir(grille,remplissage);
	  affiche(grille);  
  	printf("Nombre de chiffre place = %d\n",remplissage);
  
    if ((remplissage >= n) && (verifierGrille(grille) != 1))
    {
      verif=0;
    }
	
	} while (verif!=0);

	printf("GAGNE !\n");
	return 0;
}
示例#15
0
文件: td2_3.c 项目: garry7/IN301
int main()
{
	
	srand(time(NULL));
	liste l = initialiser();
	//vide(l);
	//afficher_liste(l);
	l = ajoutdebut(l,10);
	l = ajoutfin(l,15);
	l = ajouttrie(l,13);
	afficher_liste(l);
	testajout();
	return 0;
}
示例#16
0
int main(void)
{
	File *myFile = initialiser();

	remplirFile(myFile, 4);
	remplirFile(myFile, 8);
	remplirFile(myFile, 15);
	remplirFile(myFile, 16);
	remplirFile(myFile, 32);
	remplirFile(myFile, 42);

	afficherFile(myFile);

	defiler(myFile);
	defiler(myFile);

	afficherFile(myFile);

	return 0;
}
示例#17
0
文件: td2_3.c 项目: garry7/IN301
void testajout()
{
	int a;
	
	liste l1 = initialiser();
	/*liste l2 = initialiser();
	liste l3 = initialiser();*/
	
	do
	{
		a = alea(10);
		l1 = ajoutdebut(l1,a);
		/*l2 = ajoutfin(l2,a);
		l3 = ajouttrie(l3,a);*/
	} while (a != 0);
	
	afficher_liste(l1);
	//afficher_liste(l2);
	//afficher_liste(l3);
}
示例#18
0
int main (int argc, char *argv[])
{
	struct Matrice m;
	struct Matrice I;
	int i;

	initialiser(&m);

	m.contenu[3][1] = 9.0;
	m.contenu[7][19] = 3.0;
	afficher(&m);

	// Creer la matrice Identite
	for (i = 0; i < 20; i++) {
		I.contenu[i][i] = 1.0;
	}

	multiplier(&m, &I, &m);
	afficher(&m);

	return 0;
}
示例#19
0
/* Remplir un tas à partir d'un réseau avec tous les noeux ayant une distance max */
Tas *initTas(Reseau *res) 
{
  Tas *tas;
  CellNoeud *n = NULL;
  Elem *el;

  //creer un tas de la taille du reseau
  tas = initialiser(res->nbNoeuds);
  
  //inserer tous les noeuds du reseau avec une distance max
  n = res->noeuds;

  while(n != NULL) {
    el = creerElem();
    remplirElem(el, n->cour, -1, FLT_MAX);

    ajouter(tas, el, FLT_MAX);
    n = n->suiv;
  }

  return tas;
}
示例#20
0
int	main()
{
  noeud *root;
 
  root = initialiser();
  add_word(root,"magneti");
  add_word(root,"magneton");
  add_word(root,"smogo");
  add_word(root,"smogogo");
  add_word(root,"nidoran");
  add_word(root,"nidorina");
  add_word(root,"nidoqueen");
  add_word(root,"nidoking");
  aff_noeud(root);
  suppr_word(root,"trololo");
  suppr_word(root,"nidorina");
  suppr_word(root,"magneti");
  aff_noeud(root);
 

  return (EXIT_SUCCESS);
}
示例#21
0
int main(int argc, char** argv){

    time_t t;
    srand((unsigned)time(&t));

    pthread_t chevaliers_t[11];
    pthread_t pecore_t[7];
    pthread_t arthur_t;

    char* nomsChevalier[] = {"Bohort", "Calogrenant", "Karadoc", "Dagonet", "Galessin", "Gauvain", "Hervé de Rinel", "Lancelot", "Léodagan", "Perceval", "Yvain"};
    char* nomsPecores[] = {"Guethenoc", "Roparzh", "Pecore En plus 1", "Pecore En plus 2", "Pecore En plus 3", "Pecore En plus 4", "Pecore En plus 5"};

    sem_init(&chevalierDispo, 0, 11);
    sem_init(&readyForGraal, 0, 1);
    sem_init(&justiceRendue, 0, 1);

    attenteJugement = initialiser();

    for(int i=0; i<11; i++){
        pthread_create(&chevaliers_t[i], NULL, chevalier, (void*)nomsChevalier[i]);
    }
    for(int i = 0; i<6; i++){
        pthread_create(&pecore_t[i], NULL, pecore, (void*)nomsPecores[i]);
    }
    pthread_create(&arthur_t, NULL, arthur, NULL);


    pthread_join(arthur_t, NULL);
    for(int i=0; i<11; i++){
        pthread_join(chevaliers_t[i], NULL);
    }
    for(int i = 0; i<6; i++){
        pthread_join(pecore_t[i], NULL);
    }
    sem_destroy(&chevalierDispo);
    sem_destroy(&readyForGraal);
    sem_destroy(&justiceRendue);
    return 0;
}
示例#22
0
int MSudoku::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QMainWindow::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: generer(); break;
        case 1: initialiser(); break;
        case 2: sauvegarder(); break;
        case 3: charger(); break;
        case 4: changerTheme(); break;
        case 5: apropos(); break;
        case 6: resoudre(); break;
        case 7: verification(); break;
        case 8: possibilites(); break;
        case 9: gagner(); break;
        }
        _id -= 10;
    }
    return _id;
}
示例#23
0
//Programme principal
int main()
{
    int i;
    int **matrice;
    matrice = malloc(TAILLE*sizeof(int*));
    for (i = 0; i < TAILLE; ++i)
        matrice[i] = malloc (sizeof(int)*TAILLE);

    //Il faudrait vérifier si l'allocation dynamique s'est bien déroulée


    srand (time(NULL));

    printf("Bienvenue dans le Jeu De La Vie ! Appuyez sur 'Entrer' pour commencer...\n");
    getchar();


    initialiser(matrice);

    printf("La population au départ : \n");
    afficher(matrice);
    printf("\nPressez sur ENTER pour continuer...\n");
    getchar();



    for(i=0; i<CYCLE; i++)
    {

        modifierMatrice(matrice);
        printf("La population après %d cycles: \n",i+1);
        afficher(matrice);
        printf("Pressez sur ENTER pour continuer...\n");
        getchar();
    }

    printf("Nombre de cycle terminé\n");
    return 0;
}
示例#24
0
int main( int argc, char *argv[] )
{
   // créer une fenêtre
   FenetreTP fenetre( "INF2705 TP" );

   // allouer des ressources et définir le contexte OpenGL
   initialiser();

   bool boucler = true;
   while ( boucler )
   {
      // affichage
      fenetre.afficherScene();
      fenetre.swap();

      // récupérer les événements et appeler la fonction de rappel
      boucler = fenetre.gererEvenement();
   }

   // détruire les ressources OpenGL allouées
   conclure();

   return 0;
}
示例#25
0
文件: othello.c 项目: hsbiti/Othello
int main ()
{


    char choix;

    printf("Voulez-vous jouer contre l'ordinateur ? (O/n)\n");

    scanf("%c",&choix);

    if (choix == 'O' || choix == 'o')
    	contre_ia = 1;


	printf("[SYS] Entrez le nom du joueur1 (X) : ");
	scanf("%s",joueur1);

	if (contre_ia) {
		strcpy(joueur2,"PC");

	} else { 
		printf("[SYS] Entrez le nom du joueur2 (O) : ");
		scanf("%s",joueur2);
	}
	printf("[SYS] Joueur1(X): \"%s\", Joueur2(O): \"%s\"\n",joueur1, joueur2);

	initialiser();
	afficher_plateau();

	int finished=0;
	while(!finished)
	{
		int val = recuperer_valeur();


		if (val < 0)
			finished=1;


		/* Dans la table ASCII: • les minuscules sont entre 97 et 122
		 						• Les majuscules entre 65 et 90;
		*/
		int x,y;
		y = (jeu[1] - '0') -1;
		

		if (jeu[0] >= 65 && jeu[0] < 73) /* 73 pour s'arrêter à H */
			x = jeu[0] - 65;
		else if (jeu[0] >= 97 && jeu[0] < 105) /* 105 pour s'arrêter à h */
			x = jeu[0] - 97;
		else {
			fprintf(stderr, "[ERR] Vous avez entré une valeur erronnée.\n");
			continue;
		}


		if (strcmp(jeu,"tab") == 0)
			continue;

		if ((x < 0 || x > 8 || y < 0 || y > 8))
		{
			fprintf(stderr, "[ERR] Vous avez entré une valeur erronnée.\n");
			continue;
		}
		if (plateau[x][y] != 0) {
			fprintf(stderr, "[ERR] La case est déjà remplie :( Réessayez\n");
			continue;
		}
		
		if (!test_adjacence(x,y) || !test_coup(x,y)) {
			fprintf(stderr, "[ERR] Ce coup est impossible. Réessayez\n");
			continue;
		}


		jouer_coup(x,y);

		turn = (turn == 1) ? 2 : 1;

		afficher_plateau();

	}

	printf("Terminé ! %s a eu %d, %s a eu %d\n",joueur1, score_j1, joueur2, score_j2);


	return 0;
}
示例#26
0
int main()
{
  initialiser();
  del led(0);

  midi piezzo(&PORTB, &DDRB, 2, 0);
  Memoire24CXXX mem;  // objet mémoire
 
  uint8_t lu = 0, pointLecture = 0; // variables de lecture
  uint8_t compteur = 0, temp = 0; // variable boucle
  bool verifBoucle = false;
  led.clignoter(10,10);
    while(lu != 0x01)   //dbt
    {
        mem.lecture(pointLecture,&lu);
        pointLecture ++ ;
    }
    
    pointLecture++;
    mem.lecture(pointLecture, &lu);
    pointLecture++;

    while(lu != 0xFF)  //fin
    {
        switch(lu)
        {
            case 0x02 : //att
            mem.lecture(pointLecture, &lu);
            delais(25*(uint16_t)lu);
            pointLecture++;
            break ;

            case 0x44 :  //dal
            mem.lecture(pointLecture, &lu);
            led.allumer(1);
            pointLecture++;
            break;

            case 0x45 :  //det
            mem.lecture(pointLecture, &lu);
            led.eteindre();
            pointLecture++;
            break;

            case 0x48 :  //sgo
            mem.lecture(pointLecture, &lu);
            piezzo.jouerNote(lu-40);
            pointLecture ++;
            break;

            case 0x09 : //sar
            piezzo.arreterNote();
            pointLecture++;
            break;

            case 0x62 :  // mav
            mem.lecture(pointLecture, &lu);
	    PORTD |= 0x0C;     //0000 1100
            ajusterPWM(lu<<1, lu<<1);
            pointLecture++;
            break;

            case 0x60 :  //mar1

            case 0x61 :  //mar2

            ajusterPWM(0, 0);
	    delais(400);
            pointLecture++;
            break;

            case 0x63 : //mre
            mem.lecture(pointLecture, &lu);
	    PORTD &= (unsigned char) ~(3<<(2));

	    ajusterPWM(lu<<1, lu<<1);
            pointLecture++;
	    break;

            case 0x64 :  //trd
            ajusterPWM(200, 0);
	    _delay_ms(985);
	    ajusterPWM(0, 0);
	    delais(400);
            pointLecture++;
            break;

            case 0x65 :  //trg
            ajusterPWM(0, 200);
	    _delay_ms(831);
	    ajusterPWM(0, 0);
	    delais(400);
            pointLecture++;
            break;

            case 0xC0 :  //dbc
            mem.lecture(pointLecture, &lu);
            pointLecture++;
            compteur = lu + 1;
            temp = pointLecture;
            verifBoucle = true;

            case 0xC1 :  //fbc
            if(verifBoucle && compteur)
            {
                compteur-- ;
                pointLecture = temp;
            }
            else
	    {
	      pointLecture++;
	      verifBoucle = false;
	    }
            break;
        }

        mem.lecture(pointLecture, &lu);
        pointLecture ++;
    }

    return 0;
}
int main(int argc, char ** argv )
{ mesJoueurs=initialiser();
  int port=2013;
  int i=0;
  int sock_server,sock_client,c,*nouveauSocket,*spectateur;
  int on=1;
  struct sockaddr_in server,client;
  /*recuperer les arguments qui existent pour initialiser le timeout port et max*/
  for(i=0;i<argc;i++)
    {
      if(strcmp(argv[i],"-timeout")==0)
	{
	  printf(" %s detecté \n",argv[i]);
	  timeout=atoi(argv[i+1]);    
	}

      if(strcmp(argv[i],"-max")==0)
	{
	  printf(" %s detecté \n",argv[i]);
	  MaxJoueur=atoi(argv[i+1]);    
	}

      if(strcmp(argv[i],"-port")==0)
	{
	  printf(" %s detecté \n",argv[i]);
	  port=atoi(argv[i+1]);    
	}
      if(strcmp(argv[i],"-dico")==0)
	{
	  printf("%s detecté \n",argv[i]);
	  fichier=argv[i+1];
	    
	  if((monFichier=fopen(fichier,"r"))==NULL)
	    {
	      perror("<<fichier>>");exit(EXIT_FAILURE);
	    }
	}

    }
  if(monFichier==NULL)
    {
      printf("vous devez specifier le dictionnaire de mot -dico \n");
      exit(EXIT_FAILURE);
    }
  if((maBase=fopen("database.txt","a+"))==NULL)
    {
      perror("erreur creation de la database");
    }
  pthread_t monThread[MaxJoueur];
  Joueur joueurs[MaxJoueur];
  printf("timeout vaut %d MaxJoueur vaut %d et le port vaut %d \n",timeout,MaxJoueur,port);

  /*creaction de la socket de connection et attendre nbMax de connection */

  if((sock_server=socket(AF_INET,SOCK_STREAM,0))<0)
    {
      perror("erreur <<socket>>");
      exit(EXIT_FAILURE);
    }
  /*parametrage du port du serveur et de l'IP */
  printf("Socket creer avec succée \n");
  server.sin_family=AF_INET;
  server.sin_addr.s_addr=INADDR_ANY;
  server.sin_port=htons(port);


  /*parametre pour pouvoir reutiliser le port */
  setsockopt(sock_server,SOL_SOCKET,SO_REUSEADDR,(void*)&on,sizeof(on));

  /*on bind la socket */

  if(bind(sock_server,(struct sockaddr *)&server,sizeof(server))<0)
    {
      perror("bind <<socket_server>>");
      exit(EXIT_FAILURE);
    }
  printf("bind reussi \n");
  listen(sock_server,MaxJoueur);

  /*accepter la connexion des max des joueurs */
  c=sizeof(struct sockaddr_in);
  nouveauSocket=malloc(MaxJoueur);
  for(i=0;i<MaxJoueur;i++)
    {
      nouveauSocket[i]=accept(sock_server,(struct sockaddr *)&client,(socklen_t *)&c);
      if(pthread_create(&monThread[i],NULL,handlerConnexion,(void *)&nouveauSocket[i])<0)
	{
	  perror("pthread_create <<monThread>>");
	  exit(EXIT_FAILURE);
	}
    }
  pthread_cond_wait(&notifierJoueurs,&mutex);
  setDessinateur(mesJoueurs); 
  /* dessinateur=getDessinateur(mesJoueurs); */
  if(fgets(buffer,TAILLE_BUFFER,monFichier)!=NULL)
    {
      int n=strlen(buffer);
      buffer[n-1]='\0';
      aDessiner=buffer;
      printf(" le mot a dessiner est %s lol ",aDessiner);
      sleep(1);
      EnvoyerRole(mesJoueurs,buffer);
    }
  spectateur=malloc(12);
  while((spectateur[i]=accept(sock_server,(struct sockaddr *)&client,(socklen_t *)&c)))
    {
pthread_t spectateur_thread;
 if(pthread_create(&spectateur_thread,NULL,handlerConnexion,(void *)&spectateur[i])<0)
   {
     perror("erreur dans thread spectateur");exit(EXIT_FAILURE);
   }
 i++;
    }

 
  for(i=0;i<MaxJoueur;i++)
    {
      pthread_join(monThread[i],NULL);
    }
  return EXIT_SUCCESS;
}
示例#28
0
int main(int argc, char** argv)
{
    /*variables locales*/
    login_t * ptete;
    login_t * ajout;
    int confirm = 1;
    char demande_ajout_t;
    char demande_position_t;

    /*allocation du pointeur vers le premier élement de la structure*/
    ptete = (login_t *) malloc (sizeof(login_t));
    (*ptete).suivant = NULL;

    /*initialisation des éléments*/
    initialiser(ptete);

    while (confirm == 1)
    {
        /*demande/choix entre la modif ou la création d'un compte*/
        printf("Voulez-vous ajouter, supprimer un compte ou ne rien faire ? (a/s/f) ");
        fflush(stdout);
        scanf("%s%*c",&demande_ajout_t);

        if ((demande_ajout_t == 'a') && (strcmp("vide", (*ptete).nom_de_login) == 0))
        {
            /*ajout d'un compte sur un élément vide*/
            saisie(ptete);
        }

        else if (demande_ajout_t == 'a')
        {
            /*ajout d'un compte par création d'un élément*/
            ajout = (login_t *) malloc(sizeof(login_t));

            if (ajout == NULL)
            {
                printf("Erreur d'allocation");
            }
            else
            {
                /*saisie du compte*/
                saisie(ajout);

                /*ajout du compte au gestionnaire*/
                printf("Voulez-vous ajouter le compte en fin, au milieu ou au debut (f/n/d) ? ");
                fflush(stdout);
                scanf("%c%*c", &demande_position_t);

                if (demande_position_t == 'f')
                {
                    inserFin(ptete,&ajout);
                }
                else if (demande_position_t == 'd')
                {
                    inserTete(&ptete,&ajout);
                }
                else if (demande_position_t == 'm')
                {
                    inserMilieu(ptete,&ajout);
                }
            }
        }
        else if (demande_ajout_t == 's')
        {
            supprimer(&ptete);
        }
        else
        {
            confirm = 0;
        }
    }

    /*affichage des élements*/
    affichage(ptete);

    /*libération de la mémoire allouée*/
    liberation(&ptete);

	return 0;
}
示例#29
0
/**
 * @brief Résout un puzzle
 * @param[in,out] p le puzzle à résoudre
 * @param[in] t le damier initial
 * @param[in,out] os flux de sortie
 */
void jouer(Puzzle& p, const Tab2D& t, std::ostream& os) {
	Etat etatInitial;
	Etat etatCourant;
	Tab2D damierFinal;
	Etat etatDerive;

	double tempsDebutRecherche = getTime();

	but(damierFinal, t.nbL, t.nbC);
	initialiser(etatInitial.damier, t.nbL, t.nbC);
	etatInitial.mouvement = FIXE;
	etatInitial.precedent = 0;
	etatInitial.g = 0;

	//Copie du damier inititial dans etatInitial
	for (unsigned int l = 0; l < t.nbL; ++l) {
		for (unsigned int c = 0; c < t.nbC; ++c) {
			etatInitial.damier.tab[l][c] = t.tab[l][c];
		}
	}
	etatInitial.h = manhattan(etatInitial.damier, damierFinal);

	initialiser(etatDerive.damier, t.nbL, t.nbC);

	inserer(p.lEAE, 0, etatInitial); //étatInitial dans LEAE

	bool solutionTrouvee = false;
	bool mvtPossible;
	unsigned int pos;

	while (p.lEAE.nb != 0) {
		pos = minimal(p.lEAE);
		etatCourant = lire(p.lEAE, pos); //on prend le 1er état à explorer
		//insérer étatCourant dans LEE
		inserer(p.lEE, longueur(p.lEE), etatCourant);
		supprimer(p.lEAE, pos); //supprimer étatCourant de LEAE

		if (etatCourant.h == 0) { // le damier de étatCourant est le damier but
			solutionTrouvee = true;
			break; //sortir de la boucle while
		}

		/*pour_tout (mouvement possible associé à étatCourant)
		mouvement possible relatif à damier de étatCourant (etatCourant.damier)
		ordre d'exploration (obligatoire) NORD, EST, SUD, OUEST */
		//initialiser un étatDérivé // d'après le mouvement

		for(int m = OUEST; m >= NORD; --m) {
			mvtPossible = deriver(etatCourant, (Mouvement) m, etatDerive);
			if (mvtPossible && !rechercher(etatDerive, p.lEAE)\
				&& !rechercher(etatDerive, p.lEE)) {
				etatDerive.precedent = longueur(p.lEE) - 1;
				etatDerive.h = manhattan(etatDerive.damier, damierFinal);
				etatDerive.g = etatCourant.g + 1;
				//insérer étatDérivé dans LEAE
				inserer(p.lEAE, longueur(p.lEAE), etatDerive);
			}
		}
	}

	double tempsFinRecherche = getTime();
	cout << "Durée de recherche : " << tempsFinRecherche - tempsDebutRecherche
		<<" seconde(s)."<< endl;

	if (solutionTrouvee) {
		Pile sol;
		Etat etatSol;
		initialiser(sol, 3, 2);
		initialiser(etatSol.damier, t.nbL, t.nbC);

		//Stockage de la solution
		etatSol = lire(p.lEE, longueur(p.lEE)-1);
		empiler(sol, etatSol);
		while (etatSol.precedent != 0) {
			etatSol = lire(p.lEE, etatSol.precedent);
			empiler(sol, etatSol);
		}
		empiler(sol, etatInitial);

		//Affichage de la solution
		os << "Damier : " << t.nbL << " lignes " << t.nbC << " colonnes"
			<< endl;
		os << "Solution en " << sol.sommet << " mouvements" << endl;
		while (!estVide(sol)) {
			afficher(sommet(sol), os);
			os << endl;
			depiler(sol);
		}
		detruire(sol);
		detruire(etatSol.damier);
	}
	else {
		os << "Solution non trouvée" << endl;
	}
	detruire(etatInitial.damier);
	detruire(etatCourant.damier);
	detruire(etatDerive.damier);
	detruire(damierFinal);
}
示例#30
0
/**
 * @brief Initialise un puzzle
 * @param[out] p le puzzle à initialiser
 */
void initialiser(Puzzle& p) {
	initialiser(p.lEE);
	initialiser(p.lEAE);
}