/*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; }
/** \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; }
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; }
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; }
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); } }
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; }
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; }
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; }