ALaMain
( Elaboration d'un programme demandant la
construction de triangles particuliers.)
Cahier des charges :
L'ordinateur place trois points au hasard dans lécran lexercice consiste à déplacer ces points pour former successivement un triangle rectangle, un triangle isocèle, un triangle équilatéral, lélève dispose de 25 secondes pour réaliser le test, il peut recommencer autant de fois quil le désire. |
Le programme utilisera les objets suivants :
TForm | Fenêtre de travail Windows classique qui contiendra tous les éléments nécessaires pour faire tourner notre programme. |
TPanel | Panneau d'affichage. |
TPaintBox | Objet servant à afficher et à mémoriser une saisie effectuée au clavier (256 ca-ractères maximum). |
TMemo | Objet éditeur de texte: TMemo sera utilisé par notre programme pour afficher une consigne lisible par l'élève. |
Pas
à pas ( ou presque )
Etape 1 : Afficher trois points au
hasard.
Notre application contiendra une seule fiche (de type TForm) et
de style fsNormal (il existe d'autres styles: voir «
Propriétés » dans « lInspecteur d'objets » rubrique
FormStyle de l'objet FormALaMain si FormALaMain est le nom de la
fiche principale)--
La taille et la
disposition de ces composants devra correspondre à que vous
voyez sur ce document à la fin dans la partie annexe.
Dans la section type (Palamain.pas) on rajouté :
TPointLong=record x,y:longInt; end; TGeoPoint= record coord:TPointLong; caption:string; end; |
TPointLong
est nécessaire pour la compatibilité Delphi1-Delphi3, (en
Delphi3 on pourrait utiliser directement TPoint).
Dans les champs de la Class ajouter
dans la partie public :triangle:array[1..3]of
tgeopoint et couleur:tcolor
Ecrire la procédure InitExo, cette procédure initialise au
hasard les coordonnées des 3 points et rempli leur champ
caption, la variable couleur est initialisée à clyellow.
On fait appel à cette procédure grâce à lévénement
OnCreate de FormALaMain.
Ecrire maintenant le contenu du memo et laffichage du
TableauBleu
Pour afficher le TableauBleu, écrire la procédure nécessaire
après avoir cliqué sur lévénement OnPaint. Pour
laffichage des points créer un procédure DrawTriplet
cette procédure sera appelé par la procédure précédente.
Quelques remarques.
1/ Pour afficher quelque chose dans un TPaintBox utiliser son
canevas.
2/ Pour afficher les points utiliser la couleur : Couleur.
(cela permettera dafficher et deffacer les points en
utilisant la même procédure. Compiler et vérifier que les
trois points saffichent correctement et sont correctement
reliés.
Etape 2 : Déplacer
les points.
Pour déplacer un point le principe de lanimation repose
essentiellement sur les événements OnMouse...
Dans OnMouseDown : on le sélectionne.
Dans OnMouseMove : on le déplace (sil est sélectionné et
si cela reste dans le TableauBleu) .
Dans OnMouseUp : on le déselectionne.
Pour cela créer une variable select
(Champ public de FormALaMain) de type integer
qui indiquera quel point est sélectionné. (select :=0 indique
aucun point sélectionné) .
Créer une fonction locale de type boolean (dans
TableauBleuMouseDown) qui indiquera si on est aux environs
dun point.
function AuxEnvirons(x,y:integer;a:TPointLong):boolean;
Créer une fonction locale de type boolean (dans TableauBleuMouseMove) qui indiquera si on est en dehors.
function dehors( x,y:integer):boolean;
dans MouseMove
affecter à couleur TableauColor effacer le dessin, changer les
coordonnées du point changer la couleur réafficher le dessin.
Etape 3 : Vérifier le résultat.
La vérification du résultat doit se faire automatiquement quand
on lâche le bouton de la souris.
Ecrire une procédure vérification qui envoient un message
indiquant quel triangle a été créer.
On pourra avec profit utiliser la fonction :
Function
Longueur(a,b:TPointLong):Longint; Var r: Real; Begin r:=sqrt(sqr (a.x-b.x)+sqr(a.y-b.y)); result:=round(r); End; |
ne pas oublier une instruction du type :
messagedlg('Les
points sont trop près',mtError,[mbok],0); (* si les
points sont trop près *)
Etape 4 : Optionnel : une
GroupBox pour afficher létat actuel de lexercice.
Le programme utilisera les objets suivants :
1. TGroupBox : Le
composant TGroupBox représente une boîte groupe Windows
standard utilisée pour regrouper des contrôles associés d'une
fiche..
2. TCheckBox : Trois cases à cocher :
Triangle équilatéral, triangle rectangle, Triangle
isocèle.
Mettre tout de suite la
propriété enabled du TGroupBox à false cela permettra
dinhiber la souris pour les cases.
Rajouter dans la procédure vérification le cochage de la bonne
case.
Faire en sorte que lorsquune case a été cochée on ne
teste plus pour voir si le triangle est de ce type.
Rajouter que lorsque les trois triangles ont été trouvés on ne
peut plus rien déplacer.
Etape 5 : Le Timer !
Le programme utilisera les objets suivants :
1. TTimer : Ce
composant non visuel envoie un événement OnTimer à chaque
échéance de son Intervalle..
2. TPanel : Pour afficher le temps restant
3. TButton : Le bouton recommencer.
Au départ régler
lintervalle du TTimer à zéro (celui ci est inhibé).
Laffichage du TPanel chronomètre indique 25s
Lorsque la souris envoie pour la première fois un événement
OnMouseDown lancer le TTimer en réglant son intervalle pour
quil égrène les secondes.
Lorsque lévénement OnTimer est envoyé changer
laffichage du TPanel chronomètre.
Lorsque le temps est écoulé envoyer un message du type :
messagedlg('Temps dépassé',mtWarning,[mbOK],0);
et penser à inhiber le triangle.
Lorsque le bouton Recommencer est pressé, réinitialiser le
programme. .
Etape 6 : LAspect Graphique !
Changer les couleurs de la fiche
et des panels pour fignoler le boulot.
Rajouter dans DrawTriplet linstruction :
setbkmode(tableauBleu.canvas.handle,transparent);
Tenter de changer lapparence
du bouton !
Bon amusement !!!
Annexe :
Malgré toutes ces
explications il est possible que vous ne réussissiez pas
à faire le programme : vous pouvez télécharger la
solution en dernier recours ... Télécharger l'exécutable (32bits, 117ko) Télécharger le projet (Delphi 2,3 - 3,65ko) |
Vous pouvez nous écrire: | lilimath@lille.iufm.fr | ![]() |