示例#1
0
/*fonction recherche_mot_matrice
*utilisation des fonctions precedentes afin de rechercher un mot dans la matrice jeu
*retourne 1 si le mot donne en parametre est present
*retourne 0 dans le cas inverse
*/
int recherche_mot_matrice(char mot[20],t_case matrice[TAILLE_MATRICE][TAILLE_MATRICE]){
    //declaration
    int i;
    int j;
    int k=0;
    //recherche d'une lettre à partir de la case (0;0)de la matrice jeu
    for(i=0;i<TAILLE_MATRICE;i++){
        for(j=0;j<TAILLE_MATRICE;j++){
               if(matrice[i][j].lettre==mot[k]){
                    //declaration pour chaque départ d'une case
                    int p;
                    //initialisation:
                        //de la structure redondance à -1 pour toutes les lignes, initialisation avec une valeur impossible pour une coordonnees
                    for(p=0;p<TAILLE_MATRICE*TAILLE_MATRICE;p++){
                            redondance[p].ligne=-1;
                    }
                        //de la pile
                    initpile();
                    empiler(i,j);
                    k++;
                        //de la structure redondance
                    redondance[0].ligne=i;
                    redondance[0].colonne=j;
                    //traitement
                    while(sommet!=-1){
                        if(mot[k]=='\0')return 1;
                        chemin(matrice,mot[k],&k,redondance);
                    }
               }
        }
    }
    return 0;
}
示例#2
0
/**
 \fn recherche_mot_grille(t_valeurmot mot_dico,t_lettre grille[N][M]);
 \brief recherche un mot dans la grille
 \param (le mot,la grille)
  \return 1 si le mot est present 0 sinon
 */
