Cara Membuat Bola Pantul Di Delphi Lengkap Dengan Programnya
"Silahkan kunjungi postingan Cara Membuat Bola Pantul Di Delphi Lengkap Dengan Programnya untuk membaca artikel selengkapnya dengan klik link di atas."
6 min read
Cara Membuat Bola Pantul Di Delphi Lengkap Dengan Programnya - Salah satu game menarik yang dulu populer dimainkan di hp Nokia Kamera, kalau gak salah, nama gamenya "Pou", mirip dengan game Bounce. BTW tentang Bounce, apakah kamu pernah tertarik membuat program sederhana bola pantul?Jika tertarik, hari ini kamu pasti bisa membuat program bola pantul sederhana dengan mengitui tutorial di blog Simentik ini. Jadi program hari ini masih bukan bentuk game tapi lebih ke program sederhana berupa animasi bola pantul di Delphi.
Nah, membuat animasi bola pantul di Delphi sama saja dengan membuat bola pantul di C++, Java, atau bahasa pemrograman lainnya. Bedanya hanya pada bahasa coding sementara struktur dan logika sama saja.
Cara Membuat Bola Pantul Di Delphi Lengkap Dengan Programnya
Untuk lebih jelasnya, berikut ini tutorial membuat bola pantul di Delphi lengkap dengan kode programnya.
1. Desain form seperti tampilan berikut ini.
Cara Membuat Bola Pantul Di Delphi Lengkap Dengan Programnya |
Rincian komponen yang digunakan adalah sebagai berikut.
- Timer1
- Shape1
- Shape2
- Shape3
- Shape4
- ComboBox1
2. Tambahkan 4 TShape untuk bola
Palette > Additional > TShape
Karena kita ingin menggunakan bola pantul, maka gunakan TShape sebagai obyek untuk membuat bentuk bola. Kamu juga bisa menggunakan gambar bola JPG, tapi pilih TImage. Tapi dalam tutorial ini, pakai TShape aja dulu.
Atur Properties Shape > dari stSquare (persegi) menjadi stCircle (lingkaran).
Karena saya ingin ada 4 bola yang pantul memantul ketika mencapai dinding, maka saya menggunakan 4 TShape.
- Shape1 = Warna hijau
- Shape2 = Warna hitam
- Shape3 = Warna merah
- Shape4 = Warna putih
3. Tambahkan TTimer untuk mengatur pantulan bola
Palette > System > TTimer
Klik 2 kali pada Timer1 > Copy dan paste script berikut.
shape2.Left:=shape2.Left+x1;
shape2.Top:=shape2.Top+y1;
shape3.Left:=shape3.Left+x2;
shape3.Top:=shape3.Top+y2;
shape4.Left:=shape4.Left+x3;
shape4.Top:=shape4.Top+y3;
shape1.Left:=shape1.Left+x;
shape1.Top:=shape1.Top+y;
// bola pantul atas bawah
if((shape1.left<=0) or (shape1.left>=0)) then
begin
x:= -x;
end;
if ((shape1.top<=0) or (shape1.top>=217)) then
begin
y:= -y;
end;
// bola pantul sembarangan
if((shape2.left<=0) or (shape2.left>=376)) then
begin
x1:= -x1;
end;
if ((shape2.top<=0) or (shape2.top>=217)) then
begin
y1:= -y1;
end;
// bola pantul kanan kiri
if((shape3.left<=0) or (shape3.left>=376)) then
begin
x2:= -x2;
end;
if ((shape3.top<=0) or (shape3.top>=0)) then
begin
y2:= -y2;
end;
if((shape4.left<=0) or (shape4.left>=376)) then
begin
x3:= -x3;
end;
if ((shape4.top<=0) or (shape4.top>=0)) then
begin
y3:= -y3;
end;
end;
shape2.Top:=shape2.Top+y1;
shape3.Left:=shape3.Left+x2;
shape3.Top:=shape3.Top+y2;
shape4.Left:=shape4.Left+x3;
shape4.Top:=shape4.Top+y3;
shape1.Left:=shape1.Left+x;
shape1.Top:=shape1.Top+y;
// bola pantul atas bawah
if((shape1.left<=0) or (shape1.left>=0)) then
begin
x:= -x;
end;
if ((shape1.top<=0) or (shape1.top>=217)) then
begin
y:= -y;
end;
// bola pantul sembarangan
if((shape2.left<=0) or (shape2.left>=376)) then
begin
x1:= -x1;
end;
if ((shape2.top<=0) or (shape2.top>=217)) then
begin
y1:= -y1;
end;
// bola pantul kanan kiri
if((shape3.left<=0) or (shape3.left>=376)) then
begin
x2:= -x2;
end;
if ((shape3.top<=0) or (shape3.top>=0)) then
begin
y2:= -y2;
end;
if((shape4.left<=0) or (shape4.left>=376)) then
begin
x3:= -x3;
end;
if ((shape4.top<=0) or (shape4.top>=0)) then
begin
y3:= -y3;
end;
end;
Penjelasan kode di atas adalah sebagai berikut.
Pada intinya, yang diperhatikan dalam membuat program bola pantul adalah lebar dan tinggi Form jika kita meletakkan bola di Form. Jika kita meletakkan bola di TPanel, maka yang diperhatikan juga adalah lebar dan tinggi TPanel.
Jadi, dalam tutorial ini, yang kita perhatikan adalah lebar dan tinggi Form. Untuk itu, ambil salah satu Shape dan letakkan tepat di pojok kanan bawah untuk mengukur top dan left Form.
Untuk mengatur kecepatan bola, kamu bisa atur interval timer. Klik Timer > Interval > Dari 1000 ubah jadi 5. Semakin kecil interval bola semakin cepat bola bergerak.
Cara Membuat Bola Pantul Di Delphi |
Jadi, yang kita dapatkan Left 376 dan Top 217. Itulah yang kita masukkan dalam coding di atas agar bola dapat memantul ketika mencapai dinding dan tidak menembus dinding.
Bagaimana jika kita ingin membuat bola pantul ketika tabrakan dengan bola lainnya? Tunggu tutorial berikutnya, tapi kurang lebih juga sama seperti ini.
4. Tambahkan TComboBox untuk play dan pause bola
Palette > Standard > TComboBox
Klik 2 kali pada ComboBox > copy dan paste script berikut ini.
if ComboBox1.Text='PLAY' then
begin
Timer1.Enabled := true
end
else if ComboBox1.Text='PAUSE' then
begin
Timer1.Enabled := false
end
begin
Timer1.Enabled := true
end
else if ComboBox1.Text='PAUSE' then
begin
Timer1.Enabled := false
end
Sebelumnya, jika kamu belum tahu cara mengisi item di ComboBox, lihat tutorial sebelumnya tentang cara membuat ComboBox Delphi.
Jadi, kode di atas adalah untuk membuat play dan pause bola. Sebenarnya yang dipause adalah Timer1 yang menjadi promotor bergeraknya bola.
Kamu juga bisa menggunakan tombol (Button), tapi berhubung saya belum punya waktu untuk cari codingnya seperti apa (baca belum tahu hha.. hha...), saya gunakan ComboBox aja.
5. Deklarasikan variabel integer yang kita butuhkan. Cari kode berikut ini di listing:
var
Form2: TForm2;
Form2: TForm2;
Kemudian paste code berikut ini tepat di atas kode tersebut.
x, x1, x2, x3: integer;
y, y1, y2, y3: integer;
y, y1, y2, y3: integer;
6. Tambahkan FormCreate
Cara membuat FormCreate di Delphi adalah sebagai berikut.
- Cari kode berikut ini di listing:
type
TForm2 = class(TForm)
Timer1: TTimer;
Shape1: TShape;
Shape2: TShape;
...
TForm2 = class(TForm)
Timer1: TTimer;
Shape1: TShape;
Shape2: TShape;
...
Kemudian paste code berikut ini sebelum script private:
procedure FormCreate(Sender: TObject);
- Cari kode berikut ini di listing:
implementation
{$R *.dfm}
Copy dan paste script berikut ini tepat di bawah script di atas.
procedure TForm2.FormCreate(Sender: TObject);
begin
x:=1;
y:=1;
x1:=1;
y1:=1;
x2:=1;
y2:=1;
x3:=1;
y3:=1;
end;
begin
x:=1;
y:=1;
x1:=1;
y1:=1;
x2:=1;
y2:=1;
x3:=1;
y3:=1;
end;
Coding di atas adalah untuk mengatur kecepatan bola. Kode ini bisa digunakan untuk membedakan kecepatan gerak bola.
7. Secara keseluruhan, source code bola pantul di Delphi di atas adalah sebagai berikut.
unit DelphiBounceGame;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls;
type
TForm2 = class(TForm)
Timer1: TTimer;
Shape1: TShape;
Shape2: TShape;
Shape3: TShape;
Shape4: TShape;
ComboBox1: TComboBox;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
x, x1, x2, x3: integer;
y, y1, y2, y3: integer;
implementation
{$R *.dfm}
procedure TForm2.ComboBox1Change(Sender: TObject);
begin
if ComboBox1.Text='PLAY' then
begin
Timer1.Enabled := true
end
else if ComboBox1.Text='PAUSE' then
begin
Timer1.Enabled := false
end
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
x:=1;
y:=1;
x1:=1;
y1:=1;
x2:=1;
y2:=1;
x3:=1;
y3:=1;
end;
procedure TForm2.Timer1Timer(Sender: TObject);
begin
shape2.Left:=shape2.Left+x1;
shape2.Top:=shape2.Top+y1;
shape3.Left:=shape3.Left+x2;
shape3.Top:=shape3.Top+y2;
shape4.Left:=shape4.Left+x3;
shape4.Top:=shape4.Top+y3;
shape1.Left:=shape1.Left+x;
shape1.Top:=shape1.Top+y;
// bola pantul atas bawah
if((shape1.left<=0) or (shape1.left>=0)) then
begin
x:= -x;
end;
if ((shape1.top<=0) or (shape1.top>=217)) then
begin
y:= -y;
end;
// bola pantul sembarangan
if((shape2.left<=0) or (shape2.left>=376)) then
begin
x1:= -x1;
end;
if ((shape2.top<=0) or (shape2.top>=217)) then
begin
y1:= -y1;
end;
// bola pantul kanan kiri
if((shape3.left<=0) or (shape3.left>=376)) then
begin
x2:= -x2;
end;
if ((shape3.top<=0) or (shape3.top>=0)) then
begin
y2:= -y2;
end;
if((shape4.left<=0) or (shape4.left>=376)) then
begin
x3:= -x3;
end;
if ((shape4.top<=0) or (shape4.top>=0)) then
begin
y3:= -y3;
end;
end;
end.
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls;
type
TForm2 = class(TForm)
Timer1: TTimer;
Shape1: TShape;
Shape2: TShape;
Shape3: TShape;
Shape4: TShape;
ComboBox1: TComboBox;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
x, x1, x2, x3: integer;
y, y1, y2, y3: integer;
implementation
{$R *.dfm}
procedure TForm2.ComboBox1Change(Sender: TObject);
begin
if ComboBox1.Text='PLAY' then
begin
Timer1.Enabled := true
end
else if ComboBox1.Text='PAUSE' then
begin
Timer1.Enabled := false
end
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
x:=1;
y:=1;
x1:=1;
y1:=1;
x2:=1;
y2:=1;
x3:=1;
y3:=1;
end;
procedure TForm2.Timer1Timer(Sender: TObject);
begin
shape2.Left:=shape2.Left+x1;
shape2.Top:=shape2.Top+y1;
shape3.Left:=shape3.Left+x2;
shape3.Top:=shape3.Top+y2;
shape4.Left:=shape4.Left+x3;
shape4.Top:=shape4.Top+y3;
shape1.Left:=shape1.Left+x;
shape1.Top:=shape1.Top+y;
// bola pantul atas bawah
if((shape1.left<=0) or (shape1.left>=0)) then
begin
x:= -x;
end;
if ((shape1.top<=0) or (shape1.top>=217)) then
begin
y:= -y;
end;
// bola pantul sembarangan
if((shape2.left<=0) or (shape2.left>=376)) then
begin
x1:= -x1;
end;
if ((shape2.top<=0) or (shape2.top>=217)) then
begin
y1:= -y1;
end;
// bola pantul kanan kiri
if((shape3.left<=0) or (shape3.left>=376)) then
begin
x2:= -x2;
end;
if ((shape3.top<=0) or (shape3.top>=0)) then
begin
y2:= -y2;
end;
if((shape4.left<=0) or (shape4.left>=376)) then
begin
x3:= -x3;
end;
if ((shape4.top<=0) or (shape4.top>=0)) then
begin
y3:= -y3;
end;
end;
end.
Catatan:
Saya menggunakan TForm2 dalam listing karena Form2 yang saya gunakan.
Berikut ini tampilan program bola pantul ketika dirunning.
Cara Membuat Bola Pantul Delphi |
Untuk play dan pause, gunakan ComboBox.
Itulah sedikit cara membuat animasi bola pantul di Delphi. Pantulan bola akan bergerak ke segala arah. Jika dilihat lebih dalam, permainan bola pantul ini konsepnya bisa untuk game menangkap obyek yang jatuh.
Untuk membuat bola pantul ketika bola tabrakan, tunggu tutorial berikutnya.
Lihat juga Contoh Program Penjualan Barang Delphi
Demikianlah tutorial cara membuat bola pantul Delphi lengkap dengan source code programnya. Semoga bermanfaat!