Turbo pascal 7.1 merupakan bahasa program untuk pembuatan visual yang mana dengan memanfaatkan komponen graphics yang telah disediakan sebagai file penyerta dalam memunculkan fungsi graphic ke monitor. Lebih jelas contoh membuat gambar kotak
program kotak;
uses
graph, crt;
var
gd, gm: integer;
begin
gd:=cga;
gm:=cgahi;
initgraph(gd,gm,'');
rectangle(10,10,100,40);
repeat until KeyPressed;
closeGraph;
end.
Hasilnya
Contoh diatas merupakan pembuatan program gambar kotak. Dalam penulisan program menggunakan
rectangle(10,10,100,40); rumus dari program kotak adalah rectangle(x,y,x1,y1)
x dan y merupakan koordinat awal sedangkan x1 dan y1 merupakan koordinat titik besar kotak.
Untuk lebar monitor LCD berbeda-beda seperti yang digunakan maksimum x=635 dan y=195
Dalam penulisan program yang merupakan program tetap, artian merupakan program yang tidak banyak perubahan
Program gambar; {merupakan program yang tidak banyak berubah}
uses {Mengambil fungsi dalam doc pascal, ini program tetap}
graph, crt; {program yang diambil}
var { variabel, merupakan program tetap}
gd, gm: integer; {variabel yang diperlukan}
begin
gd:=cga; {variabel grafik 'cga' dibulatkan, merupakan program tetap}
gm:=cgahi; {variabel warna 'cgahi' dibulatkan, merupakan program tetap}
initgraph(gd,gm,''); {merupakan varibel, program tetap tidak berubah}
rectangle(x,y,x1,y1); {Dapat ditambah yang lain, misal membuat lingkaran}
repeat until keypressed {mencegah pengetikan keyboard, merupakan program tetap}
closegraph; {merupakan program tetap}
end. {tetap}
---------------------------------------------------------------------------------------------------------------
macam-macam potongan program:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
KOTAK
rectangle(x,y,x1,y1); kotak tanpa warna dalam
bar(x,y,x1,y1); kotak dengan warna dalam
Bar3D{x,y,x1,y1, x2, Topon); kotak dengan bentuk 3 dimensi, x2 lebar kotak arah posisi 3 dimensi
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LINGKARAN
cricle(x,y,x1);
ellips(x,y,0,360, x1, y1);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MEMASUKKAN TULISAN
OutTextXY(x,y,'ketik huruf');
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PENULISAN TULISAN
Readln();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Pembuatan bentuk Gelombang
For x := 0 to GetMaxX do
Begin
Y1 := round(10*cos(x*pi/180));
Y := GetMaxY div 2-y1;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
GARIS
line(x,y,x1,y1);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CONTOH
--------------------------------------------------------------------------------------------------------------
Program memasukkan tulisan;
program gambar;
uses
graph, crt;
var
a, gd, gm: integer;
b:char;
begin
gd:=cga;
gm:=cgahi;
initgraph(gd,gm,'');
readln(a); {ketik angka}
readln(b); {ketik tulisan}
repeat until keypressed;
closegraph;
end.
-----------------------------------------------------------------------------------------------------
program gambar;
uses
graph, crt;
var
gd, gm: integer;
begin
gd:=cga;
gm:=cgahi;
initgraph(gd,gm,'');
rectangle(0,0,300,80);
bar(10,10,400,100);
OuttextXY(420,90, 'hasil yang diketik');
repeat until keypressed;
closegraph;
end.
----------------------------------------------------
----------------------------------------------------
CONTOH
Gambar dengan lingkaran banyak
----------------------------------------------------
program banyaklingkaran;
uses
graph, crt;
var
i, gd, gm: integer;
begin
gd:=cga;
gm:=cgahi;
initgraph(gd,gm,'');
for i:=1 to 10 do
circle(100,100, i*20); {circle(x,y,jari-jari);}
repeat until keypressed;
closegraph;
end.
----------------------------------------------------
MEMBUAT GARIS
program garis;
uses
graph, crt;
var
gd, gm: integer;
begin
gd:=cga;
gm:=cgahi;
initgraph(gd,gm,'');
line(50,50,600,100);{koordinat titik x=0,y=0, dan x1=600, y1=100}
repeat until KeyPressed;
closeGraph;
end.
----------------------------------------------------
Membuat Gelombang
program gelombang;
uses
graph, crt;
var
i,y1, y, x, xmax,ymax, gd, gm:integer;
begin
gd:=cga;
gm:=cgahi;
initgraph(gd,gm,'');
xmax:=GetmaxX;
yMax:=GetmaxY;
For i := 0 to xmax do
Begin
Y1 := round(10*cos(i*pi/180));
Y := ymax div 2-y1;
PutPixel(x+xmax div 10,y,GetMaxColor);
End;
repeat until keypressed;
closeGraph;
end.
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
LATIHAN
------------------------------------------------------------------------------------
Membuat Bentuk Gelombang yang dapat ditentukan dari program yang sudah dibuat
program gelombang;
uses
graph, crt;
var
i, a, b, y1,y,x,xmax,ymax, gd, gm:integer;
begin
gd:=cga;
gm:=cgahi;
initgraph(gd,gm,'');
xmax:=GetmaxX;
yMax:=GetmaxY;
{garis koordinat}
Line(xmax div 10,0, xmax div 10,ymax);
Line(0,ymax div 2, xmax,ymax div 2);
{angka pada koordinat y}
OutTextXY(45,45,'5');
OutTextXY(45,55,'4');
OutTextXY(45,65,'3');
OutTextXY(45,75,'2');
OutTextXY(45,85,'1');
OutTextXY(40,105,'-1');
OutTextXY(40,115,'-2');
OutTextXY(40,125,'-3');
OutTextXY(40,135,'-4');
OutTextXY(40,145,'-5');
OutTextXY(0,15,'Masukkan Besar Amplitudo:');
OutTextXY(0,25,'Masukkan Besar Gelombang:');
{masukkan angka bulat}
writeln('');
writeln('');
write(' '); readln(a);
write(' '); readln(b);
{bentuk gelombang}
For x := 0 to (b*360) do
Begin
Y1 := round((a*10)*cos(x*pi/180));
Y := GetMaxY div 2-y1;
PutPixel(x+xmax div 10,y,GetMaxColor);
End;
repeat until keypressed;
closeGraph;
end.
MEMASUKKAN BEBERAPA KOTAK
program berapakotak;
uses crt,graph;
var gd,gm, i, b,n:integer;
procedure hitung;
var
letakx, letaky, tinggi, lebar:integer;
begin
OutTextXY(10,30,'Posisi x =');
OutTextXY(10,40,'Posisi y =');
OutTextXY(10,50,'Panjang kotak dari Sumbu X');
OutTextXY(10,60,'Lebar kotak dari Sumbu Y');
writeln('');
write(' ');readln(letakx);
write(' ');readln(letaky);
write(' ');readln(lebar);
write(' ');readln(tinggi);
rectangle(letakx, letaky, lebar, tinggi);
end;
begin
gd:=cga;
gm:=cgahi;
initgraph(gd,gm,'');
rectangle(0,0,getmaxX, getMaxY);
OutTextXY(10,15,'Berapa Kotak Yang diingingkan');
writeln('');
writeln('');
write(' ');readln(n);
for i:=0 to n do
hitung;
repeat until keypressed;
closegraph;
end.
PEMBUATAN GAMBAR DENGAN MENGGUNAKAN ARRAY
Pembuatan gambar menggunakan array yaitu merupakan matrik gambar yang digunakan.
Array 1 dimensi
Array 2 dimensi
Array 3 dimensi
Array n dimensi
Contoh Array 2 dimensi dengan rumus berikut:
---------------------------------------------------------------------
program Angka;
uses
graph, crt;
const
lingkaran:array[1..10,1..15] of integer=(
(0,1,1,0,0,0,0,1,1,1,1,1,1,1,1),
(1,0,1,0,0,0,0,1,0,0,0,0,0,0,0),
(0,0,1,0,0,0,0,1,0,0,0,0,0,0,0),
(0,0,1,0,0,0,0,1,0,0,0,0,0,0,0),
(0,0,1,0,0,0,0,1,1,1,1,1,1,0,0),
(0,0,1,0,0,0,0,0,0,0,0,0,0,1,0),
(0,0,1,0,0,0,0,0,0,0,0,0,0,0,1),
(0,0,1,0,0,0,0,0,0,0,0,0,0,0,1),
(0,0,1,0,0,0,0,0,0,0,0,0,0,1,0),
(1,1,1,1,1,0,0,1,1,1,1,1,1,0,0));
var
i,j,gd, gm:integer;
begin
gd:=cga;
initgraph(gd,gm,'');
repeat
for i:=1 to 10 do
for j:=1 to 15 do
begin
if lingkaran[i,j]=1 then putpixel((100+i),(100+j),1); {baris 1}
if lingkaran[i,j]=2 then putpixel((100+i),(100+j),1); {baris 2}
if lingkaran[i,j]=3 then putpixel((100+i),(100+j),1); {baris 3}
if lingkaran[i,j]=4 then putpixel((100+i),(100+j),1); {baris 4}
if lingkaran[i,j]=5 then putpixel((100+i),(100+j),1); {baris 5}
if lingkaran[i,j]=6 then putpixel((100+i),(100+j),1); {baris 6}
if lingkaran[i,j]=7 then putpixel((100+i),(100+j),1); {baris 7}
if lingkaran[i,j]=8 then putpixel((100+i),(100+j),1); {baris 8}
if lingkaran[i,j]=9 then putpixel((100+i),(100+j),1); {baris 9}
if lingkaran[i,j]=10 then putpixel((100+i),(100+j),1); {baris 10}
if lingkaran[i,j]=11 then putpixel((100+i),(100+j),1); {baris 11}
if lingkaran[i,j]=12 then putpixel((100+i),(100+j),1); {baris 12}
if lingkaran[i,j]=13 then putpixel((100+i),(100+j),1); {baris 13}
if lingkaran[i,j]=14 then putpixel((100+i),(100+j),1); {baris 14}
if lingkaran[i,j]=15 then putpixel((100+i),(100+j),1); {baris 15}
end;
until keypressed;
closegraph;
end.
Array yang diatas merupakan gambar Angka 2 dimensi dengan rumus
lingkaran:array[j,i] of integer=(
Array dengan gambar warna berbeda dengan memberikan angka berbeda.
---------------------------------------------------------------------
program Warna;
uses
graph, crt;
const
lingkaran:array[1..30,1..30] of integer=(
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15),
(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15));
var
i,j,gd, gm:integer;
begin
gd:=detect;
initgraph(gd,gm,'');
repeat;
for i:=1 to 30 do
for j:=1 to 30 do
begin
if lingkaran[j,i]=1 then putpixel((100+i),(100+j),1); {warna berbeda}
if lingkaran[j,i]=2 then putpixel((100+i),(100+j),1); {berdasarkan baris}
if lingkaran[j,i]=3 then putpixel((100+i),(100+j),2); {yang digunakan}
if lingkaran[j,i]=4 then putpixel((100+i),(100+j),2);
if lingkaran[j,i]=5 then putpixel((100+i),(100+j),3);
if lingkaran[j,i]=6 then putpixel((100+i),(100+j),3);
if lingkaran[j,i]=7 then putpixel((100+i),(100+j),4);
if lingkaran[j,i]=8 then putpixel((100+i),(100+j),4);
if lingkaran[j,i]=9 then putpixel((100+i),(100+j),5);
if lingkaran[j,i]=10 then putpixel((100+i),(100+j),5);
if lingkaran[j,i]=11 then putpixel((100+i),(100+j),6);
if lingkaran[j,i]=12 then putpixel((100+i),(100+j),6);
if lingkaran[j,i]=13 then putpixel((100+i),(100+j),7);
if lingkaran[j,i]=14 then putpixel((100+i),(100+j),7);
if lingkaran[j,i]=15 then putpixel((100+i),(100+j),8);
if lingkaran[j,i]=16 then putpixel((100+i),(100+j),8);
if lingkaran[j,i]=17 then putpixel((100+i),(100+j),9);
if lingkaran[j,i]=18 then putpixel((100+i),(100+j),9);
if lingkaran[j,i]=19 then putpixel((100+i),(100+j),10);
if lingkaran[j,i]=20 then putpixel((100+i),(100+j),10);
if lingkaran[j,i]=21 then putpixel((100+i),(100+j),11);
if lingkaran[j,i]=22 then putpixel((100+i),(100+j),11);
if lingkaran[j,i]=23 then putpixel((100+i),(100+j),12);
if lingkaran[j,i]=24 then putpixel((100+i),(100+j),12);
if lingkaran[j,i]=25 then putpixel((100+i),(100+j),13);
if lingkaran[j,i]=26 then putpixel((100+i),(100+j),13);
if lingkaran[j,i]=27 then putpixel((100+i),(100+j),14);
if lingkaran[j,i]=28 then putpixel((100+i),(100+j),14);
if lingkaran[j,i]=29 then putpixel((100+i),(100+j),15);
if lingkaran[j,i]=30 then putpixel((100+i),(100+j),15);
end;
until keypressed;
closegraph;
end.
Dalam gambar 3 dimensi bila untuk menggambar hasil yang dibuat akan kelihatan bergerak, penggunaan array, bila untuk game 3D maka array yang bergerak tidak terjadi.
Array dengan gambar 3 dimensi dengan menggukanan i,j,k
-------------------------------------------------------------------
program gambarLingkaran;
uses
graph, crt;
const
lingkaran:array[1..3,1..10,1..10] of integer=(
((1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1)),(
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1)),((1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1),
(1,1,1,1,1,1,1,1,1,1)));var
i,j,gd, gm:integer;
begin
gd:=cga;
initgraph(gd,gm,'');
repeat
for i:=1 to 10 do
for j:=1 to 10 do
for k:=0 to 5 do
begin
if lingkaran[k,i,j]=1 then putpixel((100+i),(100+j),(100+k));
if lingkaran[k,i,j]=2 then putpixel((100+i),(100+j),(100+k));
if lingkaran[k,i,j]=3 then putpixel((100+i),(100+j),(100+k));
if lingkaran[k,i,j]=4 then putpixel((100+i),(100+j),(100+k));
if lingkaran[k,i,j]=5 then putpixel((100+i),(100+j),(100+k));
if lingkaran[k,i,j]=6 then putpixel((100+i),(100+j),(100+k));
if lingkaran[k,i,j]=7 then putpixel((100+i),(100+j),(100+k));
if lingkaran[k,i,j]=8 then putpixel((100+i),(100+j),(100+k));
if lingkaran[k,i,j]=9 then putpixel((100+i),(100+j),(100+k));
if lingkaran[k,i,j]=10 then putpixel((100+i),(100+j),(100+k));
end;
until keypressed;
closegraph;
end.
---------------------------------------------------------------------------------------------
Catatan:
1. Macam-macam grafik cga lihat di index
cga (warna putih)
cgahi (warna putih)
cgac2 (warna kuning)
cgac3 (warna putih)
cgac1 (warna kuning)
2. caranya agar hasil yang aplikasi dibuat dapat dipindah dari folder Turbo Pascal 7.1 keluar, misalnya ke my document
Copy adalah file 'garis' dengan file penyerta yaitu 'CGA.BGI'
latihan yang lainnya lihat help index turbo Pascal 7.1.