/* Redessine la carte, les joueurs, les effets, ... */ void paint(SDL_Renderer *s,map_t *m) { // Efface le rendu (on repart d'un écran noir) SDL_RenderClear(s); // Calcul des informations sur la fenetre d'affichage : vecteur de déplacement et cases du plateau à afficher int x, y; // Vecteur de déplacement int i_min, i_max, j_min, j_max; // Cases min et max à afficher en hauteur (i) et en largeur (j) calcul_infos_fenetre(m, &x, &y, &i_min, &i_max, &j_min, &j_max); // AFFICHE LE DÉCOR decor(s, m, x, y, i_min, i_max, j_min, j_max); // Affiche les bonus affiche_bonus(s,m, x, y); // AFFICHE LES TANKS animation_deplacement(s,m, x, y); // Affiche les obus animation_deplacement_obus(s, m, x, y) ; if(m->brouillard) { brouillard(s,m, x, y, i_min, i_max, j_min, j_max); } // Tableau de bord texte(s,m); // Affiche le tout à l'écran SDL_RenderPresent(s); }
void Donnees::open(){ QString texte(""); QString done(""); QList<QStandardItem *> prep; QFile fichier(QApplication::applicationDirPath() + "/save.log"); if(!fichier.open(QIODevice::ReadOnly | QIODevice::Text)){ // N'a pas reussis a ouvrir emit msg("[Erreur] Erreur : n'as pas reussis a ouvrir le fichier de sauvegarde !"); } else{ QTextStream flux(&fichier); while(!flux.atEnd()){ texte = flux.readLine() + '\n'; texte.resize(texte.size()-1); for(int i = 0 ; i < texte.size() ; i++){ if(texte[i] == ' '){ prep << new QStandardItem(done); done = ""; } else{ done += texte[i]; } } // fenetre->insertRow(lignes(), prep); prep.clear(); } // emit msg(QString("[Sauvegarde] " + QString::number(lignes()) + " lignes ont étés chargés depuis le fichier \"" + QApplication::applicationDirPath() + "/save.log\".")); fichier.close(); } }
void DESSIN_POPULATION::Ch_Selection() { if(scene->selectedItems().size()) { int x = scene->selectedItems().at(scene->selectedItems().size()-1)->x(); x+=((this->resume->NomVar.count()-1)*90)/2; x=x/110; if(scene->selectedItems().size()==1) { if(scene->selectedItems().at(scene->selectedItems().size()-1)->y()==400) { qDebug()<<"Selection de la variable"<<x; this->resume->setCible(x); /*QString nbValide; nbValide.setNum(population->NbValide(x)); emit Modif_Var_Selec(population->Var(x)); emit Modif_Var_Selec(x); if(nbValide=="0") {emit Modif_Info("Nom : "+population->headerData(x, Qt::Horizontal).toString() + "\n"+ "Nombre de la valeurs valides : "+ nbValide);} else { TAP_DONNEES tap; tap.Charger(population->pVar(x)); QStringList mode (tap.Mode()); QString chMode(""); if(mode.size()) { chMode+=mode.at(0); } for(int i=1;i<mode.size();i++) {chMode+=" ; "+mode.at(i);} switch(population->Type(x)) { case TYPES::INCONNU : emit Modif_Info("Nom : "+population->headerData(x, Qt::Horizontal).toString() + "\n"+ "Nombre de valeurs valides : "+ nbValide); break; case TYPES::BINOMIAL : emit Modif_Info("Nom : "+population->headerData(x, Qt::Horizontal).toString() + "\n"+ "Nombre de valeurs valides : "+ nbValide); break; case TYPES::QUALITATIF_ORDINAL : emit Modif_Info("Nom : "+population->headerData(x, Qt::Horizontal).toString() + "\n"+ "Nombre de valeurs valides : "+ nbValide); break; case TYPES::QUALITATIF_PURE : emit Modif_Info("Nom : "+population->headerData(x, Qt::Horizontal).toString() + "\n"+ "Nombre de valeurs valides : "+ nbValide + "\nMode(s) : "+ chMode); break; case TYPES::QUANTITATIF_DISCRET : emit Modif_Info("Nom : "+population->headerData(x, Qt::Horizontal).toString() + "\n"+ "Nombre de valeurs valides : "+ nbValide + "\nMode(s) : "+ chMode+"\nMoyenne : "+QString().number(population->Moyenne(x), 'f', 4)+"\tVariance : "+QString().number(population->Variance(x), 'f', 4) + "\nMinimum : " + QString().number(population->Min(x),'f', 4) + "\tMaximum : " + QString().number(population->Max(x), 'f', 4)); break; case TYPES::QUANTITATIF_CONTINU_PURE : emit Modif_Info("Nom : "+population->headerData(x, Qt::Horizontal).toString() + "\n"+ "Nombre de valeurs valides : "+ nbValide + "\nMode(s) : "+ chMode+"\nMoyenne : "+QString().number(population->Moyenne(x), 'f', 4)+"\tVariance : "+QString().number(population->Variance(x), 'f', 4) + "\nMinimum : " + QString().number(population->Min(x),'f', 4) + "\tMaximum : " + QString().number(population->Max(x), 'f', 4)); break; case TYPES::QUANTITATIF_CONTINU_BORNE : emit Modif_Info("Nom : "+population->headerData(x, Qt::Horizontal).toString() + "\n"+ "Nombre de valeurs valides : "+ nbValide + "\nMode(s) : "+ chMode); break; } }*/ } } else { this->resume->addCible(x); } ResumMulti *p = resume->res; QString texte(""); for(int i=0;i<p->size();i++) {texte+="\n";texte+=p->Ligne(i);} emit Modif_Info(texte); } }
//----------------------------------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------------- void Xml::lire(QString source) { source = "<root>" + source + "</root>"; QXmlStreamReader texte(source); QStringList parametres; while (!texte.atEnd()) { texte.readNext(); parametres.clear(); if (!texte.isStartElement()) continue; if(texte.name() == "idPerso") { parametres << texte.readElementText(); emit lireIdPerso(parametres); } else if(texte.name() == "idJoueur") { parametres << texte.readElementText(); emit lireIdJoueur(parametres); } else if(texte.name() == "idRobot") { parametres << texte.readElementText(); emit lireIdRobot(parametres); } else if(texte.name() == "infoJoueur") { while(!(texte.name() == "infoJoueur" && texte.isEndElement())) { texte.readNext(); if(texte.name() == "id" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "pseudo" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "admin" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "hote" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "vie" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "score" && texte.isStartElement()) parametres << texte.readElementText(); } emit lireInfoJoueur(parametres); } else if(texte.name() == "infoServeur") { while(!(texte.name() == "infoServeur" && texte.isEndElement())) { texte.readNext(); if(texte.name() == "ip" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "port" && texte.isStartElement()) parametres << "34340"; else if(texte.name() == "nom" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "total" && texte.isStartElement()) parametres << texte.readElementText(); } emit lireInfoServeur(parametres); } else if(texte.name() == "deconnexion") { parametres << texte.readElementText(); emit lireDeconnexion(parametres); } else if(texte.name() == "action") { while(!(texte.name() == "action" && texte.isEndElement())) { texte.readNext(); if(texte.name() == "id" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "temps" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "actionAvion" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "x" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "y" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "angle" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "vitesse" && texte.isStartElement()) parametres << texte.readElementText(); } emit lireAction(parametres); } else if(texte.name() == "message") { while(!(texte.name() == "message" && texte.isEndElement())) { texte.readNext(); if(texte.name() == "id" && texte.isStartElement()) parametres << texte.readElementText(); if(texte.name() == "message" && texte.isStartElement()) parametres << texte.readElementText(); } emit lireMessage(parametres); } else if(texte.name() == "tir") { while(!(texte.name() == "tir" && texte.isEndElement())) { texte.readNext(); if(texte.name() == "idJoueur" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "temps" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "id" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "x" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "y" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "angle" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "type" && texte.isStartElement()) parametres << texte.readElementText(); } emit lireTir(parametres); } else if(texte.name() == "collision") { while(!(texte.name() == "collision" && texte.isEndElement())) { texte.readNext(); if(texte.name() == "idTireur" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "temps" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "scoreTireur" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "idExplose" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "vieExplose" && texte.isStartElement()) parametres << texte.readElementText(); else if(texte.name() == "idMissile" && texte.isStartElement()) parametres << texte.readElementText(); } emit lireCollision(parametres); } else if(texte.name() == "demandeSynchronisationHorloge") { while(!(texte.name() == "demandeSynchronisationHorloge" && texte.isEndElement())) { texte.readNext(); if(texte.name() == "id" && texte.isStartElement()) parametres << texte.readElementText(); if(texte.name() == "dernierPing" && texte.isStartElement()) parametres << texte.readElementText(); } emit lireDemandeSynchronisationHorloge(parametres); } else if(texte.name() == "reponseSynchronisationHorloge") { parametres << texte.readElementText(); emit lireReponseSynchronisationHorloge(parametres); } } }
void mainLoop() { ARMarkerInfo *marker_info; ARUint8 *dataPtr; int marker_num; if(!calib)//special paycay florian cvReleaseImage(&image); if(!calib) detectColision(); // Recuperation du flux video if ( (dataPtr = (ARUint8 *)arVideoGetImage()) == NULL ) { arUtilSleep(2); return; } // Passage en mode 2D pour analyse de l'image capturee argDrawMode2D(); // Récupération de l'image openCV puis conversion en ARImage //IplImage* imgTest; image = cvCreateImage(cvSize(xsize, ysize), IPL_DEPTH_8U, 4); image->imageData = (char *)dataPtr; //sinon l'image est à l'envers cvFlip(image, image, 1); //test si les couleurs ont déjà été calibrée // si oui on teste si y a collision, sinon on calibre interactionBoutton(); if(calib) calibrage(); else { updateColor(); interactions(); } // affichage image à l'ecran argDispImage( (unsigned char *)image->imageData, 0,0 ); // Recuperation d'une autre image car on a fini avec la precedente arVideoCapNext(); if (arDetectMarker(dataPtr, thresh, &marker_info, &marker_num) < 0) { printf("impossible de detecter le marqueur\n"); cleanup(); } if(visible == false && !calib) //element IHM : procedure qui permet de savoir si on recherche ou pas + réinit mouvemment des objets précédement affiché { glEnable(GL_LIGHT0); objet1_x =0;objet1_y =0;objet2_x =0;objet2_y =0; if(scan.isVisible(0)==true) scan.setVisible(false,0); if(scan.isVisible(1)==false) scan.setVisible(true,1); glColor3ub(255,0,0); texte(GLUT_BITMAP_HELVETICA_18,(char*)"Searching",cparam.xsize-100,cparam.ysize-30); if(alterne1==0 && alterne2 > 20) { glColor3ub(255,0,0); texte(GLUT_BITMAP_HELVETICA_18,(char*)"Searching .",cparam.xsize-100,cparam.ysize-30); if(alterne2 > 30){alterne2=0;alterne1=(alterne1+1)%3;} } if(alterne1==1 && alterne2 > 20 ) { glColor3ub(255,0,0); texte(GLUT_BITMAP_HELVETICA_18,(char*)"Searching ..",cparam.xsize-100,cparam.ysize-30); if(alterne2 > 30){alterne2=0;alterne1=(alterne1+1)%3;} } if(alterne1==2 && alterne2 > 20) { glColor3ub(255,0,0); texte(GLUT_BITMAP_HELVETICA_18,(char*)"Searching ...",cparam.xsize-100,cparam.ysize-30); if(alterne2 > 30){alterne2=0;alterne1=(alterne1+1)%3;} } alterne2+=1; glDisable(GL_LIGHT0); } else if(calib) { if(couleur == 0) { glColor3ub(0,0,255); texte(GLUT_BITMAP_HELVETICA_18,(char*)"Choose thumb's color",cparam.xsize-220,cparam.ysize-30); texte(GLUT_BITMAP_HELVETICA_18,(char*)"then press enter",cparam.xsize-220,cparam.ysize-(30+18)); } else if(couleur == 1) { glColor3ub(0,255,0); texte(GLUT_BITMAP_HELVETICA_18,(char*)"Choose forefinger's color",cparam.xsize-220,cparam.ysize-30); texte(GLUT_BITMAP_HELVETICA_18,(char*)"then press enter",cparam.xsize-220,cparam.ysize-(30+18)); texte(GLUT_BITMAP_HELVETICA_18,(char*)"Press return for thumb",cparam.xsize-220,cparam.ysize-(30+18*2)); } else { glColor3ub(255,0,0); texte(GLUT_BITMAP_HELVETICA_18,(char*)"Choose middle's color",cparam.xsize-220,cparam.ysize-(30)); texte(GLUT_BITMAP_HELVETICA_18,(char*)"then press enter",cparam.xsize-220,cparam.ysize-(30+18)); texte(GLUT_BITMAP_HELVETICA_18,(char*)"Press return for forefinger",cparam.xsize-220,cparam.ysize-(30+18*2)); } } else //passage mode 3d + init profondeur { argDrawMode3D(); argDraw3dCamera(0, 0); glClearDepth(1.0); glClear(GL_DEPTH_BUFFER_BIT); } /// Visibilite de l'objet if(visible == false ) //si on a jms vu de patron ou qu'on a demandé une recapture des patrons faire { //recherche objet visible for (int i=0; i<2; i++) //pour chaque patron initialisé faire { k = -1; //k renseigne sur la visibilité du marker et son id for (int j=0; j<marker_num; j++) // pour chaque marqueur trouver avec arDetectMarker { if (object[i].patt_id == marker_info[j].id) { if (k == -1) { k = j; } else if (marker_info[k].cf < marker_info[j].cf) { k = j; } } } object[i].visible = k; if (k >= 0) { visible = true; arGetTransMat(&marker_info[k], object[i].center, object[i].width,object[i].trans); printf("object[%d] center[%f, %f]\n", i, marker_info->pos[0], marker_info->pos[1]); printf("object[%d] hg[%f, %f]\n", i, marker_info->vertex[0][0], marker_info->vertex[0][1]); printf("object[%d] hd[%f, %f]\n", i, marker_info->vertex[1][0], marker_info->vertex[1][1]); printf("object[%d] bg[%f, %f]\n", i, marker_info->vertex[2][0], marker_info->vertex[2][1]); printf("object[%d] bd[%f, %f]\n", i, marker_info->vertex[3][0], marker_info->vertex[3][1]); //changement etat boutton if(scan.isVisible(0)==false) scan.setVisible(true,0); if(scan.isVisible(1)==true) scan.setVisible(false,1); //si on a vu un patron, on créé une nouvelle instance de l'objet créé par le patron, qu'on stocke dans les objets à l'écran. onscreen_object.push_back(Object3D(mesh.at(object[i].model_id), object[i].center, object[i].trans, object[i].width)); } } } //vu qu'on ne gère plus à partir de la variable "visible" d'un patron, on display, dans tout les cas, soit le vecteur est vide, soit //on a un ou plusieurs objets à afficher display(true); if(menuShow==true) menu.show(); if(!calib) scan.show(); help.show(); quit.show(); argSwapBuffers(); /// Affichage de l'image sur l'interface graphique }
void Ajout::enregistre() { if (langue->text() == "" || titre->text() == "") { QMessageBox::critical(this, tr("Erreur"), tr("Il manque des informations !")); } else { QFile fichier(QCoreApplication::applicationDirPath() + "/data/" + titre->text().toLower() + ".html"); if (!QDir(QCoreApplication::applicationDirPath() + "/data").exists()) { QDir().mkdir(QCoreApplication::applicationDirPath() + "/data"); } if (fichier.exists()) { QMessageBox message; message.setWindowTitle(tr("Confirmation")); message.setText(tr("Cette fiche est déjà existante. Voulez-vous la remplacer ?")); message.addButton(QMessageBox::Yes); message.addButton(QMessageBox::No); message.setButtonText(QMessageBox::Yes, tr("Oui")); message.setButtonText(QMessageBox::No, tr("Non")); int reponse = message.exec(); if (reponse == QMessageBox::Yes) { QFile::remove(QCoreApplication::applicationDirPath() + "/data/" + titre->text().toLower() + ".html"); } else { } } if (!tableau->item(0, 0)) { QMessageBox::critical(this, tr("Erreur"), tr("Le tableau ne doit pas être vide !")); } else { if (!fichier.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(this, tr("Erreur"), tr("Impossibilité de créer le fichier pour l'enregistrement !")); } else { QTextStream texte(&fichier); texte.setCodec("UTF-8"); texte << "<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"utf-8\" http-equiv=\"Content-Type\" content=\"text/html\"/>\n<link rel=\"stylesheet\" content=\"text/css\" href=\"..\\style.css\"/>\n</head>\n"; texte << "<body>\n<h1>" << titre->text() << "</h1>\n"; if (soustitre->text() != "") { texte << "<h2 id=\"1\">" << soustitre->text() << "</h2>\n"; } else { texte << "<h2 id=\"0\"></h2>\n"; } texte << "<div>Langue : " << langue->text() << "</div>\n"; texte << "<table>\n<thead>\n<tr>\n<th>Termes</th>\n<th>Traductions</th>\n</tr>\n</thead>\n<tbody>\n"; int i; for (i = 0 ; i != 99 ; i++) { QTableWidgetItem *item = tableau->item(i,0); QTableWidgetItem *item2 = tableau->item(i, 1); if (item && item2) { texte << "<tr>\n<td>" << tableau->item(i, 0)->text() << "</td>\n<td>" << tableau->item(i, 1)->text() << "</td>\n</tr>"; } else if (!item && item2) { texte << "<tr>\n<td></td>\n<td>" << tableau->item(i, 1)->text() << "</td>\n</tr>"; } else if (item && !item2) { texte << "<tr>\n<td>" << tableau->item(i, 0)->text() << "</td>\n<td> </td>\n</tr>\n"; } else { } } texte << "</tbody>\n</table>\n</body>\n</html>"; fichier.close(); emit fini(); } } } }