Anda di halaman 1dari 4

#include <iostream.

h>
#include <stdio.h>
#include <conio.h>
class ClassBidang {
public:
typedef struct {
int x;
int y;
} Point;
typedef struct {
Point TL;
Point BR;
} Kotak;
typedef struct {
Point P1;
Point P2;
Point P3;
} Segitiga;
protected: Point P;
Kotak K;
Segitiga S;
//private: Point P;
public:
char Layar[51][51];
void BuatKotak (int TLx, int TLy, int BRx, int BRy) {
Point temp;
K.TL.x = TLx;
K.TL.y = TLy;
K.BR.x = BRx;
K.BR.y = BRy;
KonversiQuadran (&K.TL);
KonversiQuadran (&K.BR);
Layar [25+K.TL.x][25+K.TL.y]='*';
Layar [25+K.BR.x][25+K.BR.y]='*';
//
for (int i=TLx; i<=BRx; i++) {
temp.x=i;temp.y=TLy;
KonversiQuadran(&temp);
Layar[25+temp.x][25+temp.y]='*';
};
//
for (int i=TLy; i>=BRy; i--) {
temp.y=i;temp.x=TLx;
KonversiQuadran(&temp);
Layar[25+temp.x][25+temp.y]='*';
};
//
for (int i=TLx; i<=BRx; i++) {
temp.x=i;temp.y=BRy;
KonversiQuadran(&temp);
Layar[25+temp.x][25+temp.y]='*';
};
//
for (int i=TLy; i>=BRy; i--) {
temp.y=i;temp.x=BRx;
KonversiQuadran(&temp);
Layar[25+temp.x][25+temp.y]='*';
};
};
void BuatSegitiga (int x1, int y2, int x2, int y2, int x3, int y3) {
Point temp;
S.P1.x = x1;
S.P1.y = y1;
S.P2.x = x2;
S.P2.y = y2;
S.P3.x = x3;
S.P3.y = y3;
KonversiQuadran (&S.P1);
KonversiQuadran (&S.P2);
KonversiQuadran (&S.P3);
Layar [25+S.P1.x][25+S.P1.y]='*';
Layar [25+S.P2.x][25+S.P2.y]='*';
Layar [25+S.P3.x][25+S.P3.y]='*';
//
for (int i=x1; i<=BRx; i++) {
temp.x=i;temp.y=TLy;
KonversiQuadran(&temp);
Layar[25+temp.x][25+temp.y]='*';
};
//
for (int i=TLy; i>=BRy; i--) {
temp.y=i;temp.x=TLx;
KonversiQuadran(&temp);
Layar[25+temp.x][25+temp.y]='*';
};
//
for (int i=TLx; i<=BRx; i++) {
temp.x=i;temp.y=BRy;
KonversiQuadran(&temp);
Layar[25+temp.x][25+temp.y]='*';
};
//
for (int i=TLy; i>=BRy; i--) {
temp.y=i;temp.x=BRx;
KonversiQuadran(&temp);
Layar[25+temp.x][25+temp.y]='*';
};
};
void MakePoint(int x, int y) //membuat point
{
P.x = x; //Point x diisi dengan nilai x
P.y = y; //Point y diisi dengan nilai y
KonversiQuadran(&P);
Layar [25+P.x][25+P.y]='*';
//return P; //nilai dikembalikan ke P sebagai Point
};
void GeserPointX (int x) {
P.x = P.x + x;
};
void TulisPoint () {
cout << "Point yg dibuat: " << endl << " Absis = " << P.x;
cout << " dan Ordinat = " << P.y << endl;
};
void KosongkanLayar(){
for(int baris=0;baris<51; baris++)
{
for(int kolom=0; kolom<51; kolom++) Layar[kolom][baris]=' ';
};
};
void CetakLayar() {
for(int baris=0;baris<51; baris++) {
printf("\n");
for(int kolom=0; kolom<51; kolom++)
printf("%c", Layar[kolom][baris]);
};
};
void KonversiQuadran(Point* Pp){
Pp->y=-Pp->y;
};
void IsiVertikal(){
for(int baris=0;baris<51; baris++)
Layar[25][baris]='|';
};
void IsiHorisontal(){
for(int kolom=0;kolom<51; kolom++)
Layar[kolom][25]='-';
};
void IsiTengah(){
Layar[25][25]='+';
};
ClassBidang();
int AmbilAbsis ()
{
return P.x;
};
int AmbilOrdinat ()
{
return P.y;
};
void GeserKananX(int dx) //menggeser nilai x pada Point ke kanan yaitu dengan
ditambahkan nilai dx
{
P.x = P.x + dx;
Layar[25+P.x][25+P.y]='*';
};
void CerminX() //CerminX berarti Point di cerminkan ke sumbu x
{
P.y = - P.y;
Layar[25+P.x][25+P.y]='*';
};
void CerminY() //CerminX berarti Point di cerminkan ke sumbu x
{
P.x = - P.x;
Layar[25+P.x][25+P.y]='*';
};
};
ClassBidang::ClassBidang() {
MakePoint(-5,7);
};
int main() {
ClassBidang P1;
//
P1.KosongkanLayar();
P1.IsiVertikal();
P1.IsiHorisontal();
P1.IsiTengah();
P1.BuatKotak(5,15,15,5);
/*
P1.GeserKananX(3);
P1.CerminX();
P1.CerminY();
P1.CerminX();
*/
P1.CetakLayar();
printf("\nSelesai!");
cin.get();
return 0;
};

Anda mungkin juga menyukai