Selasa, 03 Mei 2016

Animasi pada Delphi



LAPORAN AKHIR PRAKTIKUM




Mata Praktikum

: Algoritma dan Pemograman 2A
Kelas                   

: 1IA12
Praktikum ke- 

: 4
Tanggal              

: 04 April 2016
Materi                  

: Animasi Pada Delphi
NPM                    

: 52415535
Nama                  

: Farrasta Khoirunnas Saum
Ketua Asisten 

: 
Paraf Asisten 

: 
Nama Asisten 

: 
Jumlah Lembar 
:  13 Lembar














LISTING PROGRAM

Form 1
var
  Form1: TForm1;
  nyawa,skor : integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
nyawa := 3;
bintang.Top := 0;
bintang.Left := random(280);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
bintang.Top := bintang.Top + 5;
if bintang.top >= 500 then
begin
bintang.Top := 0;
nyawa := nyawa - 1;
if nyawa = 2 then nyawa3.Visible := false
else if nyawa = 1 then nyawa2.Visible := false
else if nyawa = 0 then nyawa1.Visible := false

else
begin
timer1.Interval := 0;
showmessage ('Game Over' + chr(13) + 'Skor Anda : ' + inttostr(skor));
end
end
end;

procedure TForm1.bintangClick(Sender: TObject);
begin
skor := strtoint(label1.Caption) + 1;
label1.Caption := inttostr(skor);
bintang.Top := 0;
bintang.Left := random(280);
timer1.Interval := timer1.Interval - 10;
if timer1.Interval <= 10 then timer1.Interval := 10;
end;

end.







LOGIKA PROGRAM
            Pada pertemuan keempat saya mempelajari animasi pada delphi. Disini saya belajar membuat permainan sederhana. Permainan tersebut yaitu bernama menembak bintang yang membutuhkan 1 label , 1 timer , 1 shape , dan 4 image yang disusun di form 1. Sebelum menyusun , atur terlebih dahulu Tinggi dan lebar form 1 dengan Height = 500 dan Width = 350. Lalu ubah borderstyle menjadi bssingle agar form 1 tidak dapat berubah tinggi dan lebarnya.
   
   










Setelah selesai mengatur Tinggi dan Lebar form1 , maka masukkan komponenya.
 
Setelah selesai menempatkan semua elemen , maka langkah selanjutnya yaitu mengisi 3 image yang berada pada shape dengan mengisi gambar hati sebagai nyawa dan 1 image pada form1 sebagai bintang atau objek yang akan ditembak. Dan tak lupa mengganti caption label1 menjadi 0 sebagai perhitungan skor pada game. Tampilan sebagai berikut :
 
Untuk memperindah tampilan , saya akan mengganti warna shape menjadi warna biru dengan cara :
·        Klik pada sahpe
·        Lihat pada object inspector , pilih “Brush” dan klik pada tanda “+”
·        Ubah warna “clwhite” menjadi “clblue”

Selanjutnya saya mengubah label1 dengan memperbesar ukuran font dan mengganti warna background pada label 1 , dengan cara :
·        Klik pada label 1 dan lihat pada object inspector
·        Pilih color , setelah itu ganti warna clwhite menjadi clblue
·        Selanjutnya pilih font , dan lihat pada font proprties
·        Ubah size font menjadi 30 dan warna menjadi white

Maka tampilan akan menjadi seperti yang dibawah ini :
 


Setelah mengubah tampilan , lalu kita masukkan kodingan pada Form1. Klik 2x pada tampilan Form1 , lalu masukkan kodingan seperti berikut :

var
  Form1: TForm1;
  nyawa,skor : integer;
implementation
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
nyawa := 3;
bintang.Top := 0;
bintang.Left := random(280);
end;
·        nyawa,skor : integer;// mendeklarasikan nyawa dan skor dalam tipe integer atau bilangan bulat
·        nyawa := 3;//yaitu nyawa dari permainan tersebut berjumlah 3 nyawa
·        bintang.Top := 0;//Munculnya bintang saat mulainya permainan pada posisi 0 atau dimulai dari atas
·        bintang.Left := random(280);//pergerakan bintang memlikibatas hanya 280 atau selebar form 1


