0% ont trouvé ce document utile (0 vote)
34 vues3 pages

Code CPP

Le document présente un programme en C++ qui simule un robot AGV (Automated Guided Vehicle) capable de se déplacer sur une grille tout en évitant des obstacles. Il inclut des fonctionnalités pour ajouter des obstacles aléatoires, déplacer le robot sur les axes X et Y, afficher l'état du robot et recharger son énergie. Un menu interactif permet à l'utilisateur de contrôler le robot et d'afficher la grille.

Transféré par

khaddormounia
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
34 vues3 pages

Code CPP

Le document présente un programme en C++ qui simule un robot AGV (Automated Guided Vehicle) capable de se déplacer sur une grille tout en évitant des obstacles. Il inclut des fonctionnalités pour ajouter des obstacles aléatoires, déplacer le robot sur les axes X et Y, afficher l'état du robot et recharger son énergie. Un menu interactif permet à l'utilisateur de contrôler le robot et d'afficher la grille.

Transféré par

khaddormounia
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

1: #include <iostream>

2: #include <cstdlib> // Pour utiliser rand() et srand()


3: #include <ctime> // Pour utiliser time() pour générer des graines aléatoires
4: using namespace std;
5: class Object {
6: protected:
7: int posX, posY; // Coordonnées de l'objet
8: int vitesse ;
9: public:
10: Object(int x = 0, int y = 0) : posX(x), posY(y) {}
11: };
12: // Classe pour le robot AGV (hérite de Object)
13: class AGV:public Object{
14: private:
15: int posX, posY;
16: int energie; // Énergie restante
17: int grille[10][10] = {0}; // Grille (initialisée à 0)
18: public:
19: AGV(int x = 0, int y = 0, int e = 100) :Object (x,y), energie(e) {}
20:
21: // Ajouter des obstacles aléatoires
22: void ajouterObstaclesAleatoires(int nombreObstacles) {
23: srand(time(0)) ; //Pour Initialiser le générateur de nombres aléatoires
24: for (int i = 0; i < nombreObstacles; ++i) {
25: int x, y;
26: do {
27: x = rand() % 10; // Générer une position x aléatoire (0-9)
28: y = rand() % 10; // Générer une position y aléatoire (0-9)
29: } while (grille[x][y] == 1 || (x == posX && y == posY)); // Éviter les doublons et la position de l'AGV
30: if (x >= 0 && x < 10 && y >= 0 && y < 10) {
31: grille[x][y] = 1;
32: } else {
33: cout << "Position hors des limites de la grille!\n";
34: }
35: }
36: }
37:
38: // Afficher la grille
39: void afficherGrille() {
40: for (int i = 0; i < 10; ++i) {
41: for (int j = 0; j < 10; ++j) {
42: if(i!=9 || j!= 9){
43: if (i == posX && j == posY)
44: cout << "A";
45: else if (grille[i][j] == 1)
46: cout << "X";
47: else
48: cout << ". ";
49: }
50: else{
51: cout << "M";
52: }
53: }
54: cout << endl;
55: }
56: }
57:
58: // Afficher l'état du robot
59: void afficher() {
60: cout << "AGV en (" << posX << ", " << posY << "), Énergie: " << energie << "%\n";
61: }
62:
63: // Déplacer le robot sur l'axe X
64: void deplacerX(int pas) {
65: int cibleX = posX + pas;
66:
67: if (cibleX < 0 || cibleX >= 10) {
68: cout << "Position hors des limites de la grille!\n";
69: return;
70: }
71:
72: while (posX != cibleX) {
73: if (energie <= 0) {
74: cout << "Énergie insuffisante! Déplacement arrêté.\n";
75: return;
76: }
77:
78: int nextX = posX + (cibleX > posX ? 1 : -1);
79:
80: if (grille[nextX][posY] == 1) {
81: cout << "Obstacle détecté en (" << nextX << ", " << posY << "). Déplacement annulé.\n";
82: return;
83: }
84:
85: posX = nextX;
86: energie -= 5;
87:
88: cout << "AGV déplacé en (" << posX << ", " << posY << "), énergie restante: " << energie << "%\n";
89: }
90: afficherGrille();
91: }
92:
93: // Déplacer le robot sur l'axe Y
94: void deplacerY(int pas) {
95: int cibleY = posY + pas;
96:
97: if (cibleY < 0 || cibleY >= 10) {
98: cout << "Position hors des limites de la grille!\n";
99: return;
100: }
101:
102: while (posY != cibleY) {
103: if (energie <= 0) {
104: cout << "Énergie insuffisante! Déplacement arrêté.\n";
105: return;
106: }
107:
108: int nextY = posY + (cibleY > posY ? 1 : -1);
109:
110: if (grille[posX][nextY] == 1) {
111: cout << "Obstacle détecté en (" << posX << ", " << nextY << "). Déplacement annulé.\n";
112: return;
113: }
114:
115: posY = nextY;
116: energie -= 5;
117:
118: cout << "AGV déplacé en (" << posX << ", " << posY << "), énergie restante: " << energie << "%\n";
119: }
120: afficherGrille();
121: }
122:
123: // Recharger l'énergie
124: void recharger() {
125: energie = 100;
126: cout << "Énergie rechargée à 100%.\n";
127: }
128: };
129:
130: int main() {
131: AGV agv(0, 0);
132: int choix,pas;
133: // Ajouter des obstacles aléatoires
134: int nombreObstacles;
135: cout << "Combien d'obstacles voulez-vous ajouter ? : ";
136: cin >> nombreObstacles;
137: [Link](nombreObstacles);
138:
139: do {
140: cout << "\n--- Menu ---\n";
141: cout << "1. Afficher la grille\n";
142: cout << "2. Déplacer l'AGV sur l'axe Y \n";
143: cout << "3. Déplacer l'AGV sur l'axe X \n";
144: cout << "4. Recharger l'énergie\n";
145: cout << "5. Quitter\n";
146: cout << "Votre choix: ";
147: cin >> choix;
148:
149: switch (choix) {
150: case 1:
151: [Link]();
152: break;
153: case 2:
154: cout << "Entrez le nombre de pas sur l'axe Y : ";
155: cin >> pas;
156: [Link](pas);
157: break;
158: case 3:
159: cout << "Entrez le nombre de pas sur l'axe X : ";
160: cin >> pas;
161: [Link](pas);
162: break;
163: case 4:
164: [Link]();
165: break;
166: case 5:
167: cout << "Fin du programme.\n";
168: break;
169: default:
170: cout << "Choix invalide. Réessayez.\n";
171: }
172: } while (choix != 5);
173:
174: return 0;
175: }

Vous aimerez peut-être aussi