Cet article utilise des exemples pour décrire la méthode d'utilisation de Delphi pour obtenir l'impact d'une balle, similaire à l'effet flipper. Cliquez sur le bouton "Démarrer", et une boule verte dans le formulaire continuera à frapper et à se déplacer de gauche à droite, et sa taille continuera de changer. Cliquez sur le bouton "Stop" pour arrêter la balle. Utilisez la souris pour faire glisser la commande de réglage en bas à droite pour ajuster la vitesse de la balle.
Ici, nous utilisons principalement le contrôle Timer, le contrôle Panel, le contrôle TrackBar, le contrôle SpinEdit, le contrôle Shape et le contrôle Button pour y parvenir. L'accent est mis sur le contrôle Timer de Delphi. Pendant l'exécution du programme, le contrôle n'est pas visible et ne peut pas être manipulé directement. Le contrôle Timer déclenche automatiquement l'événement OnTimer() à intervalles réguliers. Cet exemple l'utilise pour déclencher l'événement de mouvement de balle.
Idée de conception : le principal problème à résoudre par ce programme est de savoir comment contrôler le mouvement de la balle ainsi que la vitesse et la taille de la balle pendant le mouvement. Utilisez l'événement OnTimer() du contrôle Timer pour contrôler le mouvement de la balle ; utilisez le contrôle TrackBar et le contrôle SpinEdit pour ajuster la vitesse du mouvement de la balle. La balle est générée par le contrôle Shape.
un. Nouvelle construction :
(1) Démarrez le programme Delphi 6.0. Sélectionnez la commande "Nouveau" dans le menu "Fichier", sélectionnez l'option Application dans le sous-menu contextuel et la fenêtre Form1 du nouveau projet apparaîtra.
(2) Sélectionnez la commande "Enregistrer le projet sous" dans le menu "Fichier" pour faire apparaître la boîte de dialogue Enregistrer Unit1 sous. Dans la zone de liste "Enregistrer dans", sélectionnez le nom du répertoire dans lequel le fichier fenêtre doit être stocké ; remplissez le nom du fichier dans la zone d'édition "Nom du fichier", remplissez ici "Unit1" et cliquez sur le bouton "Enregistrer". pour enregistrer les options ci-dessus.
(3) Après avoir exécuté l'étape précédente, la boîte de dialogue "Enregistrer le projet sous" apparaîtra. Dans la zone de liste "Enregistrer dans", sélectionnez le nom du répertoire dans lequel le projet doit être stocké. Il est préférable de sélectionner le même répertoire qu'à l'étape (2) ; dans la zone d'édition "Nom du fichier", remplissez le nom du fichier. pour enregistrer le code source du projet. Remplissez ici "Projet1" et cliquez sur le bouton "Enregistrer" pour enregistrer les options ci-dessus.
deux. Quelques réglages de paramètres :
(1) Activez la fenêtre Unit1, définissez la propriété Caption du formulaire sur "sphère mobile" et la propriété Color sur "clMoneyGreen" dans le panneau "Propriétés".
(2) Sélectionnez l'option Panneau sur la page "Standard", ajoutez le contrôle Panneau dans le formulaire, ajustez sa taille et sa position appropriées, puis définissez la propriété Nom du contrôle dans le panneau "Propriétés" sur "Panel1" et BevelInner. sur "bvLowered" ", BevelOuter est "blNone", BorderStyle est défini sur "bsSingle" et la propriété Color est définie sur "clSkyBlue".
(3) Sélectionnez l'option Timer sur la page "Système", ajoutez un contrôle Timer au formulaire et définissez sa propriété Interval sur 1 et sa propriété Name sur "Timer1" dans le panneau Inspecteur d'objets.
(4) Sélectionnez l'option Forme sur la page "Supplémentaire", ajoutez un contrôle Forme sur Panel1 dans le formulaire, définissez sa propriété Show Hint sur "True" et la propriété Hint sur "Sports Sphere" dans le panneau "Propriétés". La propriété Brush.Color est ClLime et sa propriété Shape est définie sur "slCircle".
(5) Sélectionnez l'option Bouton sur la page "Standard", ajoutez trois contrôles Bouton au formulaire et ajustez leur taille et leur position appropriées. Définissez ses propriétés de légende dans le panneau "Propriétés" sur "Démarrer", "Arrêter" et "Quitter" respectivement.
(6) Sélectionnez l'option TrackBar sur la page Win 32, ajoutez le contrôle TrackBar au formulaire et ajustez sa taille et sa position appropriées. Définissez ses propriétés appropriées dans le panneau Propriétés.
(7) Sélectionnez l'option SpinEdit sur Samples, ajoutez le contrôle SpinEdit au formulaire et ajustez sa taille et sa position appropriées. Définissez ses propriétés appropriées dans le panneau Propriétés.
3. Analyse du code :
(1) Afin de réaliser la fonction de déplacement de la balle d'avant en arrière, une variable globale doit être définie, c'est-à-dire l'entier I. La valeur initiale de I est 1. Lorsque I=1, la balle se déplace vers la gauche, et lorsqu'elle touche la paroi gauche du panneau, la valeur I devient 2. A ce moment, la balle se déplace vers la droite, et lorsqu'elle touche la paroi droite du panneau , la valeur I redevient 1. De cette façon, grâce au changement de la valeur I, le mouvement de va-et-vient de la balle est réalisé. Cette partie du code se trouve dans l'événement OnTimer :
procédure TForm1.Timer1Timer(Sender: TObject);beginTimer1.interval:=trackbar1.position; //Définit l'intervalle de temps de déclenchement du contrôle Timer si i=1 then //La balle se déplace vers la gauche commence si shape1.left>0 thenbeginshape1 .left: =shape1.left-10; //Changer la position de la boule shape1.Width:=(shape1.Width+1)mod 70; //Changer la largeur du rectangle où se trouve la balle shape1.Height:=(shape1.Height+1)mod 70; //Changer la hauteur du rectangle où se trouve la balle endelsei:=2; balle vers l'extrémité droite ; si i = 2, alors commencez si shape1.left<(panel1.Width-shape1.Width-5) thenbeginshape1.left:=shape1.left+10 ; //Changer la position de la balle shape1.Width:=(shape1.Width+1)mod 70;//Changer la largeur du rectangle où se trouve la balle shape1.Height:=(shape1.Height+1)mod 70 ;/ /Changer la hauteur du rectangle où se trouve la balleendelsei:=1;end;end;
(2) Les boutons « Start » et « Stop » contrôlent si la balle bouge. En fait, ils contrôlent si le Timer fonctionne :
procédure TForm1.Button1Click(Sender: TObject);beginTimer1.interval:=trackbar1.position; //Définit l'intervalle de déclenchement du contrôle Timer Timer1.Enabled:=true; //La balle commence à bougerend;procedure TForm1.Button2Click(Sender : TObject);beginTimer1.Enabled:=False; //La balle s'arrête de bougerend;
(3) Les deux contrôles TrackBar et SpinEdit contrôlent la vitesse de déplacement de la balle. Les codes correspondants sont les suivants :
procédure TForm1.SpinEdit1Change(Sender: TObject);begintrackbar1.position:=spinEdit1.Value; //Modifier la vitesse de déplacementend;procedure TForm1.TrackBar1Change(Sender: TObject);beginspinEdit1.value:=trackbar1.Position; //Modifier la barre de suivi; valeur Notifier le contrôle SpinEdit des modifications ;
4. Le code complet du flipper Delphi est le suivant :
unité Unit1;interfaceutiliseWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,ExtCtrls, ComCtrls, StdCtrls, Spin;typeTForm1 = class(TForm)Panel1: TPanel;Button1: TButton;Button2: TButton;TrackBar1: TTrackBar;Timer1 : TTimer;Forme1 : TShape;SpinEdit1: TSpinEdit;Button3: TButton;procédure Timer1Timer(Expéditeur: TObject);procédure Button1Click(Expéditeur: TObject);procédure Button2Click(Expéditeur: TObject);procédure SpinEdit1Change(Expéditeur: TObject);procédure TrackBar1Change(Expéditeur: TObject); procédure Button3Click (Expéditeur : TObject);private{ Déclarations privées }public{ Déclarations publiques }end;varForm1: TForm1;i:integer;implementation{$R *.DFM}procédure TForm1.Timer1Timer(Sender: TObject);beginTimer1.interval:=trackbar1.position; //Définit l'intervalle de temps de déclenchement du contrôle Timer si i=1 alors //La balle se déplace vers la gauche startif shape1.left>0 thenbeginshape1.left:=shape1.left-10; //Changer la position de la balle shape1.Width:=(shape1.Width+1)mod 70;//Changer la largeur du rectangle où se trouve la balle shape1.Height := (shape1.Height+1)mod 70;//Changer la hauteur du rectangle où se trouve la balleendelsei:=2; //La balle se déplace vers l'extrémité droite;if i=2 thenbeginif; shape1.left<(panel1.Width-shape1.Width-5) thenbeginshape1.left:=shape1.left+10; //Changer la position de la boule shape1.Width:=(shape1.Width+1)mod 70; /Changer la largeur du rectangle où se trouve la balle shape1.Height:=(shape1.Height+1)mod 70;//Modifier la hauteur du rectangle où se trouve la balleendelsei:=1;end;end;procedure TForm1.Button1Click(Sender: TObject);beginTimer1.interval:=trackbar1.position; //Définir l'intervalle de temps de déclenchement de le contrôle Timer Timer1 .Enabled:=true; //La balle commence à bouger;procédure TForm1.Button2Click(Sender: TObject);beginTimer1.Enabled:=False; //La balle s'arrête de bougerend;procedure TForm1.SpinEdit1Change(Sender: TObject);begintrackbar1.position:=spinEdit1.Value; //Modifier la vitesse de mouvementend;procedure TForm1.TrackBar1Change(Sender : TObject);beginspinEdit1.value:=trackbar1.Position; //Notifier le contrôle SpinEdit des modifications apportées à la valeur Trackbarend;procedure TForm1.Button3Click(Sender: TObject);beginclose; //Exitend;initializationi:=1;end.