Vous êtes sur la page 1sur 3

Code mini projet C++ :(déplacement cavalier)

#include <iostream>

#include <vector>

using namespace std;

const int N = 8; // Taille de l'échiquier

bool estValide(int x, int y, vector<vector<int> >& echiquier) {


return (x >= 0 && x < N && y >= 0 && y < N && echiquier[x][y] == -1);
}

void afficherEchiquier(vector<vector<int> >& echiquier) {


for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j)
cout << echiquier[i][j] << " ";
cout << endl;

}
}

bool deplacerCavalier(int x, int y, int mouvement, vector<vector<int> >& echiquier) {


// Si tous les mouvements ont été effectués, l'algorithme est terminé

if (mouvement == N * N)
return true;

// Tableaux pour stocker les déplacements possibles du cavalier


int deplacementX[] = {2, 1, -1, -2, -2, -1, 1, 2};

int deplacementY[] = {1, 2, 2, 1, -1, -2, -2, -1};


// Essayer tous les déplacements possibles
for (int k = 0; k < 8; ++k) {

int nouveauX = x + deplacementX[k];


int nouveauY = y + deplacementY[k];

if (estValide(nouveauX, nouveauY, echiquier)) {


echiquier[nouveauX][nouveauY] = mouvement;

// Récursivement essayer les autres mouvements


if (deplacerCavalier(nouveauX, nouveauY, mouvement + 1, echiquier))
return true;

// Si le mouvement ne mène pas à la solution, annuler le mouvement


echiquier[nouveauX][nouveauY] = -1;
}
}

// Aucun mouvement possible à partir de cette position


return false;
}

int main() {

vector<vector<int> > echiquier(N, vector<int>(N, -1)); // Initialiser l'échiquier

int positionInitialeX, positionInitialeY;

// Demander la position initiale du cavalier

cout << "Entrez la position initiale du cavalier (ligne colonne) : ";


cin >> positionInitialeX >> positionInitialeY;
if (positionInitialeX < 0 || positionInitialeX >= N || positionInitialeY < 0 ||
positionInitialeY >= N) {
cout << "Position invalide. Veuillez entrer des coordonnées valides." << endl;

return 1;
}

echiquier[positionInitialeX][positionInitialeY] = 0; // Position initiale du cavalier


cout << "Deplacement du cavalier aux echecs : " << endl;

// Appeler la fonction pour déplacer le cavalier


if (deplacerCavalier(positionInitialeX, positionInitialeY, 1, echiquier)) {
afficherEchiquier(echiquier); // Afficher l'échiquier avec les déplacements du cavalier
} else {

cout << "Aucune solution n'a été trouvée." << endl;


}

return 0;
}

Vous aimerez peut-être aussi