Wednesday, December 5, 2012

Grafik pada Turbo Pascal


            Layar monitor komputer memiliki dua modus pemakaiannya, modus text dan modus grafik. Pada modus text yang dapat ditampilkan layar monitor adalah berupa karakter – karakter. Banyaknya karakter yang ditampung dalam satu layar penuh adalah 4000 karakter ( untuk mode layar yang biasa dipakai ) yaitu 80 karakter mengisi lebar layar dan 25 karakter mengisi tiinggi layar.

            Lainnya dengan modus grafik, layar monitor dapat menampilkan objek hanya berupa titik – titik yang dapat menampung pada suatu layar penuh bervariasi sesuai dengan mode grafik yang kita pergunakan. Dalam pemograman grafik menggunakan bahasa pascal kita akan memerlukan file – file sebagai berikut :

Ø File driver grafik, yaitu file – file yang berakhiran BGI ( Boolean Grafik Interface) Untuk dipergunakan sesuai dengan monitor yang dipergunakan
Ø File Graph. TPU adalah fil eyang berisi definisi dari fungsi – fungsi grafik yang dipergunakan
Ø File Hurup adalah file – file yang memiliki akhiran CHR yang bersifat optimal jika tidak terdapat file – file ini setiap karakter dicetak menggunakan Jenis  huruf default .
Untuk dapat menggunakan fasilitas layar grafik terlebih dahulu harus melakukan inialisasi yaitu memberikan kode pada komputer untuk memperlakukan layar monitor sebagai layar grafik. Setelah dilakukan inisialisasi ini cara penulisan ke layar berbeda dengan cara penulisan yang dilakukan pada bab – bab sebelumnya. Dalam Pemograman grafik dipergunakan InitGraph. Syntax penulisannya :
            InitGraph(GrDriver, GrMode, DrivePath);
GraphDriver
Parameter ini berupa parameter variabel bertipe integer yang menyatakan driver layar yang akan dipergunakan, yang tidak lain menyatakan jenis layar monitor apa yang dipergunakan. Dengan menugaskan DETECT pada variabel ini maka complier akan mendeteksi monitor apa yang terpasang pada komputer yang kita pergunakan. File – file Driver berikut ini :
Nama File
Perangkat (Keras)
CGA,BGI
IBM CGA,MCGA
EGAVGA,CGI
IBM EGA, VGA
HERC,BGI
Hercules Monokrom
ATT,BGI
AT & T
PC3270,BGI
IBM 3270 PC
IBM8514,BGI
IBM - 8514

Nama Konstanta
Nilai
CurretDriver
-128
DETECT
0
CGA
1
MCGA
2
EGA
3
EGA84
4
EGAMono
5
IBM8514
6
Hercules Monokrom
7
ATT40
8
VGA
9
PC3270
10
           
GraphMode
            Parameter ini berupa variabel bertipe integer yang menyatakan modes grafik yang akan kita pergunakan. Bila variabel ini dipergunakan tidak diinialisasikan (=), maka complier akan mencari resolusi tertinggi yang mampu ditampilkan oleh driver layar. Mode – mode grafik dalam bahasa pascal sebagai berikut :
Nama File

Ukuran
Warna

CGACO
0
320 X 200
Palet 0 : LightGreen, LightRed, Yellow
1
CGAC1
1
320 X 200
Palet 1 : LightCyan, LightMagenta, White
1
CGAC2
2
320 X 200
Palet 2 : Green, Red, Brown
1
CGAC3
3
320 X 200
Palet 3 : Cyan, Magenta, LightGray
1
CGAH1
4
640 x 200


MCGACO
0
320 X 200
Palet 0 : LightGreen, LightRed, Yellow
1
MCGAC1
1
320 X 200
Palet 1 : LightCyan, LightMagenta, White
1
MCGAC2
2
320 X 200
Palet 2 : Green, Red, Brown
1
MCGAC3
3
320 X 200
Palet 3 : Cyan, Magenta, LightGray
1
MCGACMed
4
640 x 200

1
MCGACHi
5
640 x 480

1
EGALO
0
640 x 200
16 Warna
4
EGAHi
1
640 x 350
16 Warna
2
EGAL64LO
0
640 x 200
16 Warna
1
EGAL64Hi
1
640 x 350
4 Warna
1
EgaMonoHi
3
640 x 350


HerMonoHi
0
720 x 350

2
ATT400C0
0
320 X 200
Palet 0 : LightGreen, LightRed, Yellow
1
ATT400C1
1
320 X 200
Palet 1 : LightCyan, LightMagenta, White
1
ATT400C2
2
320 X 200
Palet 2 : Green, Red, Brown
1
ATT400C3
3
320 X 200
Palet 3 : Cyan, Magenta, LightGray
1
ATT400Med
4
640 x 200

1
ATT400Hi
5
640 x 200

1
VGALO
0
640 x 200
16 Warna
4
VGAMed
1
640 x 350
16 Warna
2
VGAHi
2
640 x 480
16 Warna
1
PC3270Hi
0
720 X 350

1
IBM8514LO
0
640 X 480
256 Warna

IBM8514Hi
1
1024 X 768
2561 Warna


