Vous êtes sur la page 1sur 5

Page 1 sur 5

Un casse brique en Delphi ? Premiers pas


Oui, mais un petit pour le moment.

Objectifs : Introduction au type enregistrement (record) Comprendre les Timer et leurs vnements OnTimer Gestion du clavier Nous aurons besoin dune fentre contenant

a) un composant Panel nomm terrain que lon pourra placer sans trop se soucier de sa taille sur la fentre :

fond noir (proprit brush.color ClBlack) remplit toute la zone client de la fentre (proprit align AlClient)

b) 2 composants TShape (forme gomtrique), lun pour la balle, lautre pour la raquette, nomms Raquette et Balle. Il est important quils soient placs dans le panel.

La proprit shape (forme) dun Tshape dfinit sa forme : stCircle, stEllipse. stSquare cercle, ellipse, rectangle, rectangle angles arrondis, carr angles arrondis ou carr. La proprit brush (brosse) dun Tshape dfinit laspect de son remplissage La proprit Pen (crayon) dfinit laspect celui de son contour. Raquette : Balle : Shape stRectangle, Shape stCircle, Brush.Color ClYellow Brush.Color ClRed Pen.color ClYellow Pen.color ClRed

tailles indicatives : fentre : 700 552 pixels terrain : 670 500 ; raquette : 80 17 ; balle : 25 25

c) de 2 composants Timer nomms TimerBalle et TimerRaquette dont la proprit Interval sera rgle sur 1

Page 2 sur 5

Principe : Les deux timers TimerBalle et TimerRaquette greront respectivement les mouvements de la balle et la position de la raquette.

Gestion des mouvements la balle :


Pour le moment, nous nous contenterons de faire rebondir la balle btement 45 sur les limites du terrain, sans grer les collisions La balle volue dans le panel nomm terrain, ou plus exactement dans son rectangle client ( ClientRectangle ) qui est la zone utile du composant (en enlevant les bordures) 0,0 balle.top balle.left

ClientWidth 1, ClientHeight -1 Notre balle circulaire en en vrit prisonnire dun carr :

Les proprits qui nous seront utiles sont : balle.left, balle.top, balle.width et balle.height (position gauche, haute, largeur, hauteur) Il faudra aussi grer son acclration en x et en y, sa position maximale droit et en bas. Nous pourrions dfinir un certains nombre de variables dans notre programme, mais Delphi (comme le langage C avec les struct) permet de crer des types de donnes personnaliss.

Les enregistrement ( record ) en Delphi :


Les enregistrements sont des types puissants de Pascal Objet : ils sont entirement personnalisables. Le principe est de rassembler en un seul bloc des donnes diverses qu'il aurait autrement fallu stocker dans des endroits spars. Les enregistrements permettront en quelque sorte de dfinir des moules partir desquels seront obtenues des variables. syntaxe : Exemple :

Page 3 sur 5 Imaginons que dans un programme nous ayons grer des personnes Nous pourrons simplement dfinir la personne par son nom, son prnom, son ge, sa taille, sa situation matrimoniale en crant des enregistrements de ces donnes.

Nous pourrons ensuite dfinir facilement des variable de type Tpersonne (Le T devant le nom dun type est une habitude de Delphi)

ou, plus lisiblement grce au mot clef with ( avec ) :

Page 4 sur 5 Notre programme sera bien plus simple grer si nous dfinissons les proprits de la balle et de la raquette en utilisant cette technique Commenons par la balle : Le type sera nomm TBalle. Notre balle, de type TBalle, sera nomme LaBalle. Nous pourrons modifier ses proprits, puis affecter ses coordonnes x et y aux proprits Left et Top du Tshape nomm Balle. Notre balle aura les proprits suivantes (champs de lenregistrement) : des coordonnes x et y une taille une vitesse en x et en y (qui peut tre positive ou ngative) des coordonnes maximales en x et y (les mini tant zro)

LaBalle.x LaBalle.y LaBalle.dx LaBalle.dy Notre type sera dclar en dbut dunit, avant la classe TForm1 :

LaBalle.taille (position aprs mouvement)

Page 5 sur 5 Dclarons et initialisons notre balle Nous dclarons une variable globale de type TBalle

Nous initialisons les champs de notre variable la cration de la fentre (vnement OnCreate de la fiche)

Nous affichons la forme reprsentant la balle lcran en utilisant les coordonnes de LaBalle Faisons bouger notre balle : vous de travailler !!! chaque appel de la procdure OnTimer de TimerBalle, il faudra faire bouger la balle en ajoutant dx et dy aux positions x et y Si x < 0 alors dx sera invers (rebond) et on collera la balle gauche Si x > LaBalle.MaxX alors dx sera invers (rebond) et on collera la balle LaBalle.Max idem en y une fois les calculs effectus sur LaBalle, on mettra jour laffichage du composant balle

Vous aimerez peut-être aussi