void LH_CursorController::virtualKeyPress(QString s) { qDebug() << "LH_CursorController: Virtual Key Press - " << s; if( s == "up" ) doMoveUp(); else if( s == "down" ) doMoveDown(); else if( s == "left" ) doMoveLeft(); else if( s == "right" ) doMoveRight(); else if( s == "sel" ) doSelect(); else if( s == "act" ) doActivate(); else if( s == "resel" ) doReselect(); }
void Game::evolue(Input& in) { if(endOfAnimation) in.setQuit(1); // Tableau des contrôles des joueurs (clavier) SDLKey tabkey[3][5] = { {SDLK_z,SDLK_s,SDLK_q,SDLK_d, SDLK_a}, {SDLK_UP,SDLK_DOWN,SDLK_LEFT,SDLK_RIGHT, SDLK_RSHIFT}, {SDLK_KP8, SDLK_KP5, SDLK_KP4, SDLK_KP6, SDLK_KP7}, }; // Tableau des controles des joueurs (joystick) int tabjoy[] = {1,4,8,2,0}; // Ecoute du clavier et Actions en conséquence for(int i=0; i<NB_PLAYERS; i++ ) { // Récupération du joueur i Player *p = mapPlayers[i]; if( p->isAlive() ) { if( in.getNbJoysticks() > 0 && ( i - in.getNbJoysticks() ) < 0 ) { // Mouvement vers le haut : if( in.getHat(i,0) == tabjoy[0] ) { doMoveUp(p); } // Mouvement vers le bas : if( in.getHat(i,0) == tabjoy[1] ) { doMoveDown(p); } // Mouvement vers la gauche : if( in.getHat(i,0) == tabjoy[2] ) { doMoveLeft(p); } // Mouvement vers la droite : if( in.getHat(i,0) == tabjoy[3] ) { doMoveRight(p); } // Remise à 0 du sprite, dès qu'on relâche toutes les touches de déplacement if( in.getHat(i,0) != tabjoy[0] && in.getHat(i,0) != tabjoy[1] && in.getHat(i,0) != tabjoy[2] && in.getHat(i,0) != tabjoy[3] ) { p->resetSprite(); } // Pose d'une bombe if( in.getButton(i, tabjoy[4]) ) { // Remise à 0 de la touche, pour éviter la pose de bombe en restant appuyé : in.resetButton(i,tabjoy[4]); doDropBomb(p); } } else { // Mouvement vers le haut : if( in.getKey(tabkey[i][0]) && !in.getKey(tabkey[i][1]) && !in.getKey(tabkey[i][2]) && !in.getKey(tabkey[i][3])) { doMoveUp(p); } // Mouvement vers le bas : if( !in.getKey(tabkey[i][0]) && in.getKey(tabkey[i][1]) && !in.getKey(tabkey[i][2]) && !in.getKey(tabkey[i][3])) { doMoveDown(p); } // Mouvement vers la gauche : if( !in.getKey(tabkey[i][0]) && !in.getKey(tabkey[i][1]) && in.getKey(tabkey[i][2]) && !in.getKey(tabkey[i][3])) { doMoveLeft(p); } // Mouvement vers la droite : if( !in.getKey(tabkey[i][0]) && !in.getKey(tabkey[i][1]) && !in.getKey(tabkey[i][2]) && in.getKey(tabkey[i][3])) { doMoveRight(p); } // Remise à 0 du sprite, dès qu'on relâche toutes les touches de déplacement if( !in.getKey(tabkey[i][0]) && !in.getKey(tabkey[i][1]) && !in.getKey(tabkey[i][2]) && !in.getKey(tabkey[i][3])) { p->resetSprite(); } // Pose d'une bombe if( in.getKey(tabkey[i][4] ) ) { // Remise à 0 de la touche, pour éviter la pose de bombe en restant appuyé : in.resetKey(tabkey[i][4]); doDropBomb(p); } } } } // Mise à jour des bombes for(int i = 0; i < mapBombs.size() ; i++ ) { updateBomb(i); } // Mise à jour des explosions for(int i = 0; i < mapExplosions.size() ; i++ ) { updateExplosion(i); } // Explosions et personnages for(int i = 0; i < mapExplosions.size() ; i++ ) { Explosion *e = mapExplosions[i]; for(int j = 0; j < e->getCollisionBoxes().size() ; j++ ) { SDL_Rect box = e->getCollisionBoxes()[j]; for(int k = 0; k < mapPlayers.size() ; k++) { Player *p = mapPlayers[k]; if( p->isAlive() ) { if( checkCollision( box, p->getBox() ) ) { killPlayer(k); } } } } } // Test du gagnant if( nbPlayersAlive == 1 ) { int indexWinner; bool win = false; for( int i = 0 ; i < mapPlayers.size() ; i++) { if( mapPlayers[i]->isAlive() ) { indexWinner = i; win =true; } if( win ) break; } if(title == NULL) { title = new AnimationPlayer("img/animations/players/player%d-wins-%d.png", indexWinner+1, 42); endOfGame = true; } } }