Пример #1
0
/**
 * Constructeur vide d'une entité
 */
Entite::Entite() {
	coord = Coordonnee();
	couleur = Couleur();
}
Пример #2
0
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));
}
Пример #3
0
/**
 * 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();
}
Пример #4
0
/*!
 * \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");
}