MODUL Tugas bentuk 2 dimensi
MODUL I
MEMBUAT SATU BENTUK PERSEGI INTERAKTIF
DAN ANIMASI MEMBESAR DAN KECIL DENGAN
KENDALI BUTTON
1. Mampu membuat bentuk persegi dengan pixel terhadap sistem koordinat
2. Membuat Animasi Bentuk dengan timer
3. Membuat animasi perubahan bentuk membesar dan mengecil
Tujuan Praktikum : Praktikum unfte Unfte1; fnterr acr usrs Wfndows, Mrssagrs, SysUtefls, Varfantes, Classrs, Graphfcs, Conterols, Forms, Dfalogs, StedCterls, ExteCterls, Buteteons; teypr TForm1 = class(TForm) Tfmrr1: TTfmrr; Buteteon1: TButeteon; Buteteon2: TButeteon; procrdurr Buteteon1Clfck(Srndrr: TObjrcte); procrdurr Buteteon2Clfck(Srndrr: TObjrcte); procrdurr Tfmrr1Tfmrr(Srndrr: TObjrcte); procrdurr FormCrrater(Srndrr: TObjrcte); procrdurr FormMousrDown(Srndrr: TObjrcte; Buteteon: TMousrButeteon; Shf te: TShf teSteater; X, Y: Intergrr); procrdurr FormMousrMovr(Srndrr: TObjrcte; Shf te: TShf teSteater; X, Y: Intergrr); procrdurr FormMousrUp(Srndrr: TObjrcte; Buteteon: TMousrButeteon; Shf te: TShf teSteater; X, Y: Intergrr); prfvater { Prfvater drclaratefons } publfc { Publfc drclaratefons } rnd; var Form1: TForm1; al , { Suduteputear } sf,co, { Sfnus dan Kosfnus } m , { acteor Skala } x0,y0: sfnglr; { Basfs koordfnate absolute } s : fntergrr; { acteor Crrmfnan } dfrFlg : boolran; { flag arah } var x1,y1,x2,y2 :Intergrr; mausTaster :Boolran; fmplrmrnteatefon {$R *.d m} procrdurr dwl (dx1,dy1 : sfnglr); { gambar garfs rrlatef } var x1,y1 : sfnglr; brgfn dx1 := m * dx1; dy1 := m * dy1; x1 := x0 + dx1 * co - s * dy1 * sf; orm1.canvas.Lfnrteo(round(x1),roun d(y1));
End; procrdurr dwp (dx1,dy1:sfnglr); { gambar teftefk rrlatef } var x1,y1 : sfnglr; brgfn dx1 := m * dx1; dy1 := m * dy1; x1 := x0 + dx1 * co - s * dy1 * sf; y1 := y0 - s * dy1 * co - dx1 * sf; orm1.canvas.movrteo(round(x1),rou nd(y1)); End; procrdurr drawHousr; brgfn dwp(6, 0); { Buate prrsrgf } dwl(6, 8); dwl(9, 8); dwl(9, 0); dwl(6, 0); End; procrdurr TForm1.Buteteon1Clfck(Srndrr: TObjrcte); brgfn { zoom oute } m := m + 1;{ fnterraktef -1 } rnd; procrdurr TForm1.Buteteon2Clfck(Srndrr: TObjrcte); brgfn { zoom fn } m := m - 1; { fnterraktef -1 } rnd; procrdurr TForm1.Tfmrr1Tfmrr(Srndrr: TObjrcte); brgfn orm1.rr rrsh; I dfrFlg Thrn al := al + Pf / 10 { putearan srarah jarum jam } Elsr al := al - Pf / 10; { putearan mrlawan jarum jam } sf := Sfn(al ); co := Cos(al ); drawHousr; rnd; procrdurr TForm1.FormCrrater(Srndrr: TObjrcte); brgfn y0 := clfrnteHrfghte / 2; al := 0; s := 1; m := 20; canvas.brush.steylr:= bsclrar; brgfn mausTaster := Falsr; Canvas.Prn.Modr := pmNoteXor; Canvas.Prn.Steylr := psdash; rnd; rnd; procrdurr TForm1.FormMousrDown(Srndrr: TObjrcte; Buteteon: TMousrButeteon; Shf te: TShf teSteater; X, Y: Intergrr); var x1,y1,x2,y2 :Intergrr; mausTaster :Boolran; brgfn Canvas.Brush.Steylr:=bsClrar; x1 := x; y1 := y; x2 := x; y2 := y; Canvas.Rrcteanglr (x1, y1,x2, y2); mausTaster := Trur rnd; procrdurr TForm1.FormMousrMovr(Srndrr: TObjrcte; Shf te: TShf teSteater; X, Y: Intergrr); brgfn f note mausTaster tehrn rxfte; Canvas.Rrcteanglr (x1, y1,x2, y2); x2 := x; y2 := y; Canvas.Rrcteanglr (x1, y1,x2, y2) rnd; procrdurr TForm1.FormMousrUp(Srndrr: TObjrcte; Buteteon: TMousrButeteon; Shf te: TShf teSteater; X, Y: Intergrr); brgfn mausTaster := Falsr; rnd; rnd.
Tugas Laporan Praktikum 1. Rubah bentuk persegi panjang tsb ke bentuk bujur sangkar.
2. Rubah bentuk persegi panjang tsb ke bentuk segi tiga sama kaki
MODUL II
MEMBUAT DUA BENTUK PERSEGI INTERAKTIF
DAN ANIMASI MEMBESAR DAN KECIL SECARA
BERSAMAAN DENGAN KENDALI BUTTON
Tujuan Praktikum :
1. Mampu membuat dua bentuk persegi dengan pixel terhadap sistem koordinat
2. Membuat Animasi dua Bentuk secara bersamaan dengan satu timer
3. Membuat animasi 2 objek perubahan bentuk membesar dan mengecil bersamaan
Praktikum
Program sama dengan modul I, Perbedaan nya di prosedur drawHouse sbb: procedure drawHouse; begin dwp(6, 0); { Buat persegi panjang} dwl(6, 8); dwl(9, 8); dwl(9, 0); dwl(6, 0); dwp(0, 10); { Dengan posisi persegi panjang } dwl(10, 10); dwl(10, 0); dwl(0, 0); dwl(0, 10); { di dalam bujur sangkar } End;
1. Program di atas merupakan program persegi panjang di dalam bujur sangkar dengan letak merapat ke sisi. Rubah program tersebut dengan tidak merapat, dengan posisi persegi panjang yg didalamnya di tengah
2. Rubah program tsb ke bentuk segi tiga di dalam segi tiga
MODUL III
MEMBUAT TIGA BENTUK PERSEGI INTERAKTIF
DAN ANIMASI MEMBESAR DAN KECIL SECARA
BERSAMAAN DENGAN KENDALI BUTTON
Tujuan Praktikum :
1. Mampu membuat tiga bentuk persegi dengan pixel terhadap sistem koordinat
2. Membuat Animasi tiga Bentuk secara bersamaan dengan satu timer
3. Membuat animasi 3 objek perubahan bentuk membesar dan mengecil bersamaan
Praktikum
Program sama dengan modul I, Perbedaan nya di prosedur drawHouse sbb: procedure drawHouse; begin dwp(6, 0); { Buat persegi panjang, pintu } dwl(6, 8); dwl(9, 8); dwl(9, 0); dwl(6, 0); dwp(0, 10); { Bujur sangkar, sisi rumah } dwl(10, 10); dwl(10, 0); dwl(0, 0); dwl(0, 10); dwp(1, 8); { Persegi panjang, jendela } dwl(4, 8); dwl(4, 4); dwl(1, 4); dwl(1, 8); End;
Tugas Laporan Praktikum
1. Program di atas merupakan program persegi panjang jendela di dalam bujur sangkar dengan letak tdk merapat. Rubah program tersebut dengan merapat
MODUL IV
MEMBUAT SATU OBJEK DILUAR BENTUK YANG
SUDAH ADA INTERAKTIF DAN ANIMASI
MEMBESAR DAN KECIL SECARA BERSAMAAN
DENGAN KENDALI BUTTON
Tujuan Praktikum :
Mampu membuat tambahan satu objek dengan posisi diluar bentuk yang sudah ada
Praktikum
Program sama dengan modul I, Perbedaan nya di prosedur drawHouse sbb: procedure drawHouse; begin dwp(6, 0); { Buat persegi panjang, pintu } dwl(6, 8); dwl(9, 8); dwl(9, 0); dwl(6, 0); dwp(0, 10); { Bujur sangkar, sisi rumah } dwl(10, 10); dwl(10, 0); dwl(0, 0); dwl(0, 10); dwp(1, 8); { Persegi panjang, jendela } dwl(4, 8); dwl(4, 4); dwl(1, 4); dwl(1, 8); dwp(-1, 9); { Atap } dwl(5, 15); dwl(11, 9); End;
Tugas Laporan Praktikum Rubah atap segitiga simetris tsb menjadi tidak simetris.
MODUL V
MEMBUAT LINGKARAN DIDALAM OBJEK DILUAR
BENTUK YANG SUDAH ADA INTERAKTIF DAN
ANIMASI MEMBESAR & KECIL SECARA BERSAMAAN
DENGAN KENDALI BUTTON
Tujuan Praktikum :
Membuat lingkaran didalam objek tambahan pd bentuk yang sudah ada
Praktikum
Program sama dengan modul I, Perbedaan nya ada tambahan di prosedur dwc dan drawHouse sbb: procedure dwc (dx1,dy1,R : single); { gambar lingkaran } var x1,y1 : single; begin dx1 := mf * dx1; dy1 := mf * dy1; R := mf * R; x1 := x0 + dx1 * co - sf * dy1 * si; y1 := y0 - sf * dy1 * co - dx1 * si; form1.canvas.ellipse(round(x1-r),round(y1-r),round(x1+r),round(y1+r)); End; procedure drawHouse; begin dwp(6, 0); { Buat persegi panjang, pintu } dwl(6, 8); dwl(9, 8); dwl(9, 0); dwl(6, 0); dwp(0, 10); { Bujur sangkar, sisi rumah } dwp(1, 8); { Persegi panjang, jendela } dwl(4, 8); dwl(4, 4); dwl(1, 4); dwl(1, 8); dwp(-1, 9); { Atap } dwl(5, 15); dwl(11, 9); dwc(5, 12, 1); { fentilasi } End;
Tugas Laporan Praktikum
Rubah lingkaran tsb ke bentuk gabungan elipps vertikal dan horisontal
MODUL VI
MEMBUAT OBJEK LAIN DILUAR BENTUK YANG SUDAH
ADA INTERAKTIF DAN ANIMASI
Tujuan Praktikum :
Membuat tambahan pd bentuk yang sudah ada
Praktikum
Program sama dengan modul V, Perbedaannya ada tambahan drawHouse sbb: dwp(7, 13); { pondasi Antena } dwl(7, 16); dwl(9, 16); dwl(9, 11); End;
Tugas Laporan Praktikum
Rubah pondasi antena ke bentuk bujur sangkar dan segi tiga
MODUL VII
MEMBUAT ANIMASI INTERAKTIF BERBALIK ARAH
oTujuan Praktikum :
o
Membuat animasi interaktifberbalik arah dan rotasi 180
Praktikum
Program sama dengan modul VI, Perbedaannya ada tambahan 2 prosedur sbb: procedure TForm1.Button3Click(Sender: TObject); { Berbalik arah } begin dirFlg := Not dirFlg; end;
o
procedure TForm1.Button4Click(Sender: TObject); { Rotasi 180 } begin sf := -sf; end;
Tugas Laporan Praktikum
1. Modifikasi gambar, Lakukan tambahan objek lain pada rumah tsb
2. Buat animasi dgn timer berbeda pada gambar jendela rumah
MODUL VIII
MENGGERAKAN OBJEK ANIMASI
Tujuan Praktikum :
Memindahkan posisi pada objek animasi aktif
Praktikum Program Utama
program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.
Unit Program
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, type TForm1 = class(TForm) Timer1: TTimer; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Panel1: TPanel; BitBtn2: TBitBtn; BitBtn3: TBitBtn; BitBtn4: TBitBtn; BitBtn5: TBitBtn; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; alf, { Sudutputar } si,co, { Sinus dan Kosinus } mf, { factor Skala } x0,y0: single; { Basis koordinat absolut } sf : integer;{ factor Cerminan } dirFlg : boolean; { flag arah } var x1,y1,x2,y2 :Integer; mausTaste :Boolean; implementation {$R *.dfm} procedure dwc (dx1,dy1,R : single); { gambar lingkaran relatif } var x1,y1 : single; begin dx1 := mf * dx1; dy1 := mf * dy1; R := mf * R; x1 := x0 + dx1 * co - sf * dy1 * si; y1 := y0 - sf * dy1 * co - dx1 * si; form1.canvas.ellipse(round(x1-r),round(y1-r),round(x1+r),round(y1+r)); End; procedure dwl (dx1,dy1 : single); { gambar garis relatif } var x1,y1 : single; begin
dx1 := mf * dx1; dy1 := mf * dy1; x1 := x0 + dx1 * co - sf * dy1 * si; y1 := y0 - sf * dy1 * co - dx1 * si; form1.canvas.Lineto(round(x1),round(y1)); End; procedure dwp (dx1,dy1:single); { gambar titik relatif } var x1,y1 : single; begin dx1 := mf * dx1; dy1 := mf * dy1; x1 := x0 + dx1 * co - sf * dy1 * si; y1 := y0 - sf * dy1 * co - dx1 * si; form1.canvas.moveto(round(x1),round(y1)); End; procedure drawHouse; { gambar rumah } begin dwp(0, 10); { sisi depan } dwl(10, 10); dwl(10, 0); dwl(0, 0); dwl(0, 10); dwp(1, 8); { jendela } dwl(4, 8); dwl(4, 4); dwl(1, 4); dwl(1, 8); dwp(6, 0); { Pintu } dwl(6, 8); dwl(9, 8); dwl(9, 0); dwl(6, 0); dwp(-1, 9); { Atap } dwl(5, 15); dwl(11, 9); dwc(5, 12, 1); { fentilasi } dwp(7, 13); { pondasi Antena } dwl(7, 16); dwl(9, 16); dwl(9, 11); End; procedure TForm1.Button1Click(Sender: TObject); begin mf := mf + 1; end; procedure TForm1.Button2Click(Sender: TObject); begin mf := mf - 1; end; procedure TForm1.Button3Click(Sender: TObject); begin dirFlg := Not dirFlg; end; procedure TForm1.Button4Click(Sender: TObject); begin sf := -sf; end; procedure TForm1.Timer1Timer(Sender: TObject); begin form1.refresh; If dirFlg Then alf := alf + Pi / 10 { putaran sesuai dengan arah jarum jam } Else alf := alf - Pi / 10; { putaran melawan arah jarum jam } si := Sin(alf); co := Cos(alf); drawHouse; end; procedure TForm1.FormCreate(Sender: TObject); begin x0 := clientWidth / 2; y0 := clientHeight / 2; alf := 0; sf := 1; mf := 20; canvas.brush.style:= bsclear; begin mausTaste := False; Canvas.Pen.Mode := pmNotXor; Canvas.Pen.Style := psdash; end; end; procedure TForm1.Button9Click(Sender: TObject); begin close; end; procedure TForm1.Button5Click(Sender: TObject); begin y0:=y0-5; end; procedure TForm1.Button6Click(Sender: TObject); begin x0:=x0-5; end; procedure TForm1.Button7Click(Sender: TObject); begin x0:=x0+5; end; procedure TForm1.Button8Click(Sender: TObject); begin y0:=y0+5; end; procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var x1,y1,x2,y2 :Integer; mausTaste :Boolean; begin Canvas.Brush.Style:=bsClear; x1 := x; y1 := y; x2 := x; y2 := y; Canvas.Rectangle (x1, y1,x2, y2); mausTaste := True end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Panel1.Caption := IntToStr(x)+ ':' + IntToStr(y); if not mausTaste then exit; Canvas.Rectangle (x1, y1,x2, y2); x2 := x; y2 := y; Canvas.Rectangle (x1, y1,x2, y2) end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin mausTaste := False; end; procedure TForm1.BitBtn1Click(Sender: TObject); begin x0:=x0+5; end; procedure TForm1.BitBtn2Click(Sender: TObject); begin close; end; end.Tugas Laporan Praktikum
Rubah rumah tsb dari bentuk 2 dimensi menjadi 3 dimensi