Bonjour,
J'ai un problème avec la procédure suivante:
Légende:
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 procedure carottes; var m : integer; begin ate := 0; for m := 1 to 29 do begin glPushMatrix(); glTranslatef(acar[m], bcar[m], ccar[m]); glColor3f( 153, 153, 0 ); gluCylinder( glunewquadric(), 0.05, 0.0, 0.3, 30, 30 ); glPopMatrix(); if ((a < acar[m] + 1.2) and (a > acar[m] + 0.9) and (b > bcar[m] - 0.2) and (b < bcar[m] + 0.2) and (c < ccar[m] + 1.1)) then ccar[m] := ccar[m] + 7; ate := ate + 1; if ate > 30 then Exit := 1; end;
a, b, c : Coordonnées de mon personnage
acar : Tableau de coordonnées abscisses de carottes
bcar : Tableau de coordonnées ordonnées de carottes
ccar : Tableau de coordonnées cotes de carottes
ate : Une variable qui indique le nombre de carottes ramassées
Remarque: Mon repère est inversé, je me déplace dans le sens négatif.
Dans ce code, je voudrais que lorsque mon personnage est à une certaine proximité d'une de mes carottes (ici, la carotte m), sa coordonnée de cote prenne + 7 (donc la carotte monte) et que la variable ate prenne + 1 (donc j'ai mangé une carotte de plus). Si j'ai mangé x carottes (donc quand ate = x), je sors du niveau (Exit := 1).
Problèmes:
- La partie and (a > acar[m] + 0.9) de mon code n'est "pas lue" par le compilateur, càd que lorsque je suis sur une carotte tout celles qui la précedent disparraissent aussi (donc y a que if a < acar[m] + 1.2 qui est compilée de mon point de vue).
- Le plus sérieux des deux problèmes est celui-ci: Si je mets ate à une valeur moindre de 30 (dans ce cas là), Exit prend d'ores et déjà 1 et je sors du niveau avant même de le commencer (mon perso commence à l'abscisse 0).
Quelqu'un peut m'aider?
Merci d'avance
Partager