int recherche_mot_grille(t_valeurmot *mot_dico,t_lettre grille[N][M]){
    int i,j,k=0;
    int chemin_mot_sommet,redondance_lettre_sommet;	
    t_coord chemin_mot_pile[t_max];
    t_coord redondance_lettre_pile[t_max];
	
    /*On recherche la premiere lettre du mot parmis la grille,ce sera nos points de departs*/
    for(i=0;i<N ;i++){
        for(j=0;j<M;j++){
				/*Si on trouve un point de depart*/
               if(grille[i][j].c==mot_dico->mot[k]){
					/*On initialise nos piles de chemin et de redondance*/
                    initpile(&chemin_mot_sommet);
                    initpile(&redondance_lettre_sommet);
					/*On push les coordonnées de depart à nos piles*/
                    push(i,j,chemin_mot_pile,&chemin_mot_sommet);
                    push(i,j,redondance_lettre_pile,&redondance_lettre_sommet);
                    k++;
					/*TANT QUE tout les chemins ne sont pas teste*/
                    while(chemin_mot_sommet!=-1){
                        if(mot_dico->mot[k]=='\0'){
                        		calc_score(mot_dico,chemin_mot_pile,&chemin_mot_sommet,grille);
								return 1;
                        } 
                        chemin(grille,mot_dico->mot[k],&k,chemin_mot_pile,redondance_lettre_pile,&chemin_mot_sommet,&redondance_lettre_sommet); // on cherche le chemin de la prochaine lettre du mot
                    }
               }
        }
    }
	 /*On a parcouru la grille sans trouve de mot on retourne donc 0*/
   return 0;
}
示例#3
0
UVManager& UVManager::getInstance(){
    if (!handler.instance) {
        QString chemin("UV_XML.xml");
        handler.instance = new UVManager(chemin); /* instance créée une seule fois lors de la première utilisation*/
    }
    return *handler.instance;
}
示例#4
0
bool Preference::tester_icones(QString path)
{
    QDir chemin(QCoreApplication::applicationDirPath() + "/themes/" + path);
    QStringList reference; //liste de référence des éléments nécessaires
    reference << "go.png" << "histo_pos.png" << "search_highlight.png" << "home.png" << "next.png" << "previous.png" << "refresh.png" << "search_close.png" << "search_next.png" << "search_previous.png" << "stop.png" << "add.png";
    reference.sort(); //on trie pour la comparaison
    QStringList list = chemin.entryList((QStringList() << "*.png"),QDir::Files);
    list.sort(); //on trie pour la comparaison
    //on test si la list à testé contient bien tous les éléments nécessaires
    for(int i=0; i<reference.count(); i++)
	if(!list.contains(reference.at(i)))
	    return false;
    return true;
}
示例#5
0
void Preference::lister_theme(void)
{
    QDir chemin(QCoreApplication::applicationDirPath() + "/themes");
    QStringList list = chemin.entryList(QDir::AllDirs);
    list.removeFirst();
    list.removeFirst();
    list_theme->addItems(list);

    for(int i=0; i<list_theme->count(); i++)
    {
	if(!tester_icones(list_theme->item(i)->text())) //si une icone est manquante -> rouge
	    list_theme->item(i)->setForeground(Qt::red);
	else
	    list_theme->item(i)->setForeground(Qt::green);
	if(list_theme->item(i)->text() == opt_theme) //si le dossier correspond à celui du theme actuel -> bleu
	    list_theme->item(i)->setForeground(Qt::blue);
    }
}
示例#6
0
	void LecteurAudio::joueurNouveauFichier(QString nomFichier)
	{
		// Si un fichier etait en cours de lecture, on le ferme
		if (fluxAudio)
		{
			// Si la fermeture s'est mal passee on affiche un message
			if (!FSOUND_Stream_Close(fluxAudio))
			{
				qWarning("Probleme a la fermeture d'un flux audio (joueurNouveauFichier - LecteurAudio.cpp)");
				return;
			}
		}

		// Si le nom de fichier est vide, il faut arreter le lecteur
		if (nomFichier.isEmpty())
		{
			// On efface l'afficheur de titre
			afficheurTitre->clear();
			afficheurTitre->setToolTip(tr("Aucun titre"));
			// On met le lecteur a l'arret
			etatActuel = arret;
			// On sort de la fonction
			return;
		}

		// Creation du chemin complet du fichier
		QString chemin(G_dossierMusiquesJoueur + "/" + nomFichier);
		
		// Ouverture du nouveau fichier
		fluxAudio = FSOUND_Stream_Open(chemin.toLatin1().data(), FSOUND_NORMAL, 0, 0);

		// Si l'ouverture s'est mal passee on affiche un message
		if (!fluxAudio)
		{
			qWarning("Impossible d'ouvrir le fichier audio (joueurNouveauFichier - LecteurAudio.cpp)");
			// On affiche le message en clair
			afficheurTitre->setEchoMode(QLineEdit::Normal);
			// Changement de la couleur du texte en rouge
			QPalette palette(afficheurTitre->palette());
			palette.setColor(QPalette::Normal, QPalette::Text, Qt::red);
			afficheurTitre->setPalette(palette);
			// On affiche le titre du nouveau morceau en rouge (indique que le fichier n'est pas present ou impossible a ouvrir)
			afficheurTitre->setText(nomFichier + tr(" : fichier introuvable ou impossible à ouvrir"));
			afficheurTitre->setCursorPosition(0);
			afficheurTitre->setToolTip(tr("Fichier introuvable ou impossible à ouvrir : ") + chemin);
			// On quitte la fonction
			return;
		}

		// Si l'ouverture du fichier s'est bien passee on ecrit en noir avec des asterisques
		else
		{
			// On masque le titre
			afficheurTitre->setEchoMode(QLineEdit::Password);
			// On ecrit en noir
			QPalette palette(afficheurTitre->palette());
			palette.setColor(QPalette::Normal, QPalette::Text, Qt::black);
			afficheurTitre->setPalette(palette);
		}

		// On affiche le titre du nouveau morceau
		afficheurTitre->setText(nomFichier);
		afficheurTitre->setCursorPosition(0);
		afficheurTitre->setToolTip(tr("Titre masqué"));

		// On met le lecteur a l'arret
		etatActuel = arret;
		// La lecture reprend depuis le debut
		joueurPositionTemps = 0;
	}
