Bonsoir !
Je suis nouveau ici J'aime bien ce site !
J'ai besoin de votre aide dans cet exercice : moi je suis encore bloqué au 1er niveau , c'est facile ! Ne soyez pas choqué mais j'ai un petit problème , je ne sais pas ou exactement donc voila l’énoncé :
On souhaite réaliser un programme qui permettrait de faire rebondir une balle sur les bords de l'écran. Ce jeu contient deux niveaux : un niveau avec un écran à une dimension et un niveau avec un écran à deux dimensions.
La balle doit pouvoir rebondir sur un écran (tableau unidimensionnel) suivant le niveau choisi :
- Si L’utilisateur a choisi le premier niveau, la balle qui est symbolisée par le caractère 'O' démarre à la case 0 et le but est d’arriver à la case finale. L’application lui demande de choisir le pas de rebondissement(entre 1 et 3) (s’il choisit 2 par exemple, la balle avancera de deux cases sur l’écran). Sachant que l’application a défini aléatoirement deux cases piège , si la balle arrive dans ces cases après avoir avancé, la balle reviendra à la case de départ et le joueur recommence. Sinon la balle continue d’avancer. Il a le droit de rejouer 3 fois sinon il perd.
- Si l’utilisateur a choisi le deuxième niveau, La balle doit pouvoir rebondir sur un écran (tableau multidimensionnel) . Afin de faciliter la programmation, on rajoute une couronne d'étoiles qui permettra de simplifier les tests lorsque la balle arrivera sur un bord .
La balle, qui est symbolisée par le caractère 'O' démarre à la position [0;0]. Elle part suivant un vecteur (abscisse et d'ordonnée) déterminé par l’utilisateur. Le but est d’arriver à la case finale [7,7] sans tomber dans l’une des quatre cases pièges qui sont prédéfinis aléatoirement par l’application. Comme le premier niveau, si la balle arrive
dans une case piège, la balle reviendra à la case de départ et le joueur recommence et Il a le droit de rejouer 3 fois sinon il perd.¨Lorsqu'elle arrive sur un bord vertical, il suffit d'inverser le sens de déplacement selon l'axe des ordonnées. De même, si la balle arrive sur un bord horizontal, on inverse le sens du déplacement selon l'axe des abscisses.
et voila ce que j'ai réalisé :On commence par le niveau 1 et puis on passe au 2eme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() {int niv,p1,p2,xp1,yp1,xp2,yp2,xp3,yp3,xp4,yp4,xb,yb,nb,k,i=0,j=0;//niv pour dire niveau,p pour dire piege et b pour dire balle char t[8]; char t1[10][10]; t[0]='O'; printf("taper 1 si vous voulez le 1er niveau sinon 2 pour le niveau 2 \n"); scanf("%d",&niv); switch (niv) { case 1 : srand(time(NULL)); p1=(rand()%8); p2=(rand()%8); printf("les cases pieges sont : %d et %d\n",p1,p2); while (j<3) { while (((i!= p1)||(i!=p2))&&(i<8)) { t[i]=' '; // ici on efface la case courante do { printf("entrer le nombre de pas \n"); scanf("%d",&nb); }while (((nb<1)||(nb>3))&&(i+nb<8)); printf("la balle saute de %d case(s) \n",nb); i+=nb; t[i] = 'O';//ici on remet le 'O' juste avant l'affichage //affichage du tableau for(k=0; k<8; k++) { printf( "%c |",t[k]); } getch(); if (i==7) printf("Vous avez gagne ! Bravo ! \n"); } if ((i==p1)||(i==p2)) printf("\n vous avez perdu , essayer encore ! il vous reste %d tentatives \n",2-j); j++; } break; case 2 : for (i=0;i<10;i++) { for (j=0;j<10;j++) { t1[0][j]='*'; t1[9][j]='*'; t1[i][0]='*'; t1[i][9]='*'; t1[0][0]='O'; } } xp1=(rand()%8); yp1=(rand()%8); xp2=(rand()%8); yp2=(rand()%8); xp3=(rand()%8); yp3=(rand()%8); xp4=(rand()%8); yp4=(rand()%8); printf("les cases pieges sont de coordonnees: (%d,%d),(%d,%d),(%d,%d) et (%d,%d) \n",xp1,yp1,xp2,yp2,xp3,yp3,xp4,yp4); while (j<3) { while ((((i!=xp1)&&(j!=yp1))||((i!=xp2)&&(j!=yp2))||((i!=xp3)&&(j!=yp3))|((i!=xp4)&&(j!=yp4)))&&((i<8)&&(j<8))) { t1[8][8]=' '; t1[i][j]='O'; do { printf("\n entrer les coordonnees de la balle \n"); scanf("%d%d",&xb,&yb); } while (((j<0)||(j>8))&&(i<0)||(i>8)); /*if ((i==0)||(i==9)) { else if ((j==0)||(j==9)) */ //affichage du tableau for(i=0; i<8; i++) {for (j=0;j<10;j++) { printf( "%c |",t1[i][j]); } } getch(); if ((i==8)&&(j==8)) printf("Vous avez gagne ! Bravo ! \n"); } if (((i==xp1)&&(j==yp1))||((i==xp2)&&(j==yp2))||((i==xp3)&&(j==yp3))|((i==xp4)&&(j==yp4))) printf("\n vous avez perdu , essayer encore ! il vous reste %d tentatives \n",2-j); j++; } break; break; } return 0; }
J’espère que vous m'aidiez le plutôt possible ! et merci d'avance !!!
Cordialement
Partager