Artikel ini menggunakan contoh untuk menjelaskan metode penggunaan Delphi untuk mencapai dampak bola, mirip dengan efek pinball. Klik tombol "Start", dan bola hijau berbentuk akan terus mengenai dan bergerak ke kiri dan ke kanan, dan ukurannya akan terus berubah. Klik tombol "Stop" untuk menghentikan bola. Gunakan mouse untuk menyeret kontrol penyesuaian di kanan bawah untuk mengatur kecepatan bola.
Di sini kami terutama menggunakan kontrol Timer, kontrol Panel, kontrol TrackBar, kontrol SpinEdit, kontrol Bentuk, dan kontrol Tombol untuk mencapainya. Fokusnya adalah pada kontrol Timer Delphi. Saat program sedang berjalan, kontrol tidak terlihat dan tidak dapat dimanipulasi secara langsung. Kontrol Timer secara otomatis memicu kejadian OnTimer() secara berkala. Contoh ini menggunakannya untuk memicu peristiwa pergerakan bola.
Ide desain: Masalah utama yang ingin diselesaikan oleh program ini adalah bagaimana mengontrol pergerakan bola serta kecepatan dan ukuran bola selama pergerakan. Gunakan event OnTimer() pada kontrol Timer untuk mengontrol pergerakan bola; gunakan kontrol TrackBar dan kontrol SpinEdit untuk mengatur kecepatan pergerakan bola. Bola dihasilkan oleh kontrol Bentuk.
satu. Konstruksi baru:
(1) Jalankan program Delphi 6.0. Pilih perintah "Baru" di bawah menu "File", pilih opsi Aplikasi dari submenu pop-up, dan jendela Form1 dari proyek baru akan muncul.
(2) Pilih perintah "Simpan Proyek Sebagai" di bawah menu "File" untuk memunculkan kotak dialog Simpan Unit1 Sebagai. Di kotak daftar "Simpan di", pilih nama direktori tempat file jendela ingin disimpan; isi nama file di kotak edit "Nama file", isi "Unit1" di sini, dan klik tombol "Simpan" tombol; untuk menyimpan opsi di atas.
(3) Setelah menjalankan langkah sebelumnya, kotak dialog "Simpan Proyek Sebagai" akan muncul. Di kotak daftar "Simpan di", pilih nama direktori tempat proyek perlu disimpan. Yang terbaik adalah memilih direktori yang sama seperti pada langkah (2); di kotak edit "Nama file", isi nama file untuk menyimpan kode sumber proyek. Isi "Proyek1" di sini dan klik tombol "Simpan" untuk menyimpan opsi di atas.
dua. Beberapa pengaturan parameter:
(1) Aktifkan jendela Unit1, atur properti Caption formulir menjadi "bola bergerak" dan properti Warna menjadi "clMoneyGreen" di panel "Properti".
(2) Pilih opsi Panel pada halaman "Standar", tambahkan kontrol Panel dalam formulir, sesuaikan ukuran dan posisinya yang sesuai, dan atur properti Nama kontrol di panel "Properti" ke "Panel1" dan BevelInner menjadi "bvLowered" ", BevelOuter adalah "blNone", BorderStyle disetel ke "bsSingle", dan properti Warna disetel ke "clSkyBlue".
(3) Pilih opsi Timer pada halaman "Sistem", tambahkan kontrol Timer ke formulir, dan atur properti Interval ke 1 dan properti Nama ke "Timer1" di panel Object Inspector.
(4) Pilih opsi Bentuk pada halaman "Tambahan", tambahkan kontrol Bentuk pada Panel1 di formulir, atur properti Tampilkan Petunjuk menjadi "Benar" dan properti Petunjuk menjadi "Sports Sphere" di panel "Properti". Properti Brush.Color adalah ClLime dan properti Bentuknya diatur ke "slCircle".
(5) Pilih opsi Tombol di halaman "Standar", tambahkan tiga kontrol Tombol ke formulir, dan sesuaikan ukuran dan posisi yang sesuai. Atur properti Caption di panel "Properties" ke "Start", "Stop" dan "Exit".
(6) Pilih opsi TrackBar di halaman Win 32, tambahkan kontrol TrackBar ke formulir, dan sesuaikan ukuran dan posisinya yang sesuai. Atur properti yang sesuai pada panel Properties.
(7) Pilih opsi SpinEdit pada Sampel, tambahkan kontrol SpinEdit ke formulir, dan sesuaikan ukuran dan posisi yang sesuai. Atur properti yang sesuai pada panel Properties.
3. Analisis kode:
(1) Untuk mewujudkan fungsi bola yang bergerak maju mundur, perlu ditetapkan variabel global yaitu bilangan bulat I. Nilai awal I adalah 1. Pada saat I=1, bola bergerak ke kiri, dan ketika mengenai dinding kiri panel, nilai I menjadi 2. Pada saat ini, bola bergerak ke kanan, dan ketika mengenai dinding kanan panel , nilai I menjadi 1 lagi. Dengan cara ini, melalui perubahan nilai I, pergerakan bola maju mundur terwujud. Bagian kode ini ada di acara OnTimer:
procedure TForm1.Timer1Timer(Sender: TObject);beginTimer1.interval:=trackbar1.position; //Atur interval waktu pemicu kontrol Timer jika i=1 maka //Bola bergerak ke kiri mulaijika bentuk1.kiri>0 makamulaibentuk1 .left: =shape1.left-10; //Ubah posisi bola shape1.Width:=(shape1.Width+1)mod 70; //Ubah lebar persegi panjang tempat bola berada shape1.Height:=(shape1.Height+1)mod 70; //Ubah tinggi persegi panjang tempat bola berada endelsei:=2; bola ke ujung kanan;jika i=2 makamulaijika bentuk1.kiri<(panel1.Lebar-bentuk1.Lebar-5) makamulaibentuk1.kiri:=bentuk1.kiri+10; //Ubah posisi bola shape1.Width:=(shape1.Width+1)mod 70;//Ubah lebar persegi panjang tempat bola berada shape1.Height:=(shape1.Height+1)mod 70 ;/ /Ubah tinggi persegi panjang tempat bola beradaendelsei:=1;end;end;
(2) Tombol "Start" dan "Stop" mengontrol apakah bola bergerak. Faktanya, tombol-tombol tersebut mengontrol apakah Timer berfungsi:
procedure TForm1.Button1Click(Sender: TObject);beginTimer1.interval:=trackbar1.position; //Atur interval pemicu dari Timer control Timer1.Enabled:=true; : TObject);beginTimer1.Enabled:=False; //Bola berhenti bergerakend;
(3) Kedua kontrol TrackBar dan SpinEdit mengontrol kecepatan pergerakan bola. Kode terkait adalah sebagai berikut:
procedure TForm1.SpinEdit1Change(Sender: TObject);begintrackbar1.position:=spinEdit1.Value; //Ubah kecepatan gerakan;prosedur TForm1.TrackBar1Change(Sender: TObject);beginspinEdit1.value:=trackbar1.Position; value Beritahu kontrol SpinEdit tentang perubahan;
4. Kode lengkap pinball Delphi adalah sebagai berikut:
unit Unit1;antarmukamenggunakanWindows, Pesan, SysUtils, Kelas, Grafik, Kontrol, Formulir, Dialog,ExtCtrls, ComCtrls, StdCtrls, Spin;typeTForm1 = class(TForm)Panel1: TPanel;Button1: TButton;Button2: TButton;TrackBar1: TTrackBar;Timer1 : TTimer;Bentuk1: TShape;SpinEdit1: TSpinEdit;Button3: TButton;prosedur Timer1Timer(Pengirim: TObject);prosedur Button1Click(Sender: TObject);prosedur Button2Click(Sender: TObject);prosedur SpinEdit1Change(Sender: TObject);prosedur TrackBar1Change(Sender: TObject); prosedur Button3Klik(Pengirim: TObject);private{ Deklarasi pribadi }public{ Deklarasi publik }end;varForm1: TForm1;i:integer;implementation{$R *.DFM}prosedur TForm1.Timer1Timer(Sender: TObject);beginTimer1.interval:=trackbar1.position; //Atur interval waktu pemicu kontrol Timer jika i=1 maka //Bola bergerak ke kiri mulai jika bentuk1.kiri>0 kemudianbeginshape1.left:=shape1.left-10; //Ubah posisi bola shape1.Width:=(shape1.Width+1)mod 70;//Ubah lebar persegi panjang tempat bola berada shape1.Height := (shape1.Height+1)mod 70;//Ubah tinggi persegi panjang tempat bola beradaendelsei:=2; //Bola bergerak ke ujung kanan;jika i=2 makamulai shape1.left<(panel1.Width-shape1.Width-5) kemudian mulaishape1.left:=shape1.left+10; //Ubah posisi bola shape1.Width:=(shape1.Width+1)mod 70; /Ubah lebar persegi panjang tempat bola berada shape1.Height:=(shape1.Height+1)mod 70;//Ubah tinggi persegi panjang tempat bola beradaendelsei:=1;end;end;procedure TForm1.Button1Click(Sender: TObject);beginTimer1.interval:=trackbar1.position; //Atur interval waktu pemicuan Kontrol pengatur waktu Timer1 .Enabled:=true; //Bola mulai bergerakend;prosedur TForm1.Button2Click(Pengirim: TObject);beginTimer1.Enabled:=False; //Bola berhenti bergerakend;prosedur TForm1.SpinEdit1Change(Sender: TObject);begintrackbar1.position:=spinEdit1.Value; //Ubah kecepatan gerakan;prosedur TForm1.TrackBar1Change(Sender : TObject);beginspinEdit1.value:=trackbar1.Position; //Beri tahu kontrol SpinEdit tentang perubahan pada nilai Trackbar;prosedur TForm1.Button3Click(Sender: TObject);beginclose; //Exitend;initializationi:=1;end.