Esempio n. 1
0
/**
 * Met a jour si possible la direction de pacman et le fait avancer
 * @return void
 */
void PacmanModel::updatePosition() {
	Map *map = MapView::getInstance();
	if (map->viragePossible(coord, directionVoulue, false)) {
		direction = directionVoulue;
		directionVoulue = -1;
		deplacer();
	} else if (map->deplacementPossible(coord, direction, false)) {
		deplacer();
	}
}
Esempio n. 2
0
/**
  * Pour les ennemis "classiques", l'ia consiste simplement, toutes les 1.5 secondes, à:
  		* se déplacer à gauche ou droite au hasard (sous réserve que le vaisseau ne touche pas déjà un bord)
  		* tirer 
  */
void Vaisseau::ia(Jeu* jeu) {
	if(dernierTir.GetElapsedTime() >= 0.4f) {
		tirer(jeu, 0.4f);
		float dirIa = sf::Randomizer::Random(0, 2);
		RenderWindow* win = jeu->getWindow();
		if(dirIa >= 1.0f) {
			deplacer(win, -10, 0);
		} else {
			deplacer(win, 10, 0);
		}
	}
}
/** \brief Gére les entrées clavier si il s'agit de la map courante
*/
void Exterieur::gestionEvent()
{
	if(mapCourante_ == this)
	{
		if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
		{
			deplacer(GAUCHE);
		}
	
		if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
		{
			deplacer(DROITE);
		}
		
		if(sf::Keyboard::isKeyPressed(sf::Keyboard::Space))
		{
			(*Kurt)->sauter();
		}
	
		if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
		{
			bool avant(true);
			unsigned int i(0);
		
			while(avant && i < batiments_.size())
			{
				sf::Vector2f centreKurt = (*Kurt)->getCentre();
			
				if(Espace::estDans(centreKurt.x,batiments_[i]->getPositionPorte().x,batiments_[i]->getPositionPorte().x + batiments_[i]->getTaillePorte().x))
				{
					if(batiments_[i]->estOuvert() || (*Kurt)->essayerOuvrirBatiment(batiments_[i]))
					{
						if((*Kurt)->entrerBatiment())
						{
							mapCourante_ = batiments_[i]->getInterieur()->getEtage();
							mapCourante_->entrer();
						}
					}
				
					avant = false;
				}
				else if(centreKurt.x < batiments_[i]->getPositionPorte().x)
					avant = false;
				
				i++;
			}
		}
	}
	else
		mapCourante_->gestionEvent();
}
Esempio n. 4
0
void action(Context *C,Input *in)
{
    if(in->key[SDLK_RIGHT]&&!C->card.pause)
        deplacer(RIGHT,&(C->positionJoueur));
    if(in->key[SDLK_LEFT]&&!C->card.pause)
        deplacer(LEFT,&(C->positionJoueur));
    if(in->key[SDLK_SPACE]&&!C->card.pause) {
        tirer(C->positionJoueur,&(C->card));
        in->key[SDLK_SPACE]=0;
    }
    if(in->key[SDLK_p]) {
        if(!C->card.pause) C->card.pause=1;
        else C->card.pause=0;
        in->key[SDLK_p]=0;
    }
}
Esempio n. 5
0
void BlocAliens::run() {
	dessiner();

	while (true) {
		timer->getDeplacementAliens()->P();
		if (espace->niveauTermine())
			Exit();

		if (direction == DEPL_BAS) {
			if (positionColonne <= 1) {
				direction = DEPL_DROITE;
			} else {
				direction = DEPL_GAUCHE;
			}
		} else if (((positionColonne + (largeur + ecartGauche) * ALIGN_HORI)
				>= LARGEUR + 1 && direction == DEPL_DROITE)
				|| (positionColonne + ecartGauche * ALIGN_HORI <= 1
						&& direction == DEPL_GAUCHE)) {
			direction = DEPL_BAS;
		}

		deplacer();
		tirerMissile();
	}
}
Esempio n. 6
0
void CameraFPS::onEvent(Input const& input)
{
  //évênements souris
  if(input.mouseMove())
    orienter(input.getXRel(), input.getYRel());//changement d'orientation
  //évênements claviers
  glm::vec3 deplacement(0.0f,0.0f,0.0f);
  float zoom = 0.0f;
  if(input.getKey(SDL_SCANCODE_W))//Z pour un clavier francophone
    deplacement += m_vitesse * m_orientation;
  if(input.getKey(SDL_SCANCODE_S))
    deplacement -= m_vitesse * m_orientation;
  if(input.getKey(SDL_SCANCODE_A))//Q pour un clavier francophone
    deplacement += m_vitesse * m_droite;
  if(input.getKey(SDL_SCANCODE_D))
    deplacement -= m_vitesse * m_droite;
  if(input.getKey(SDL_SCANCODE_KP_PLUS)) // touche + du pavé numérique pour zoomer
    zoom -= 1.0f;
  if(input.getKey(SDL_SCANCODE_KP_MINUS)) // touche - du pavé numérique pour dezoomer
    zoom += 1.0f;
  if(zoom!=0.0f)
    zoomer(zoom);
  if(deplacement != glm::vec3(0.0f,0.0f,0.0f))
    deplacer(deplacement); // déplacement de la camera
  m_cible = m_position + m_orientation;
  if(deplacement != glm::vec3(0.0f,0.0f,0.0f) || input.mouseMove())
    lookAt();
}
Esempio n. 7
0
void MapFrame::initMap()
{
	if(NULL!=m_map)
	{
        setTitle(m_title);
		m_originalSize = m_map->size();
        m_widgetArea->setWidget(m_map);
        //m_widgetArea->setViewportMargins(0,0,0,0);

		resize(m_map->width()+4, m_map->height()+4);

		connect(m_map, SIGNAL(commencerDeplacementBipMapWindow(QPoint)),
				this, SLOT(commencerDeplacement(QPoint)));
		connect(m_map, SIGNAL(deplacerBipMapWindow(QPoint)),
				this, SLOT(deplacer(QPoint)));
	}
}
void CameraFlightSimulator::onEvent(Input const& input)
{
  if(m_active)
  {
    if(input.getKey(SDL_SCANCODE_UP))//controle de la vitesse
    {
      m_vitesse += 0.1f;
      if(m_vitesse > 100.0f)
	m_vitesse = 100.0f;
    }else if(input.getKey(SDL_SCANCODE_DOWN))
    {
      m_vitesse -= 0.1f;
      if(m_vitesse < 0.0f)
	m_vitesse = 0.0f;
    }
  }
  if(m_vitesse > 0.0f)
  {
    glm::vec3 anglesEuler = glm::vec3(0.0, 0.0, 0.0);//angles d'Euler -> controle des rotations du vaisseau
    if(m_active)
    {
      if(input.getKey(SDL_SCANCODE_W))// -> tonneau 
	anglesEuler.x += m_sensibilite;
      else if(input.getKey(SDL_SCANCODE_S))
	anglesEuler.x -= m_sensibilite;
      if(input.getKey(SDL_SCANCODE_Q))// -> looping
	anglesEuler.y += m_sensibilite;
      else if(input.getKey(SDL_SCANCODE_E))
	anglesEuler.y -= m_sensibilite;  
      if(input.getKey(SDL_SCANCODE_A))// -> lacet
	anglesEuler.z -= m_sensibilite;
      else if(input.getKey(SDL_SCANCODE_D))
	anglesEuler.z += m_sensibilite;
    }
    //calcul de la matrice de rotation -> calculées à l'aide des angles d'Euler  
    glm::quat yaw_pitch_roll;
    anglesEuler *= M_PI / 180.0;
    yaw_pitch_roll = glm::quat(anglesEuler);
    m_rotationMatrix *= glm::mat4_cast(yaw_pitch_roll);
    orienter();
    deplacer(m_orientation * m_vitesse);
    lookAt();
  }
}
Esempio n. 9
0
int main(int argc, char *argv[]){
	int nbByteCom;
	int i=0, x, y, a, b, k, l, erreur, mauvMouv;
	char str2[100];
	char stop;
	int nbPara;
	int nbPionJ;
	int sockfd;
	DATA *dataBuf=(DATA*)malloc(sizeof(DATA));
	DAMIER *damier;
	PION *p;
	DATA dataFin;
	dataFin.type=FIN;
	damier = init_damier();
	if(damier==NULL){
		printf("Initialisation du damier échouée\n");
		return 0;
	}

	if(argc==2){
		printf("Server, en attente d'un client sur le port %s\n", argv[1]);
		sockfd=server(atoi(argv[1]));
		if(sockfd<0) return 1;
		aff_damier(*damier);

	}else if(argc==3){
		printf("Client, connection au server %s, sur le port %s\n", argv[1], argv[2]);
		sockfd=client(argv[1],atoi(argv[2]));
		if(sockfd<0) return 1;
		
		aff_damier(*damier);
		affTour(damier);
		printf("Nombre de prise possible : %d\n", verif_possibilite_prendre(damier));
		puts("En attente du joueur adverse...");
		nbByteCom=read(sockfd,dataBuf,sizeof(DATA));
		if(nbByteCom>0){
			while(dataBuf->type!=FIN){
				if(readData(damier,*dataBuf)){
					printf("Desynchronisation\n");
					close(sockfd);
					free(dataBuf);
					free_damier(damier);
					return 1;
				}
				aff_damier(*damier);
				nbByteCom=read(sockfd,dataBuf,sizeof(DATA));
			}
		}else{
			printf("Connection perdue\n");
			close(sockfd);
			if(dataBuf!=NULL) free(dataBuf);
			if(damier!=NULL) free_damier(damier);
			exit(0);
		}
		tour_suivant(damier);
	}else{
		printf("Nombre d'arguments incorrect\n");
		return 1;
	}


	while(!fin_partie(damier)){
		mauvMouv=1;
		promotion(damier);
		affTour(damier);
		printf("Nombre de prise possible : %d\n", verif_possibilite_prendre(damier));
		while(mauvMouv){
			mauvMouv=0;
			printf("Action sur un pion : ");
			nbPara=sscanf(fgets(str2,14,stdin),"%d,%d %d,%d %d,%d", &x, &y, &a, &b, &k, &l);
			if(nbPara<1){
				printf("Bye!\n");
				close(sockfd);
				if(dataBuf!=NULL) free(dataBuf);
				if(damier!=NULL) free_damier(damier);
				exit(0);	
			}
			while(nbPara<4){
				printf("paramètre manquant(%d)\n",nbPara);
				printf("Action sur un pion : ");
				nbPara=sscanf(fgets(str2,14,stdin),"%d,%d %d,%d %d,%d", &x, &y, &a, &b, &k, &l);
				if(nbPara<1){
					printf("Bye!\n");
					close(sockfd);
					if(dataBuf!=NULL) free(dataBuf);
					if(damier!=NULL) free_damier(damier);
					exit(0);	
				}
			}
			PION *p1 = rech_pion_c(damier,x,y);
			if(nbPara<6){
				k=a+(a-x);
				l=b+(b-y);
			}
			if(verif_possibilite_prendre(damier)==0){
				if(deplacer(damier,p1,a,b)==0){
					printf("Pion déplacé en (%d,%d)\n",a,b);
					nbByteCom=write(sockfd,&last_modif,sizeof(DATA));
				}else{
					printf("MAUVAIS MOUVEMENT\n");
					mauvMouv=1;
				}
			}else{
				if(prendre(damier,p1,rech_pion_c(damier,a,b),k,l)==0){
					printf("Prise de (%d,%d) par (%d,%d) en (%d,%d)\n",a,b,x,y,k,l);
					nbByteCom=write(sockfd,&last_modif,sizeof(DATA));
					while(verif_possibilite_prendre(damier)>0){
						aff_damier(*damier);
						printf("Rafle : ");
						nbPara=sscanf(fgets(str2,14,stdin),"%d,%d %d,%d %d,%d", &x, &y, &a, &b, &k, &l);
						if(nbPara<1){
							printf("Bye!\n");
							close(sockfd);
							if(dataBuf!=NULL) free(dataBuf);
							if(damier!=NULL) free_damier(damier);
							exit(0);	
						}
						while(nbPara<4){
							printf("paramètre manquant(%d)\n",nbPara);
							printf("Rafle : ");
							nbPara=sscanf(fgets(str2,14,stdin),"%d,%d %d,%d %d,%d", &x, &y, &a, &b, &k, &l);
							if(nbPara<1){
								printf("Bye!\n");
								close(sockfd);
								if(dataBuf!=NULL) free(dataBuf);
								if(damier!=NULL) free_damier(damier);
								exit(0);	
							}
						}
						if(nbPara<6){
							k=a+(a-x);
							l=b+(b-y);
						}
						if(prendre(damier,p1,rech_pion_c(damier,a,b),k,l)==0){
							printf("Prise de (%d,%d) par (%d,%d) en (%d,%d)\n",a,b,x,y,k,l);
							nbByteCom=write(sockfd,&last_modif,sizeof(DATA));
						}else{
							printf("Prise de (%d,%d) par (%d,%d) en (%d,%d)\n",a,b,x,y,k,l);
							printf("MAUVAIS MOUVEMENT\n");
						}
					}
				}else{
					printf("MAUVAIS MOUVEMENT\n");
					mauvMouv=1;
				}
			}
		}
		aff_damier(*damier);
		nbByteCom=write(sockfd,&dataFin,sizeof(DATA));
		tour_suivant(damier);
		affTour(damier);
		printf("Nombre de prise possible : %d\n", verif_possibilite_prendre(damier));
		printf("En attente du joueur adverse...\n");
		nbByteCom=read(sockfd,dataBuf,sizeof(DATA));
		if(nbByteCom>0){
			while(dataBuf->type!=FIN){
				if(readData(damier,*dataBuf)){
					printf("Desynchronisation\n");
					close(sockfd);
					free(dataBuf);
					free_damier(damier);
					return 1;
				}
				aff_damier(*damier);
				nbByteCom=read(sockfd,dataBuf,sizeof(DATA));
			}
		}else{
			printf("Connection perdue\n");
			close(sockfd);
			if(dataBuf!=NULL) free(dataBuf);
			if(damier!=NULL) free_damier(damier);
			exit(0);
		}
		tour_suivant(damier);
	}
	free_damier(damier);
	free(dataBuf);
	close(sockfd);
	return 0;
}