Selanjutnya klik 2x pada Timer , dan masukkan kodingan seperti dibawah ini :
procedure TForm1.Timer1Timer(Sender: TObject);
begin
bintang.Top := bintang.Top + 5;
if bintang.top >= 500 then
begin

bintang.Top := 0;
nyawa := nyawa - 1;
if nyawa = 2 then nyawa3.Visible := false
else if nyawa = 1 then nyawa2.Visible := false
else if nyawa = 0 then nyawa1.Visible := false
else
begin
timer1.Interval := 0;
showmessage ('Game Over' + chr(13) + 'Skor Anda : ' + inttostr(skor));
end
end
end;

bintang.Top := bintang.Top + 5;// Kodingan ini berfungsi untuk mengatur kecepatan pada bintang. Semakin besar angka maka semakin cepat pergerakan bintang. Jika pergerakan bintang melebihi panjang form1 yang sepanjang 500 (if bintang.top >= 500) maka posisi bintang akan kembali ke posisi 0/atas (bintang.Top := 0;) lalu nyawa dari permainan tersebut berkurang 1 (nyawa := nyawa - 1;). Dilanjutkan :
·        if nyawa = 2 then nyawa3.Visible := false//jika bintang melebihi batas pertama kali , maka nyawa ketiga akan hilang.
·        if nyawa = 1 then nyawa2.Visible := false//lalu jika bintang melebihi batas kedua kalinya maka nyawa kedua akan hilang.
·        if nyawa = 0 then nyawa1.Visible := false//selanjutnya jika bintang melebihi batas ketiga kalinya maka nyawa pertama akan hilang.
·        timer1.Interval := 0;//setelah bintang melewati batas untuk keempat kalinya , maka timer akan dimulai kembali dari 0 , atau permainan kembali dari awal.
·        showmessage ('Game Over' + chr(13) + 'Skor Anda : ' + inttostr(skor));// Kodingan tersebut berfungsi untuk menampilkan messagebox bahwa permainan telah selesai atau gameover dan menampilkan skor permainan. Adapaun (chr(13)) merupakan kode ASCII(American Standard Code for Information Interchange) untuk memberikan spasi antar kalimat.


Setelah itu klik 2x pada objeck bintang , masukkan kodingan yang dibawah ini :
procedure TForm1.bintangClick(Sender: TObject);
begin
skor := strtoint(label1.Caption) + 1;
label1.Caption := inttostr(skor);
bintang.Top := 0;
bintang.Left := random(280);
timer1.Interval := timer1.Interval - 10;
if timer1.Interval <= 10 then timer1.Interval := 10;
end;

skor := strtoint(label1.Caption) + 1;//kodingan tersebut berfungsi untuk menambah skor yang ada pada label 1. Skor akan bertambah 1 setiap kita klik bintang. Adapun strtoint yaitu mendeklarasikan dari string atau kata ke dalam integer atau bilangan bulat.
label1.Caption := inttostr(skor);//kodingan tersebut mendeklarasikan label1 ke bentuk bilangan bulat atau integer menjadi huruf atau string.
timer1.Interval := timer1.Interval - 10;//waktu interval berkurang 10.
if timer1.Interval <= 10 then timer1.Interval := 10//jika waktu interval kurang dari 10 maka waktu interval sama dengan 10.





OUTPUT PROGRAM
1.     Program ketika pertama kali dijalankan :

2.     Program ketika objeck bintang di klik , maka skor pada label 1 bertambah 1

3.     Program ketika objek bintang melewati batas panjang form 1 , maka nyawa akan berkurang 1 :
 
4.     Program ketika objek bintang ketika melewati batas untuk kedua kalinya , maka nyawa akan berkurang 1 lagi :

5.      Program ketika objek bintang ketika melewati batas untuk ketiga kalinya , maka nyawa akan berkurang 1 lagi :
 
6.     Output program ketika Game sudah selesai :


 
7.     Output program ketika kita menyelesaikan permainan sampai game over :