Пример #1
0
/*
   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);
}
Пример #2
0
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();
    }
}
Пример #3
0
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);
    }
}
Пример #4
0
//-----------------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------
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);
        }
    }
}
Пример #5
0
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
}
Пример #6
0
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();
              }
         }
    }
}