示例#7
0
int action(char** TabArgs,char** TabFonction,superBlock *sb, int *argInode,int nbfonction, int *userCo){
	int i,NbInstruction=-1,k;

	for(i=0;i<nbfonction;i++){
		if(strcmp(TabArgs[0],TabFonction[i])==0)
			NbInstruction=i;
			}

	switch(NbInstruction){
		case 0://touch
		touch(sb,*argInode,TabArgs[1],*userCo);
		
		break;

		case 1://cat

		cat(sb,chemin(sb,*argInode,TabArgs[1]),*userCo);
		
		break;
		
		case 2://ls
	
		ls(sb,*argInode);		

		break;

		case 3://rm

		unlink(sb,chemin(sb,*argInode, TabArgs[1]),*argInode,*userCo);
		break;	
		case 4://mkdir

		mkdir(sb,*argInode,TabArgs[1],*userCo);
		break;	
		case 5://cd
			*argInode=cd(sb,*argInode,TabArgs[1],*userCo); 
		break;
		case 6://newU
		if(TabArgs[1]!=NULL && TabArgs[2]!=NULL)
		    newUser(sb,TabArgs[1], TabArgs[2]); 
		break;
		case 7://changeU
		if(TabArgs[1]!=NULL && TabArgs[2]!=NULL){
		    int res =connexion(sb,TabArgs[1], TabArgs[2]); 
		    if(res !=-1){
				*userCo=res;
			}
		}
		break;
		case 8://tableU
		    tableUser(sb,*userCo);
		break;
		case 9://chmod
			if(TabArgs[1]!=NULL && TabArgs[2]!= NULL && TabArgs[3]!= NULL)
				chmod(sb,chemin(sb,*argInode,TabArgs[1]), *userCo,atoi(TabArgs[2]), atoi(TabArgs[3]));
		break;
		case 10: //help
			
			printf("commandes : \n");
			for(k;k<NbInstruction;k++){
				printf("%s\t",TabFonction[k]);
			}
			printf("\n");
		break;
		case 11:
			printf("bye\n");
			exit(0);
		break;
		case 12://ln
			ln(sb, chemin(sb,*argInode,TabArgs[1]), chemin(sb,*argInode,TabArgs[3]), TabArgs[2],*userCo);
		break;
		case 13://cp
		    cp(sb,chemin(sb,*argInode,TabArgs[1]),TabArgs[2],chemin(sb,*argInode,TabArgs[3]),*userCo);
		break;
		case 14://echo
			if(chemin(sb,*argInode,TabArgs[1])!=0)
			{
				echo(sb,chemin(sb,*argInode,TabArgs[1]),*userCo);
			}
		break;
		case 15://mv
		    mv(sb,*argInode,chemin(sb,*argInode,TabArgs[1]),chemin(sb,*argInode,TabArgs[3]),TabArgs[2],*userCo);
		break;
		case 16://tableI
			toStringInode(sb);
		break;
		case 17://tableF
			toStringBlocksF(sb);
		break;
		case 18://df
			df(sb);
		break;
		case 19://delU
			if(TabArgs[1]!=NULL)
			delUser(sb, *userCo, TabArgs[1]);
		break;
		case 20://changeP
			if(TabArgs[1]!=NULL)
			delUser(sb, *userCo, TabArgs[2]);
		break;
default:
printf("action non reconnue\n");
break;
	
		}
		
	return 1;
}
示例#8
0
int main(int argc,char**argv) {

    int dim, nbcl, nivdif, graine;
    Grille *G;
    int i,j;
    int **M;

    clock_t
    temps_initial, /* Temps initial en micro-secondes */
    temps_final;   /* Temps final en micro-secondes */
    float
    temps_cpu;     /* Temps total en secondes */



    if(argc!=5) {
        printf("usage: %s <dimension nb_de_couleurs niveau_difficulte graine>\n",argv[0]);
        return 1;
    }

    dim=atoi(argv[1]);


    nbcl=atoi(argv[2]);
    nivdif=atoi(argv[3]);
    graine=atoi(argv[4]);

    /* Generation de l'instance */

    M=(int **) malloc(sizeof(int*)*dim);
    for (i=0; i<dim; i++) {
        M[i]=(int*) malloc(sizeof(int)*dim);
        if (M[i]==0) printf("Pas assez d'espace mémoire disponible\n");
    }



    int choix, aff, nbCoups;
    int fin = 0;

    do {
        printf("----------------------Menu----------------------\n");
        printf("0 - SANS affichage graphique\n");
        printf("1 - AVEC affichage graphique\n");
        printf("3 - Quitter\n\n");
        printf("Note: si la dimension entrée est inférieure à 6\non peut visualiser les étapes du jeu et le graphe\nau format texte.\n");

        printf("Choix : ");
        scanf("%d", &aff);
    } while (aff != 0 && aff != 1 && aff != 3);

    if (aff == 3) return 0;
    if (dim < 6) aff = 2;

    printf("\n----------------------Menu----------------------\n");
    printf("1 - Version recursive\n");
    printf("2 - Version imperative\n");
    printf("3 - Version rapide\n");
    printf("4 - Max-bordure\n");
    printf("5 - Parcours en largeur\n");
    printf("6 - Essai strat perso \n");

    printf("Strategie : ");
    scanf("%d", &choix);
    printf("\n-------------------------------------------------\n");

    Gene_instance_genere_matrice(dim, nbcl, nivdif, graine, M);
    //Affichage de la grille

    Grille_init(dim,nbcl, 500,&G);

    Grille_ouvre_fenetre(G);

    for (i=0; i<dim; i++)
        for (j=0; j<dim; j++) {
            Grille_attribue_couleur_case(G,i,j,M[i][j]);
        }
    switch(choix) {
    case 1:
        temps_initial = clock();

        nbCoups = sequence_aleatoire_rec_2(M,G,G->dim,aff);

        temps_final = clock();
        temps_cpu = ((double)(temps_final - temps_initial))/CLOCKS_PER_SEC;
        printf("Nombre de coups:%d\nTemps CPU:%f\n", nbCoups, temps_cpu);

        temps_initial = 0;
        temps_final = 0;
        temps_cpu = 0.0;

        break;

    case 2:
        temps_initial = clock();

        nbCoups = sequence_aleatoire_imp(M,G,G->dim,aff);

        temps_final = clock();
        temps_cpu = ((double)(temps_final - temps_initial))/CLOCKS_PER_SEC;
        printf("Nombre de coups:%d\nTemps CPU:%f\n", nbCoups, temps_cpu);

        temps_initial = 0;
        temps_final = 0;
        temps_cpu = 0.0;

        break;

    case 3:
        //FILE *f1 = fopen("01_rec_num.txt", "a+");

        //temps calcul et l'écrit dans un fichier
        temps_initial = clock();

        nbCoups = sequence_aleatoire_rapide(M,G,aff);

        temps_final = clock();
        temps_cpu = ((double)(temps_final - temps_initial))/CLOCKS_PER_SEC;
        printf("Nombre de coups:%d\nTemps CPU:%f\n", nbCoups, temps_cpu);

        temps_initial = 0;
        temps_final = 0;
        temps_cpu = 0.0;
        //  fclose(f1);
        break;

    case 4:
        temps_initial = clock();

        nbCoups = max_bordure(G, M, aff);

        temps_final = clock();
        temps_cpu = ((double)(temps_final - temps_initial))/CLOCKS_PER_SEC;
        printf("Nombre de coups:%d\nTemps CPU:%f\n", nbCoups, temps_cpu);

        temps_initial = 0;
        temps_final = 0;
        temps_cpu = 0.0;

        break;

    case 5:
        temps_initial = clock();

        nbCoups = chemin(G,M,aff);

        temps_final = clock();
        temps_cpu = ((double)(temps_final - temps_initial))/CLOCKS_PER_SEC;
        printf("Nombre de coups:%d\nTemps CPU:%f\n", nbCoups, temps_cpu);

        temps_initial = 0;
        temps_final = 0;
        temps_cpu = 0.0;

        break;

    case 6:
        temps_initial = clock();
        nbCoups = chemin2(G,M,aff);
        temps_final = clock();
        temps_cpu = ((double)(temps_final - temps_initial))/CLOCKS_PER_SEC;
        printf("Nombre de coups:%d\nTemps CPU:%f\n", nbCoups, temps_cpu);

        temps_initial = 0;
        temps_final = 0;
        temps_cpu = 0.0;

        break;

    default:
        printf("Erreur de saisie\n");
        return 1;
        break;
    }


    Grille_redessine_Grille();

    if (aff != 0)
        Grille_attente_touche();

    Grille_ferme_fenetre();

    Grille_free(&G);
    return 0;
}