コード例 #1
0
static void couleurFeu(TypeZone tz, Colors couleur)
// Mode d'emploi :
//		Méthode permettant d'afficher la couleur du feu sur une zone donnée, à partir de
//			l'énumération <couleur>
//	<tz> : le type de zone où écrire (COULEUR_AXE_NS ou COULEUR_AXE_EO)
//	<couleur> : La couleur du feu (VERT, ORANGE ou ROUGE)
//
// Contrat : tz est l'une des 2 zones sus-citées
{
	switch (couleur)
	{
		case VERT:
			Afficher(tz, "Vert  ", GRAS);
			break;

		case ORANGE:
			Afficher(tz, "Orange", GRAS, INVERSE);
			break;

		case ROUGE:
			Afficher(tz, "Rouge ", GRAS, INVERSE);
			break;
	}

} // fin de couleurFeu
コード例 #2
0
void Commande ( TypeVoie entree, TypeVoie sortie )
{
	//gérer le numero de la voiture
	//création de la voiture
	struct Voiture voitureManuelle ={entree, sortie, numVoiture};
	//création et envoit du message 
	struct MsgVoiture message={(long)(entree), voitureManuelle};
	msgsnd(balVoiture, &message,  sizeof (MsgVoiture), 0);

	

	//Modification de l'affichage
	Effacer(MESSAGE);
	OperationVoie(PLUS,entree);
	Afficher(MESSAGE,"Votre nouvelle voiture a été ajouté");
	Effacer(NUMERO);
	Afficher(NUMERO,numVoiture,GRAS);
	Effacer(ENTREE);
	Afficher(ENTREE,entree,GRAS);
	Effacer(SORTIE);
	Afficher(SORTIE,sortie,GRAS); 

	//incremente le numero de voiture
	if (numVoiture>numeroMaxManuel) numVoiture=1;
	else numVoiture++;

}
コード例 #3
0
ファイル: Simulation.cpp プロジェクト: frobion/B3235
void Commande (char code, unsigned int valeur)
{
 
  fichier << "Début commande" << std::endl;
  switch(code)
  {
    case 'E':
    {
	  Afficher(MESSAGE, "case E");
      fichier << "Case 'E'" << std::endl;
      destruction();
      break;
    }
    case 'A':
	{
	  Afficher(MESSAGE, "case A");
	  fichier << "Case 'A'" << std::endl;
	  Voiture voiture = {TypeUsager::AUTRE, compteurImmatriculation, -1};
	  compteurImmatriculation = (compteurImmatriculation++) % IMMATRICULATION_MAX;
      if (valeur == 1)
      {		
        write(descEcritureCanauxBarriereEntree[AUTRE_BLAISE_PASCAL - 1], &voiture, sizeof(Voiture));
      }
      else
      {
		write(descEcritureCanauxBarriereEntree[ENTREE_GASTON_BERGER - 1], &voiture, sizeof(Voiture));
	  }
      break;
	}
    case 'P':
    {
	  Afficher(MESSAGE, "case P");
	  fichier << "Case 'P'" << std::endl;
      Voiture voiture = {TypeUsager::PROF, compteurImmatriculation, -1};
      compteurImmatriculation = (compteurImmatriculation++) % IMMATRICULATION_MAX;
      if (valeur == 1)
      {
        write(descEcritureCanauxBarriereEntree[PROF_BLAISE_PASCAL - 1], &voiture, sizeof(Voiture));
      } 
      else
      {
        write(descEcritureCanauxBarriereEntree[ENTREE_GASTON_BERGER - 1], &voiture, sizeof(Voiture));
      }
      break;
    }
    case 'S':
    {
	  Afficher(MESSAGE, "case S");
	  fichier << "Case 'S'" << std::endl;
	  write(descEcritureCanalBarriereSortie, &valeur, sizeof(unsigned int));
	  break;
	}
    default:
      fichier << "default" << std::endl;
      Afficher(MESSAGE, "Commande: code inconnue");
      
  }
  fichier << "Fin commande" << std::endl;
}
コード例 #4
0
ファイル: main.c プロジェクト: nortox63/Jawad-s-C-Game
int main()
{
    int x,y;  // position joueur
    int touche;
    x = y = 1;
    touche = 0;
    while(touche!=27) // ECHAP
    {
        Afficher(x,y);
        touche = MyGetch();
        switch(touche)
        {
        case 'q':
            TryMove(&x,&y,0,-1);
            break;
        case 'd':
            TryMove(&x,&y,0,1);
            break;
        case 'z':
            TryMove(&x,&y,-1,0);
            break;
        case 's':
            TryMove(&x,&y,1,0);
        default:
            break;
        }
    }
    return 0;
}
コード例 #5
0
ファイル: tri.c プロジェクト: iiyajid/TP_C
int main(int argc, char *argv[])
{
  ITEM items[MAX_ITEM];
  int *nb_items;
  FILE *f;
  
  nb_items = malloc(sizeof(int));
  *nb_items = 0;
  
  printf("%d\n", *nb_items);
  Lire(items, nb_items);
  printf("%d\n", *nb_items);
  while(TRUE){
      f = fopen("file.txt", "r");
      if(*nb_items>0)
          while( fread(items+(*nb_items), sizeof(ITEM), 1, f) )
              (*nb_items)++;
      printf("%d", *nb_items);
      fclose(f);
      Choix(items, *nb_items);
      Afficher(items, *nb_items);
      printf("%d\n", *nb_items);
      f = fopen("file.txt", "w");
      fwrite(items, *nb_items, sizeof(ITEM), f);
      fclose(f);
  }

  //printf("%d", *nb_items);
  //f = fopen("file.txt", "w");
  //fwrite(items, *nb_items, sizeof(ITEM), f);
  //fclose(f);

  exit(0);
}
コード例 #6
0
ファイル: Sortie.cpp プロジェクト: QuentinVecchio/ParkingIF
static void SignalVoitureSortie ( int noSignal )
// Algorithme :
//
{
	int pid;
	int numeroPlace = -1;
	int statut;
	if ((pid = wait(&statut)) == -1)
	{ 	Afficher(TypeZone::MESSAGE, "Erreur wait pid" );
	}
	numeroPlace = WEXITSTATUS(statut);
	for(unsigned int i=0;i<NB_PLACES;i++) {
		if(pidVoituriers[i].numeroPlace == pid) 
		{	struct sembuf op;
			op.sem_num = 0;
			op.sem_op = -1;
			op.sem_flg = 0;
			while(semop(idSemaphoreContenuParking,&op,1) == -1 && errno == EINTR);
			Effacer((TypeZone)numeroPlace);
			AfficherSortie(parking->voitures[numeroPlace].usager, parking->voitures[numeroPlace].numeroPlaque, parking->voitures[numeroPlace].heureArrivee, time(NULL));
			parking->voitures[numeroPlace] = {0,0,TypeUsager::AUCUN,0};
			op.sem_op = 1;
			semop(idSemaphoreContenuParking, &op, 1);			
			pidVoituriers[i].numeroPlace = -1;
			GereRequete();
		}
	}
} //----- fin de SignalVoitureGaree
コード例 #7
0
ファイル: Clavier.cpp プロジェクト: vcaen/Parking
void Clavier()
{
    Afficher(MESSAGE, "DEBUG 4");
    arrivee_voiturePBP 	= open(pathPipeArriveePBP,  O_WRONLY);
    arrivee_voitureABP 	= open(pathPipeArriveeABP,  O_WRONLY);
    arrivee_voitureGB 	= open(pathPipeArriveeGB,   O_WRONLY);
    sortie_voiture		= open(pathPipeSortie, 		O_WRONLY);
    Afficher(MESSAGE, "DEBUG 5");
    for(;;)
    {
        // Moteur
        Menu();
    }


}
コード例 #8
0
int main(int argc, char** argv)
{
  SDL_Surface* screen, *tileset;
  SDL_Event event;
  s_map	*map;

  (void)argc;
  map = init_map(argv);
  SDL_Init(SDL_INIT_VIDEO);
  screen = SDL_SetVideoMode(LARGEUR_TILE * map->sizeX, \
			    HAUTEUR_TILE * map->sizeY, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
  tileset = SDL_LoadBMP("tileset1.bmp");
  if (!tileset)
    {
      printf("Echec de chargement tileset1.bmp\n");
      SDL_Quit();
      exit(-1);
    }
  Afficher(screen, tileset, map);
  while (event.type!=SDL_KEYDOWN)
    SDL_WaitEvent(&event);
  SDL_FreeSurface(tileset);
  SDL_Quit();
  free(map);
  return 0;
}
コード例 #9
0
static void EffacerPlace (unsigned int num) {
	switch(num) {
		case 1:
			Effacer(ETAT_P1);
            break;
		case 2:
			Effacer(ETAT_P2);
            break;
		case 3:
			Effacer(ETAT_P3);
            break;
		case 4:
			Effacer(ETAT_P4);
            break;
		case 5:
			Effacer(ETAT_P5);
            break;
		case 6:
			Effacer(ETAT_P6);
            break;
		case 7:
			Effacer(ETAT_P7);
            break;
		case 8:
			Effacer(ETAT_P8);
            break;
		default :
			Afficher(MESSAGE, "Erreur de num");

	}
}
コード例 #10
0
void Commande ( TypeVoie voie, unsigned int duree )
{
	/** structures pour les opérations sur la durée (lecture) */
		struct sembuf getDLock;
		getDLock.sem_num = dureesLoc;
		getDLock.sem_op = -1;
		getDLock.sem_flg = 0;

		struct sembuf releaseDLock;
		releaseDLock.sem_num = dureesLoc;
		releaseDLock.sem_op = 1;
		releaseDLock.sem_flg = 0;

	if( ( voie == OUEST ) || ( voie == EST ))
	{
		//Ecriture sur la memoire paratagée, protégée par semaphore
		semop(dureesLoc,&getDLock,1);
		dureeFeux->dureeEO = duree;
		semop(dureesLoc,&releaseDLock,1);

		//Modification de l'affichage
		Effacer(MESSAGE);
		Afficher(MESSAGE,"La durée des feux de l'axe EO a changé");
	}

	if( ( voie == SUD ) || ( voie == NORD ))
	{
		//Ecriture sur la memoire partagée, protégée par semaphore
		semop(dureesLoc,&getDLock,1);
		dureeFeux->dureeNS = duree;
		semop(dureesLoc,&releaseDLock,1);

		//Modification de l'affichage
		Effacer(MESSAGE);
		Afficher(MESSAGE,"La durée des feux de l'axe NS a changé");
	}
	
}
コード例 #11
0
ファイル: sudoku.c プロジェクト: boblinux/sudokuC
int main(int argc, char *argv[])
{
	unsigned long long e = 64889485484;
	unsigned long long b = e & (e-1);
	int i;
	int n = atoi(argv[1]);
	int **T = CreerTab(n);
	Afficher(n,T);
	int *C = Coords(T, n, 5);
	printf("ok");
	int *Z = Ligne(T, n, C);
	int *D = Colonne(T, n, C);
    return 0;
}
コード例 #12
0
ファイル: grille.cpp プロジェクト: jglanglois/treasure
void Grille::LancerJeu (){

    unsigned int x,y;

    // initialise et affiche la grille
    InitialiserCases();
    Afficher();

    // tant que le trésor n'est pas trouvé
    while(!(*cases[tresorX][tresorY]).EstDecouverte()){

        //le joueur selectionne une case

        /*try{
            x=joueur.DemanderX(20);
        }
        catch(string e){
            cout << "erreur : " << e;
        }*/
        x=joueur.DemanderX(20);
        y=joueur.DemanderY(20);

        // découvre la case sélectionnée
        (*cases[x][y]).Decouvrir();

        // affiche la grille
        Afficher();

        // si le trésor n'est pas touvé, on affiche l'indice
        if(!(*cases[tresorX][tresorY]).EstDecouverte())
            Distance(x,y);

    }

    cout << "Vous avez trouve le tresor !! Bravo !!" << endl;

}
コード例 #13
0
void Commande ( char code )
{
	if(code == 'Q'){

		// Si le generateur est etteint à la fin, on a un waitpid infini
		if (!generateurActif)
			kill(pidGenerateur,SIGCONT);
		//Detachement de la mémoire partagée
		shmdt(dureeFeux);
		exit(0);
	}

	if (code=='G')
	{
		if (generateurActif)
		{
			kill(pidGenerateur,SIGSTOP);
			generateurActif=false;
			//Modification de  l'affichage 
			Effacer(MESSAGE);
			Effacer(ETAT_GENERATEUR);
			Afficher(ETAT_GENERATEUR,"OFF",GRAS);
			Afficher(MESSAGE,"Le generateur a été eteint");
		}
		else
		{
			kill(pidGenerateur,SIGCONT);
			generateurActif=true;
			//Modification de l'affichage 
			Effacer(MESSAGE);
			Effacer(ETAT_GENERATEUR);
			Afficher(ETAT_GENERATEUR,"ON",GRAS);
			Afficher(MESSAGE,"Le generateur a été activé");
		}
	}
}
コード例 #14
0
ファイル: Sortie.cpp プロジェクト: QuentinVecchio/ParkingIF
static void Moteur()
// Algorithme :
{
	int index = 0;
 	for(;;)
 	{	StructDemandeSortie demande;
 		if(msgrcv(idBal, &demande, sizeof(StructDemandeSortie), 1, MSG_NOERROR) > 0)
 		{	index = getVoiturier();
	 		if(index == -1)
	 		{	Afficher(TypeZone::MESSAGE, "Attention plus de voiturier" );
	 		}
	 		else 
	 		{	if(voitureExiste(demande.place)) 
	 			{	if((pidVoituriers[index].numeroPlace = SortirVoiture(demande.place)) < 0) 
			 		{	Afficher(TypeZone::MESSAGE, "Erreur : Impossible de sortir une voiture" );
			 		}
			 	}
			 	else
			 	{	Afficher(TypeZone::MESSAGE, "La voiture n'existe pas" );
			 	}
	 		}
 		}
 	}
} //Fin de Moteur
コード例 #15
0
ファイル: BasicEntite.cpp プロジェクト: baupetit/FireMonkeys
void BasicEntite::Afficher_Entite(){   
 
    glPushMatrix();
    glMatrixMode (GL_MODELVIEW);
    glTranslatef(position.x, position.y, position.z);
    
    glRotated (anglesEuler.x, 1, 0, 0);
    glRotated (anglesEuler.y, 0, 1, 0);
    glRotated (anglesEuler.z, 0, 0, 1);
    
    glScalef(echelle.x, echelle.y, echelle.z);

    Afficher();    
    
    glPopMatrix();
}
コード例 #16
0
ファイル: Simulation.cpp プロジェクト: frobion/B3235
void Commande (char code, unsigned int valeur)
{
 
  switch(code)
  {
    case 'E':
    {
      destruction();
      break;
    }
    case 'A':
	{
	  Voiture voiture = {TypeUsager::AUTRE, compteurImmatriculation, -1};
	  compteurImmatriculation = (compteurImmatriculation + 1) % IMMATRICULATION_MAX;
      if (valeur == 1)
      {		
        write(descEcritureCanauxBarriereEntree[AUTRE_BLAISE_PASCAL - 1], &voiture, sizeof(Voiture));
      }
      else
      {
		write(descEcritureCanauxBarriereEntree[ENTREE_GASTON_BERGER - 1], &voiture, sizeof(Voiture));
	  }
      break;
	}
    case 'P':
    {
      Voiture voiture = {TypeUsager::PROF, compteurImmatriculation, -1};
      compteurImmatriculation = (compteurImmatriculation + 1) % IMMATRICULATION_MAX;
      if (valeur == 1)
      {
        write(descEcritureCanauxBarriereEntree[PROF_BLAISE_PASCAL - 1], &voiture, sizeof(Voiture));
      } 
      else
      {
        write(descEcritureCanauxBarriereEntree[ENTREE_GASTON_BERGER - 1], &voiture, sizeof(Voiture));
      }
      break;
    }
    case 'S':
    {
	  write(descEcritureCanalBarriereSortie, &valeur, sizeof(unsigned int));
	  break;
	}
    default:
      Afficher(MESSAGE, "Commande: code inconnue");
  }
}
コード例 #17
0
pid_t CreerEtInitialiserFeux(int mtxFeux, int mColor, int mDuree)
// Mode d'emploi :
//	<mtxFeux> : Identifiant du tableau de sémaphore permettant la mise en place d'un mutex
//	<mColor> : L'identifiant de la mémoire partagée contenant la couleur des feux
//	<mDuree> : L'identifiant de la mémoire partagée contenant la durée
// Contrat :
//		- <mtxFeux> est un tableau de sémaphores de 2 cases, dont la première sert de mutex
//			à <mColor>, et la seconde à <mDuree>
//		- <mColor> est l'ID d'un mémoire partagée contenant 2 entiers
//		- <mDuree> est l'ID d'un mémoire partagée contenant 2 entiers
{
	pid_t pFeux;

	


	if((pFeux = fork()) == 0)
	{
		/** structures pour les opérations sur la durée (lecture) */
		struct sembuf getDLock;
		getDLock.sem_num = dureesLoc;
		getDLock.sem_op = 1;
		getDLock.sem_flg = 0;

		struct sembuf releaseDLock;
		releaseDLock.sem_num = dureesLoc;
		releaseDLock.sem_op = -1;
		releaseDLock.sem_flg = 0;


		/** structures pour les opérations sur la couleur (écriture) */
		struct sembuf getCLock;
		getCLock.sem_num = colorsLoc;
		getCLock.sem_op = 4;
		getCLock.sem_flg = 0;


		struct sembuf releaseCLock;
		releaseCLock.sem_num = colorsLoc;
		releaseCLock.sem_op = -4;
		releaseCLock.sem_flg = 0;

		/** Initialisation des variables locales */
		int tempsNS = 0;
		int tempsEO = 0;
		Colors couleurNS = ROUGE;
		Colors couleurEO = ROUGE;
		bool lastNS = false; // booléen permettant de savoir qui doit passer au vert

		couleursFeux = (couleurs*)shmat(mColor, NULL, 0);
		dureesFeux = (durees*)shmat(mDuree, NULL, 0);
		
		
		/** Mappage des signaux */
		struct sigaction action;
		action.sa_handler = handleEnd;
		sigemptyset(&action.sa_mask);
		action.sa_flags = 0;

		sigaction(SIGUSR2, &action, NULL);


		for(;;)
		{
			/** Gestion de l'axe NS */
			if(tempsNS <= 0)
			{
				switch (couleurNS)
				{
					case ROUGE:
						if(!lastNS)
						{
							couleurNS = VERT;
							lastNS = !lastNS;

							/** Récupération des durées, avec mutex */
							semop(mtxFeux, &getDLock, 1);

							tempsNS = dureesFeux->dureeNS;
							tempsEO = dureesFeux->dureeEO;

							semop(mtxFeux, &releaseDLock, 1);

							Afficher(DUREE_AXE_NS, tempsNS);
							Afficher(DUREE_AXE_EO, tempsEO);

							tempsEO = tempsNS + 5;
						}

						break;
					case VERT:
						couleurNS = ORANGE;
						tempsNS = 3;
						break;
					case ORANGE:
						couleurNS = ROUGE;
						tempsNS = 2;
						break;
				}
			}

			/** Gestion de l'axe EO */
			if(tempsEO <= 0)
			{
				switch (couleurEO)
				{
					case ROUGE:
						if(lastNS)
						{
							couleurEO = VERT;
							lastNS = !lastNS;


							/** Récupération des durées, avec mutex */
							semop(mtxFeux, &getDLock, 1);

							tempsNS = dureesFeux->dureeNS;
							tempsEO = dureesFeux->dureeEO;

							semop(mtxFeux, &releaseDLock, 1);

							Afficher(DUREE_AXE_NS, tempsNS);
							Afficher(DUREE_AXE_EO, tempsEO);

							tempsNS = tempsEO + 5;
						}
						break;
					case VERT:
						couleurEO = ORANGE;
						tempsNS = 3;
						break;
					case ORANGE:
						couleurEO = ROUGE;
						tempsNS = 2;
						break;
				}
			}

			Afficher(TEMPS_AXE_NS, tempsNS);
			Afficher(TEMPS_AXE_EO, tempsEO);
			couleurFeu(COULEUR_AXE_NS, couleurNS);
			couleurFeu(COULEUR_AXE_EO, couleurEO);

				/** Ecriture des couleurs des feux, avec mutex */
			semop(mtxFeux, &getCLock, 1);

			couleursFeux->colNS = couleurNS;
			couleursFeux->colEO = couleurEO;

			semop(mtxFeux, &releaseCLock, 1);
			
			tempsNS--;
			tempsEO--;
			sleep(1);

		}
	}
	else
	{
		return pFeux;
	}
} //----- fin de CreerEtInitialiserFeux
コード例 #18
0
ファイル: main.c プロジェクト: warshall/Raspi
int main (void) // Fonction principale
{
  int Ht16k, Mcp, EtatLed, EtatBTN ; // Declaration des variables.
  int i = 1 ;
  pthread_t Thread_Jeux;
  
  Ht16k = wiringPiI2CSetup (0x70) ;

 if ((Mcp = wiringPiI2CSetup (0x20)) == -1)
 {
   fprintf (stderr, "Mcp: impossible d'initialiser l'I2C: %s\n", strerror (errno)) ; return 1 ; // Si impossible a initialiser.
 }

 
  wiringPiI2CWriteReg8 (Mcp, IODIR, 0xC0) ; // Toutes les broches en OUTPUT sauf broches 6 et 7 en input.
  wiringPiI2CWriteReg8 (Mcp, GPIO, LEDNOT) ; // Eteindre toutes les LEDs
  wiringPiI2CWrite (Ht16k, 0x21) ;
  wiringPiI2CWrite (Ht16k, 0x81) ;
  Afficher (Ht16k, 0) ;

  EtatLed = LEDNOT ; // Par defaut les LEDs sont eteintes.

  struct arg_jeux TypeDeJeu = {Mcp, 0, &EtatLed, Ht16k} ;
  
 for (;;)
 {
   debut: //Etiquette goto je ne sai pas faire autrement..
   wiringPiI2CWrite (Ht16k, 0x81) ;
   EtatBTN = (wiringPiI2CReadReg8 (Mcp, GPIO) - EtatLed) ;

   if (EtatBTN == BTNG) // Si bouton gauche presser alors...
   {
     delay (200); // On attend 10ms puis on fait une relecture pour etre sur que ce n'est pas un parasite
       if ((wiringPiI2CReadReg8 (Mcp, GPIO) - EtatLed) == BTNG) // Si bouton gauche presser..
       {
         wiringPiI2CWrite (Ht16k, 0x83);
         BtnAppuiLong (Mcp, &EtatLed) ;

          while ((wiringPiI2CReadReg8 (Mcp, GPIO) - EtatLed) != BTND)
           {
             delay (20) ;

			 if ((wiringPiI2CReadReg8 (Mcp, GPIO) - EtatLed) == BTNG)
             {
               Afficher (Ht16k, i) ;
               i++ ;
                if (i == 10) {i =0 ;}
                BtnAppuiLong (Mcp, &EtatLed) ;
				TypeDeJeu.J = (i-1) ;
				TypeDeJeu.EtatLed = &EtatLed ;
				}

           }

	    pthread_cancel(Thread_Jeux);	
		pthread_create (&Thread_Jeux, NULL, Jeux, &TypeDeJeu);
        printf("coucou\n") ;

       }
   }
  delay (100); // Vitesse de la boucle
 }
return 0 ;
}
コード例 #19
0
ファイル: test_partie1.c プロジェクト: yannickkuhn/automate
int main(int argc, char *argv[])
{
	// Variables
	SDL_Surface *ecran = NULL, *imgFond = NULL, *imgSapin = NULL, *tileset = NULL, *imgtrain = NULL;
	SDL_Rect pFond;
	SDL_Event event;
	T_VOIT car[SIZE];
	int continuer;
	int res;
	int arret=0;
	// Variables du Timer
	SDL_TimerID idTimer, idTimer2,idTimer3;			// code à améliorer : utiliser 1 seul timer
	int periode = 10;

	// initialisation
	continuer = 1;
	setParamVoiture(&car[2],1,358,0,arret);
	setParamVoiture(&car[0],2,0,230,arret);		// premiere voiture plus rapide
    setParamVoiture(&car[1],3,0,320,arret);
	affichageParamVoiture(car[0]);
	affichageParamVoiture(car[1]);
	affichageParamVoiture(car[2]);			// code à amélioreR
    //SDL_RemoveTimer(idTimer)
	// chargement de la map
	tileset = SDL_LoadBMP("route.bmp");

	// SDL init
	SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER);
	idTimer = SDL_AddTimer(periode,affiche,car);
	idTimer2 = SDL_AddTimer(periode,affiche,&car[1]);
	idTimer3 = SDL_AddTimer(periode,affiche1,&car[2]);
	ecran = SDL_SetVideoMode(LARGEUR_FENETRE, HAUTEUR_FENETRE, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
	SDL_WM_SetCaption("Premiere collision de vehicules ...", NULL);
	imgSapin = SDL_LoadBMP("voiture.bmp");
	imgtrain = SDL_LoadBMP("train.bmp");
	Afficher(ecran,tileset,table,LARGEUR_FENETRE/LARGEUR_TILE,HAUTEUR_FENETRE/HAUTEUR_TILE);
	SDL_BlitSurface(imgSapin, NULL, ecran, &car[0].pos);		// code à améliorer
	SDL_BlitSurface(imgSapin, NULL, ecran, &car[1].pos);
	SDL_BlitSurface(imgtrain, NULL, ecran, &car[2].pos);
	SDL_Flip(ecran);

	while (continuer) {
		while (SDL_PollEvent(&event)) {
			switch (event.type) {
				case SDL_QUIT:
					continuer = 0;
					break;
			}
		}
        res=test(&car[2]);
        if(res==1)
        {
        arret=1;
        }
        else
        {
        arret=0;
        }
        /*load(&car[0],arret);
        load(&car[1],arret);*/
		Afficher(ecran,tileset,table,LARGEUR_FENETRE/LARGEUR_TILE,HAUTEUR_FENETRE/HAUTEUR_TILE);
		Afficher1(ecran,tileset,table,LARGEUR_FENETRE/LARGEUR_TILE,HAUTEUR_FENETRE/HAUTEUR_TILE,arret);
        ControleArretVoitures(car,2,arret);
        SDL_BlitSurface(imgSapin, NULL, ecran, &car[0].pos);
        SDL_BlitSurface(imgSapin, NULL, ecran, &car[1].pos);
		SDL_BlitSurface(imgtrain, NULL, ecran, &car[2].pos);
		SDL_Flip(ecran);
	}

	SDL_FreeSurface(imgFond); /* On libère la surface */
	SDL_Quit();
	return EXIT_SUCCESS;
}
コード例 #20
0
ファイル: Ligne.cpp プロジェクト: arinik9/TP3_Polymorphisme
void Ligne::Sauvegarder(ofstream& f){
	streambuf *file_buffer = f.rdbuf();
	streambuf *old_cout_buffer = cout.rdbuf(file_buffer);
	Afficher();
	cout.rdbuf(old_cout_buffer);
}