Bonjour,
Je me remet un peu au C++, et je suis en train de programmer un exécutable qui fait déplacer des balles dans la console windows.
J'ai réussi à créer une classe balle, avec une méthode: déplace balle.
Voici mon code:
Définition de la classe
Définition du constructeur et des méthodes:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include <cstdlib> #include <iostream> #include <conio2.h> #include <windows.h> #include <time.h> class Balle { private: int balleX; //position courante axe X de la balle int balleY; //position courante axe Y de la balle char balleB; //Charactère représentant la balle int xB,yB; // itérateur pour le déplacement de ma balle int colorBalle; // donne une couleur à ma balle int speedBalle; // donne une vitesse de déplacement à ma balle public: Balle(int xBalle,int yBalle, char bBalle, int sPeedBalle); //initialisation de ma balle void moveBalle(void); //méthode pour déplacer la balle };
mon main:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 //initialisation de l'objet balle Balle::Balle(int startX,int startY,char startNameBalle,int timeB) { balleX = startX; balleY = startY; balleB = startNameBalle; xB = startX; yB = startY; textcolor(colorBalle); gotoxy(balleX,balleY); speedBalle = timeB; cout << balleB; } //méthode pour le déplacement de ma balle void Balle::moveBalle(void) { Sleep(speedBalle); //incrémentation des compteurs xB++; yB++; // j'efface ma balle gotoxy(balleX,balleY); cout << " "; //calcule des collisions de ma balle (fenêtre cmd en 80*25) if(balleX <= 1 || xB <= 80) { balleX++; } if(balleX >= 80 || xB >= 80) { balleX--; if(xB >= 160) xB = 1; } if(balleY <=1 || yB <=25) balleY++; if(balleY >=25 || yB >=25) { balleY--; if(yB >=50) yB=1; } //colorisation aléatoire de ma balle à chaque déplacement textcolor(rand() % 10); //Affichage de la balle après déplacement gotoxy(balleX,balleY); cout << balleB; }
En faite, j'aimerais que mes 2 balles aient des vitesses de déplacements différentes.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 int main(int argc, char *argv[]) { srand(time(NULL)); //Déclaration d'un tableau de 2 balles Balle *tabB[2]; //initialisation des Balles tabB[0] = new Balle(rand() % 80,rand() % 25,'A',10); tabB[1] = new Balle(rand() % 80,rand() % 25,'A',20); getchar(); //déplacement des 2 balles while(int i = 1) { for(int i = 0; i<2; i++) { tabB[i]->moveBalle(); } } system("PAUSE"); return EXIT_SUCCESS; }
J'ai essayé d'utiliser la fonction Sleep(time), mais cela ne fonctionne pas tellement, puisque même si je définis 2 temps d'attentes différents, c'est le temps d'attentes le plus long qui est pris en compte. Du coup, mes 2 balles se déplacent à la même vitesse.
Est-ce qu'il y aurait une solution pour que mes 2 balles se déplacent à des vitesses différentes?
Merci beaucoup pour vos réponses.
PS: Pour information, je développe sour DevCpp. J'ai utilisé la librairie conio2.h de borland. J'ai donc accès à la fonction gotoxy(x,y) etc....
Aussi, mon code est dans un seul fichier qui s'appelle main.cpp