/** * 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(); } }
/** * 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(); }
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; } }
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(); } }
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(); }
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(); } }
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; }