Drive Path
             Parameter string yang menyatakan letak direktorin dari file driver ( program tersebut di simpan dimana drive c atau d (c:/tp/bgi ). Setelah selesai menggunakan. Modus layar harus dikembalikan lagi ke modus text, Hal ini dilakukan dengan menggunakan perintah :
                                CloseGraph;
Perintah – Perintah Grafik
Ø GetMaxX dan GetMaxY adalah untuk mendapatkan nilai maxsimum dari koordinat X dan koordinat Y adalah titk paling bawah layar. Koordinat layar pada monitor komputer adalah seperti :
                                    X


    Y
 
                                                                                               

           
                                               
Ø PutPixel adalah perintah untuk mencetak titik pada suatu koordinat tertentu seperti dibawah ini :
                                        PutPixel(X,Y,Warna);
        X dan Y koordinat titik, dan warna adalah warna titik
Ø Line adalah perintah untuk menggambar garis pada layar seperti dibawah ini :
                                        Line(  X1, Y1, X2, Y2 );
    X1 dan Y1 adalah koordinat awal garis dan X2 dan Y2 adalah koordinat akhir garis
Ø Line To adalah perintah untuk menggambar garis dari posisi aktif ke koordinat tertentu seperti di bawah ini :
                                        LineTo( X, Y );
        X dan Y adalah koordinat ujung garis.
Ø MoveTo  adalah perintah untuk memindahkan posis aktif ke posisi tertentu seperti dibawah ini :
                                        MoveTo ( X, Y);
        X dan Y adalah posisi aktif baru.
Ø Rectangle adalah perintah untuk menggambar sebuah kotak pada layar seperti di bawah ini :
                                        Rectangle( X1, X2, Y1, Y2);
Ø Circle adalah perintah untuk mengambar lingkaran pada layar seperti dibawah ini :
                        Circle ( X, Y, Radius ); Radius adalah jari – jari lingkaran.
Ø Ellipse adalah perintah untuk mengambar Ellips pada layar seperti di bawah ini :
                        Ellipse( X, Y, Sudut awal, Sudut Akhir, RadiusX, RadiusY );
        Sudut awal dan sudut akhir adalah bilangan antara 0 – 360 Derajat.
Latihan –Latihan Program
Program Perintah_menggambar;
Uses Crt, Graph;
Type
                GrDrv,GrMode                     : Integer;
Begin
            GrDrv := DETECT;
            InitGraph(GrDrv, GrMode,’’);
            If GraphResult  <> GrOk Then
            Init := false;
            Else init := true;
End;
Procedure Tulis( X,Y: integer; ST:S30);
Begin
            OuttextXY(X,Y,’ < - -‘+ ST);
End;
Procedure Gambar;
Var
            I                  : Integer;
Begin
            {Menggambar Garis}
            LineTo(GetMaxX, GetMaxY);
            Tulis( 20,10,’ LineTo’);
            Line(100,100,300,150);
            Tulis( 250,120,’ Line’);

            {Menggambar Kotak}
            Rectangle(200,200,300,300);
            Tulis( 205,250,’Rectangle’);
            Bar(60,250,80,300);
            Tulis( 85,275,’Bar’);
            Bar3D(60,350,80,380,10,True);
            Tulis( 85,365,’Bar3D’);

            {Menggambar Lingkaran}
            Circle(GetMaxX div 2, GetMaxY div 2,50);
            Tulis(380, GetMaxX div div 2,’Circle’);
            Ellipse(400,100,0,360,10,20);
            Tulis( 420,100,’Ellips’);
           
            {Menggambar Titik}
            For I:=1 to 10 do
            Begin
                                PutPixel(5*I,400, LIGHTRED);
                                Tulis(55,400,’PuPixel’);
                                Readln;
                                CloseGraph;
            End
            If  Init Then Gambar;

End.
Program Animasi_Bunga;
Uses Crt; Graph;
Var
            GD,GM,I   : Integer;
Begin
            Repeat
                GD:=VGA;
            GM:=VGHi;
            InitGraph( GD,GM,’’);
            For I:=1 to 30 do
            Begin
                Setcolor( I );
                Settextstyle(4, Horizdir,4);
                OuttextXY(300,40,’Bunga’);
                Circle(310,240,5+I);
                Circle(300,170,5+I);
                Circle(270,310,5+I);
                Circle(350,310,5+I);
                Circle(230,240,5+I);
                Circle(400,260,5+I);
                Circle(370,190,5+I);
                Sound(200);
                Delay ( 10 );
                noSound;
            End;
            Until KeyPressed;
            CloseGraph; Readln;
End.

Program Gelombang_Sinus;
Uses Graph;
Type
            Data = Array[0..360] Of PointType
Var
            DataSinus :Data;
            Frek, Amp :Integer;
Function Init : Boolean;
Var    
            GrDrv,GrMode         :Integer;
Begin
            GrDrv := DETECT;
            InitGraph(GrDrv, GrMode,’’);
            If GraphResult  <> GrOk Then
            Init := false;
            Else init := true;
End;
Procedure Sumbu;
Begin
                Line( 0, GetMaxY div 2, GetMaxX, GetMaxY div 2);
                Line( GetMaxX div 2, 0 ,  GetMaxX div 2, GetMaxY);
End;
Procedure Sinus( Frek, Amp : integer; Var SinBuffer : Data);
Var
                I              : Integer;
Begin
                For I:= 0 to 360 do
                Begin
                SinBuffer[I].X := Round(I/360 * GetMaxX);
                SinBuffer[I].Y := (GetMaxY div 2 ) – Round(Amp * Sin (Frek * Pi * I / 180));
                End;
End;
Begin
                Writeln(‘%%%%% Menggambar Gelombang Sinus  %%%%%’);
                Write(‘ Frekuensi = ‘);Readln(Frek);
                Write(‘ Amplitudo = ‘);Readln(Amp);
                If Init then
                Begin     
                Sumbu;
                Sinus(Frek,amp,DataSinus);
                DrawPoly( 360, DataSinus);
                Readln;CloseGraph;
                End
                Else Write(‘ Grafik Error !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!’);
End.
                                               














No comments:

Post a Comment