/** * Constructeur vide d'une entité */ Entite::Entite() { coord = Coordonnee(); couleur = Couleur(); }
void MyGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent) { emit clickedPosition(Coordonnee(round((mouseEvent->scenePos().x()/100)*2.0)/2.0,round((mouseEvent->scenePos().y()/100)*2.0)/2.0),new T_sol_mono("i_t_tSolMono1",2,100,2,1,0.75,25)); }
/** * Initialise la viewport de la vue 3D, ainsi que la camera et les positions des lampes * @return void */ void ViewJeu3D::viewport() { // Récupère les coordonnées de pacman pour le spot et la caméra PacmanView *pacman = PacmanView::getInstance(); float xPacman = pacman->getCoord().getX(); float yPacman = pacman->getCoord().getY(); float zPacman = pacman->getCoord().getZ(); int direction = pacman->getDirection(); glViewport(coordViewport.getX(), coordViewport.getY(), wvp, hvp); glMatrixMode(GL_PROJECTION); glLoadIdentity(); // Projection appelle la méthode définissant le type de projection : Parallèle ou Perspective projection(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); // Camera Coordonnee eye = Coordonnee(map->getNbrColonnes()/2.0 - 0.5, -3.0, 12.0); Coordonnee center = Coordonnee(map->getNbrColonnes()/2.0 - 0.5, map->getNbrLignes(), 0.0); Coordonnee up = Coordonnee(0.0, 0.0, 1.0); if (map->isFirstPerson()) { float xLigneDeVue = 0.0, yLigneDeVue = 0.0, zLigneDeVue = 0.0; switch (direction) { case GAUCHE: xLigneDeVue = xPacman - map->getNbrColonnes(); yLigneDeVue = yPacman; break; case DROITE: xLigneDeVue = xPacman + map->getNbrColonnes(); yLigneDeVue = yPacman; break; case HAUT: xLigneDeVue = xPacman; yLigneDeVue = yPacman + map->getNbrLignes(); break; case BAS: xLigneDeVue = xPacman; yLigneDeVue = yPacman - map->getNbrLignes(); break; } eye.setCoord(Coordonnee(xPacman, yPacman, zPacman + 1)); center.setCoord(Coordonnee(xLigneDeVue, yLigneDeVue, zLigneDeVue)); } this->camera->setEye(eye); this->camera->setCenter(center); this->camera->setUp(up); this->camera->placer(); // positionnement directionnel de la lumière 0 GLfloat position0[] = { 0.0, -1.0, 3.0, 0.0 }; glLightfv(GL_LIGHT0, GL_POSITION, position0); // positionnement positionnel de la lumière 1 glPushMatrix(); // Permettre au spot de suivre pacman lors de la rotation glTranslated(map->getNbrColonnes()/2.0 - 0.5, map->getNbrLignes()/2.0 - 0.5 - 0.7, 0); glRotated(map->getAngle(), 0, 0, 1); glTranslated(-map->getNbrColonnes()/2.0 + 0.5, -map->getNbrLignes()/2.0 + 0.5 + 0.7, 0); GLfloat position1[] = { xPacman, yPacman - 0.7, zPacman + 1, 1.0 }; glLightfv(GL_LIGHT1, GL_POSITION, position1); glPopMatrix(); }
/*! * \fn void afficheIM(std::string& user) * \brief Affiche Le Menu Information de matrice */ void afficheIM(std::string& user) { do { system("clear"); int maxChoix = 0, choix = 0; std::string mat = "", info = ""; Matrice* A = NULL; maxChoix = afficheSM(); getline(std::cin, user); choix = atoi(user.c_str()); // on change string en int if (user != "q" && user != "r" && user[0] != 'x') { if (choix <= maxChoix && choix > 0) { mat = trouveFichier(choix); A = new Matrice("./mat/"+mat); system("clear"); std::cout << std::endl << *A << std::endl << std::endl; std::cout << " Nombre de lignes : " << A->getLigne() << std::endl; std::cout << " Nombre de colonne : " << A->getColonne() << std::endl << std::endl; std::cout << " Matrice nulle? : " << A->Null() << std::endl; std::cout << " Matrice creuse? : " << A->Creuse() << std::endl; std::cout << " Matrice diagonale? : " << A->Diagonale() << std::endl; std::cout << " Matrice carrée? : " << A->Carre() << std::endl << std::endl; do { std::cout << " - Que voulez vous faire ? (c = chercher la valeur d'un case, r = retour ou q = quitter): "; getline(std::cin, user); if (user == "c") {//Cherche la valeur demandé int l = 0, c = 0; std::cout << " - Veuillez inserer la ligne : "; getline(std::cin, user); l = atoi(user.c_str()); std::cout << " - Veuillez inserer la colonne : "; getline(std::cin, user); c = atoi(user.c_str()); std::cout << jaune << "La valeur de la coordonnée " << Coordonnee(l, c) << " est : " << A->Valeur(l, c) << reset << std::endl; } else if (user == "r") system("clear"); //Retourner menu precedent else if (user == "q"){} //Quitter else //Erreur { system("clear"); std::cout << rouge << "Veuillez inserer c, r ou q" << reset << std::endl; } }while (user != "q" && user != "r"); delete A; A = NULL; } else { system("clear"); if (maxChoix > 1) std::cout << rouge << " Veuillez inserer 1 à " << maxChoix << ", r, q ou x[choix] " << reset << std::endl; else if (maxChoix == 1) std::cout << rouge << " Veuillez inserer 1, r, q ou x1 " << reset << std::endl; else std::cout << rouge << " Veuillez inserer r ou q " << reset << std::endl; } } else if (user[0] == 'x') { user.erase(0,1); //supprime le x choix = atoi(user.c_str()); // on change string en int if (choix <= maxChoix && choix > 0) { removeSave(trouveFichier(choix)); system("clear"); } else { system("clear"); if (maxChoix > 1) std::cout << rouge << " Veuillez inserer 1 à " << maxChoix << ", r, q ou x[choix] " << reset << std::endl; else if (maxChoix == 1) std::cout << rouge << " Veuillez inserer 1, r, q ou x1 " << reset << std::endl; else std::cout << rouge << " Veuillez inserer r ou q " << reset << std::endl; } } }while (user != "r" && user != "q"); system("clear"); }