Este artículo utiliza ejemplos para describir el método de uso de Delphi para lograr el impacto de una bola, similar al efecto pinball. Haga clic en el botón "Inicio" y una bola verde en forma continuará golpeando y moviéndose hacia la izquierda y hacia la derecha, y su tamaño seguirá cambiando. Haga clic en el botón "Detener" para detener la pelota. Utilice el mouse para arrastrar el control de ajuste en la parte inferior derecha para ajustar la velocidad de la pelota.
Aquí utilizamos principalmente el control de Temporizador, el control de Panel, el control TrackBar, el control SpinEdit, el control de Forma y el control de Botón para lograrlo. La atención se centra en el control del temporizador de Delphi. Mientras el programa se está ejecutando, el control no es visible y no se puede manipular directamente. El control Timer activa automáticamente el evento OnTimer() a intervalos regulares. Este ejemplo lo utiliza para activar el evento de movimiento de la pelota.
Idea de diseño: El principal problema que debe resolver este programa es cómo controlar el movimiento de la pelota y la velocidad y el tamaño de la pelota durante el movimiento. Utilice el evento OnTimer() del control Timer para controlar el movimiento de la pelota; utilice el control TrackBar y el control SpinEdit para ajustar la velocidad del movimiento de la pelota. La pelota es generada por el control Forma.
uno. Nueva construcción:
(1) Inicie el programa Delphi 6.0. Seleccione el comando "Nuevo" en el menú "Archivo", seleccione la opción Aplicación en el submenú emergente y aparecerá la ventana Form1 del nuevo proyecto.
(2) Seleccione el comando "Guardar proyecto como" en el menú "Archivo" para que aparezca el cuadro de diálogo Guardar Unidad1 como. En el cuadro de lista "Guardar en", seleccione el nombre del directorio donde se debe almacenar el archivo de la ventana; complete el nombre del archivo en el cuadro de edición "Nombre de archivo", complete "Unidad1" aquí y haga clic en el botón "Guardar". para guardar las opciones anteriores.
(3) Después de ejecutar el paso anterior, aparecerá el cuadro de diálogo "Guardar proyecto como". En el cuadro de lista "Guardar en", seleccione el nombre del directorio donde se debe almacenar el proyecto. Es mejor seleccionar el mismo directorio que en el paso (2) y complete el nombre del archivo. para guardar el código fuente del proyecto, complete "Proyecto1" aquí y haga clic en el botón "Guardar" para guardar las opciones anteriores.
dos. Algunas configuraciones de parámetros:
(1) Active la ventana Unidad1, establezca la propiedad Título del formulario en "esfera móvil" y la propiedad Color en "clMoneyGreen" en el panel "Propiedades".
(2) Seleccione la opción Panel en la página "Estándar", agregue el control Panel en el formulario, ajuste su tamaño y posición apropiados y establezca la propiedad Nombre del control en el panel "Propiedades" en "Panel1" y BevelInner. en "bvLowered" ", BevelOuter es "blNone", BorderStyle está establecido en "bsSingle" y la propiedad Color está establecida en "clSkyBlue".
(3) Seleccione la opción Temporizador en la página "Sistema", agregue un control Temporizador al formulario y establezca su propiedad Intervalo en 1 y la propiedad Nombre en "Temporizador1" en el panel Inspector de objetos.
(4) Seleccione la opción Forma en la página "Adicional", agregue un control Forma en el Panel1 en el formulario, establezca su propiedad Mostrar sugerencia en "Verdadero" y la propiedad Sugerencia en "Esfera deportiva" en el panel "Propiedades". La propiedad Brush.Color es ClLime y su propiedad Shape está establecida en "slCircle".
(5) Seleccione la opción Botón en la página "Estándar", agregue tres controles de Botón al formulario y ajuste su tamaño y posición adecuados. Establezca sus propiedades de Título en el panel "Propiedades" en "Inicio", "Detener" y "Salir" respectivamente.
(6) Seleccione la opción TrackBar en la página de Win 32, agregue el control TrackBar al formulario y ajuste su tamaño y posición adecuados. Establezca sus propiedades apropiadas en el panel Propiedades.
(7) Seleccione la opción SpinEdit en Muestras, agregue el control SpinEdit al formulario y ajuste su tamaño y posición adecuados. Establezca sus propiedades apropiadas en el panel Propiedades.
3. Análisis de código:
(1) Para realizar la función de la pelota que se mueve hacia adelante y hacia atrás, es necesario establecer una variable global, es decir, el número entero I. El valor inicial de I es 1. Cuando I = 1, la bola se mueve hacia la izquierda y cuando golpea la pared izquierda del panel, el valor I se convierte en 2. En este momento, la bola se mueve hacia la derecha y cuando golpea la pared derecha del panel , el valor I vuelve a ser 1. De esta forma, mediante el cambio de valor, se realiza el movimiento de ida y vuelta de la pelota. Esta parte del código está en el evento OnTimer:
procedimiento TForm1.Timer1Timer(Sender: TObject);beginTimer1.interval:=trackbar1.position //Establece el intervalo de tiempo de activación del control Temporizador si i=1 entonces //La bola se mueve hacia la izquierda beginif shape1.left>0 thenbeginshape1 .left: =shape1.left-10; //Cambiar la posición de la bola shape1.Width:=(shape1.Width+1)mod 70; //Cambiar el ancho del rectángulo donde se encuentra la bola shape1.Height:=(shape1.Height+1)mod 70; //Cambiar la altura del rectángulo donde se encuentra la bola endelsei:=2; bola hacia el extremo derecho; si i=2 entoncescomienza si forma1.izquierda<(panel1.Ancho-forma1.Ancho-5) entoncescomienzaforma1.izquierda:=forma1.izquierda+10; //Cambiar la posición de la bola shape1.Width:=(shape1.Width+1)mod 70;//Cambiar el ancho del rectángulo donde se encuentra la bola shape1.Height:=(shape1.Height+1)mod 70 ;/ /Cambiar la altura del rectángulo donde se encuentra la bolaendelsei:=1;end;end;
(2) Los botones "Iniciar" y "Detener" controlan si la pelota se mueve. De hecho, controlan si el temporizador funciona:
procedimiento TForm1.Button1Click(Sender: TObject);beginTimer1.interval:=trackbar1.position; //Establece el intervalo de activación del control del temporizador Timer1.Enabled:=true //La bola comienza a moverseend;procedure TForm1.Button2Click(Sender : TObject);beginTimer1.Enabled:=False //La bola deja de moverseend;
(3) Los dos controles TrackBar y SpinEdit controlan la velocidad del movimiento de la bola. Los códigos correspondientes son los siguientes:
procedimiento TForm1.SpinEdit1Change(Sender: TObject);begintrackbar1.position:=spinEdit1.Value; //Cambiar la velocidad del movimientoend;procedure TForm1.TrackBar1Change(Sender: TObject);beginspinEdit1.value:=trackbar1.Position //Cambiar la barra de seguimiento; valor Notificar al control SpinEdit de los cambios enviar;
4. El código completo del pinball Delphi es el siguiente:
unidad Unidad1;interfazusaWindows, Mensajes, SysUtils, Clases, Gráficos, Controles, Formularios, Diálogos,ExtCtrls, ComCtrls, StdCtrls, Spin;typeTForm1 = clase(TForm)Panel1: TPanel;Button1: TButton;Button2: TButton;TrackBar1: TTrackBar;Timer1 : TTimer;Forma1: TShape;SpinEdit1: TSpinEdit;Button3: TButton;procedimiento Timer1Timer(Remitente: TObject);procedimiento Button1Click(Remitente: TObject);procedimiento Button2Click(Remitente: TObject);procedimiento SpinEdit1Change(Remitente: TObject);procedimiento TrackBar1Change(Remitente: TObject); procedimiento Button3Click(Remitente: TObject);privado{ Declaraciones privadas }públicas{ Declaraciones públicas }end;varForm1: TForm1;i:integer;implementación{$R *.DFM}procedimiento TForm1.Timer1Timer(Sender: TObject);beginTimer1.interval:=trackbar1.position; //Establece el intervalo de tiempo de activación del control Temporizador si i=1 entonces //La bola se mueve hacia la izquierda comienza si forma1.izquierda>0 thenbeginshape1.left:=shape1.left-10; //Cambiar la posición de la bola shape1.Width:=(shape1.Width+1)mod 70;//Cambiar el ancho del rectángulo donde se encuentra la bola shape1.Height := (shape1.Height+1)mod 70;//Cambiar la altura del rectángulo donde se encuentra la pelotaendelsei:=2 //La pelota se mueve hacia el extremo derecho;si i=2 entoncesbeginif; shape1.left<(panel1.Width-shape1.Width-5) thenbeginshape1.left:=shape1.left+10; //Cambiar la posición de la bola shape1.Width:=(shape1.Width+1)mod 70; /Cambiar el ancho del rectángulo donde se encuentra la bola shape1.Height:=(shape1.Height+1)mod 70;//Cambiar la altura del rectángulo donde se encuentra la bolaendelsei:=1;end;end;procedure TForm1.Button1Click(Sender: TObject);beginTimer1.interval:=trackbar1.position //Establece el intervalo de tiempo de activación de el control del temporizador Timer1 .Enabled:=true; //La bola comienza a moverse;procedimiento TForm1.Button2Click(Sender: TObject);beginTimer1.Enabled:=False; //La bola deja de moverseend;procedimiento TForm1.SpinEdit1Change(Sender: TObject);begintrackbar1.position:=spinEdit1.Value; //Cambiar la velocidad de movimientoend;procedimiento TForm1.TrackBar1Change(Sender : TObject);beginspinEdit1.value:=trackbar1.Position; //Notificar al control SpinEdit los cambios en el valor de la barra de seguimientoend;procedure TForm1.Button3Click(Sender: TObject);beginclose; //Exitend;initializationi:=1;end.