SlideShare a Scribd company logo
Лекц – 10 давтан
Объект хандлагат
програмчлал
C++-ийн үндсэн график сан(Basic Graphics in C++)
Си хэлэнд дүрс зурахад зориулсан график сан байдаг. Энэ санг
ажиллуулахад хэрэгтэй толгой файл:
#include <graphic.h>
Дүрсийг зурахын тулд тусдаа дүрс зурах цонхтой ажилдаг. Үндсэн
програмын код нь Console-ийн цонх дээр ажиллана.
Dev-C++ дээр график санг ажиллуулах
Dev-C++ 4.9.9.2 хувилбар дээр график санг ажиллуулахын
тулд дараах тохиргоог хийнэ.
Сайт : http://www.cs.colorado.edu/~main/bgi/dev-c++/
1. graphics.h санг Dev-C++-ийн include/ хавтсанд хуулна.
2. libbgi.a файлыг lib/ хавтсанд хуулна.
3. Dev-C++ дээр New Project үүсгэж Project Options-ийн
Parameters-ийн Linker талбар дараах холбоосийг нэмнэ.
a. -lbgi
b. -lgdi32
c. -lcomdlg32
d. -luuid
e. -loleaut32
f. -lole32
Шинэ прожект үүсгэх
Project Options-ийн Parameters-ийн Linker талбар дараах
холбоосийг нэмэх
Жишээ
#include <graphics.h>
int main( )
{
initwindow(400, 300, "First Sample");
circle(100, 50, 40);
system("pause");
return 0;
}
Дэлгэцийн координат
(0,0) (400,0)
(0,300) (400,300)
(200,150)
Графикийн функцууд
http://www.softwareandfinance.com/Turbo_C/Graphics/
Хэрэгцээт функцууд
• cleardevice()
• getmaxx()
• getmaxy()
• delay(millsecond) // = Sleep(delay(millsecond)
• setcolor(RED)
• setfillstyle(SOLID_FILL, BLUE);
• circle(x, y, R);
• fillellipse(x, y, R1, R2);
• rectangle(x,y,width,height);
• bar(x1,1,x2,y2);
• drawpoly(maxpoints/2, poly);
• outtextxy(x,y,"text"); // only char array
• closegraph()
Өнгө Тоон утга
BLACK 0
BLUE 1
GREEN 2
CYAN 3
RED 4
MAGENTA 5
BROWN 6
LIGHTGRAY 7
DARKGRAY 8
LIGHTBLUE 9
LIGHTGREEN 10
LIGHTCYAN 11
LIGHTRED 12
LIGHTMAGENTA 13
YELLOW 14
WHITE 15
Битүү дүрсний өнгөний будалт Setfillstyle
1. SOLID_FILL
2. LINE_FILL
3. LTSLASH_FILL
4. SLASH_FILL
5. BKSLASH_FILL
6. LTBKSLASH_FILL
7. HATCH_FILL
8. XHATCH_FILL
9. INTERLEAVE_FILL
10.WIDE_DOT_FILL
11.CLOSE_DOT_FILL
setfillstyle(XHATCH_FILL, YELLOW);
#include <graphics.h>
#include <math.h>
int main()
{
initwindow(600, 600, "SetFillStyle");
while(!kbhit())
{
setcolor(WHITE);
setfillstyle(rand() % 11, rand() % 15);
bar(100, 100, 500, 500);
delay(500);
}
closegraph();
return 0;
}
Олон өнцөгтийн жишээ:
#include <graphics.h>
#include <iostream>
#include <time.h>
using namespace std;
int main( )
{
srand(time(NULL));
initwindow(400, 300, “Polygon example");
int maxpoints = 24;
int poly[maxpoints];
int maxx = getmaxx() - 50;
int maxy = getmaxy() - 50;
for(int i = 0; i < maxpoints - 2; i += 2)
{
poly[i] = (50 + rand()) % maxx;
poly[i+1] = (50 + rand()) % maxy;
}
poly[maxpoints - 2] = poly[0];
poly[maxpoints - 1] = poly[1];
drawpoly(maxpoints/2, poly);
system("pause");
return 0;
}
Холбоотой шулуунууд зурах
#include <graphics.h>
#include <iostream>
#include <time.h>
using namespace std;
int main( )
{
srand(time(NULL));
initwindow(600, 400, "Star example");
moveto(300, 50);
lineto(400, 290);
lineto(140, 120);
lineto(460, 120);
lineto(200, 290);
lineto(300, 50);
system("pause");
return 0;
}
Дүрсийг хөдөлгөөнт байдлаар харагдуулахын тулд бага хугацааны
зогсолттойгоор дүрсийг давтан зурна. Үүнд:
delay(millsecond);
clearviewport(); графикын функцыг ашиглана.
#include <graphics.h>
using namespace std;
class Circle{
public:
int x, y, dx, dy, R;
Circle(){
R=20+rand()%20;
x=10+R+rand()%getmaxx()/2;
y=10+R+rand()%getmaxy()/2;
dx=2+rand()%4;
if(rand()%2) dx=-dx;
dy=2+rand()%4;
if(rand()%2) dy=-dy;
}
void drawCircle(){
circle(x, y, R);
x+=dx;
y+=dy;
if(x<0+R || getmaxx()-R<x)
dx=-dx;
if(y<0+R || getmaxy()-R<y)
dy=-dy;
}
};
int main( )
{
srand(time(NULL));
initwindow(800, 600, "Circle class");
int size=20;
Circle cr[size];
setfillstyle(SOLID_FILL, BLACK);
while(true){
// clearviewport();
bar(0,0,getmaxx(), getmaxy());
for(int i=0; i<size; i++)
cr[i].drawCircle();
delay(10);
}
return 0;
}
Тоглоомын жишээ
#include <process.h>
void animateCircle(){
while(true){
cleardevice();
setfillstyle(CLOSE_DOT_FILL , YELLOW);
fillellipse(x, y, R, R);
x+=dx;
y+=dy;
setfillstyle(SOLID_FILL , CYAN);
bar(blockx, getmaxy() - 40, blockx + 100, getmaxy() - 20);
if(x<0+R || getmaxx()-R<x)
dx=-dx;
if(y<0+R || getmaxy()-R<y)
dy=-dy;
if(y + R == getmaxy() - 40){
if(blockx - 20 < x && x <= blockx + 120)
dy=-dy;
}
delay(20);
}
}
Circle *cr;
void StartBounce(void* p){
cr=new Circle();
while(true)
cr->animateCircle();
}
int main( )
{
srand(time(NULL));
char kv;int grd, grm;
initwindow(600, 400, "Bounce");
_beginthread(StartBounce, 0, 0);
while(true){
kv=getche();
if(kv==75){
cr->blockx-=5;
if(cr->blockx < 0) cr->blockx = 0;
}
if(kv==77){
cr->blockx+=5;
if(cr->blockx + 100 > getmaxx()) cr->blockx =
getmaxx() - 100;
}
}
closegraph();
return 0;
}
Төгсөв

More Related Content

What's hot

Yohan jacobi gaussseidel_analisis
Yohan jacobi gaussseidel_analisisYohan jacobi gaussseidel_analisis
Yohan jacobi gaussseidel_analisis
Yohan Sidik
 
Play fair cipher
Play fair cipherPlay fair cipher
Play fair cipher
Khawar Abbas
 
Как помочь и как помешать компилятору. Андрей Олейников ➠ CoreHard Autumn 2019
Как помочь и как помешать компилятору. Андрей Олейников ➠  CoreHard Autumn 2019Как помочь и как помешать компилятору. Андрей Олейников ➠  CoreHard Autumn 2019
Как помочь и как помешать компилятору. Андрей Олейников ➠ CoreHard Autumn 2019
corehard_by
 
JAVA Program in NetBeans
JAVA Program in NetBeansJAVA Program in NetBeans
JAVA Program in NetBeans
HimanshiSingh71
 
Drawing using turbo_cpp
Drawing using turbo_cppDrawing using turbo_cpp
Drawing using turbo_cppahmed hanshy
 
Heep implementation in c
Heep implementation in cHeep implementation in c
Heep implementation in c
HapPy SumOn
 
Programs
ProgramsPrograms
Programs
Murali Kummitha
 
Eliminación gaussiana java codigo
Eliminación gaussiana java codigo Eliminación gaussiana java codigo
Eliminación gaussiana java codigo
Edwin Juracan
 
Python codigo graficas
Python codigo graficasPython codigo graficas
Python codigo graficas
Brayan Kalaka
 
Scanfill polygon
Scanfill polygonScanfill polygon
Scanfill polygon
Sonia Pahuja
 
N primo clase programa
N primo clase programaN primo clase programa
N primo clase programa
Leydyca Leydyca
 

What's hot (19)

Dasar c
Dasar cDasar c
Dasar c
 
Yohan jacobi gaussseidel_analisis
Yohan jacobi gaussseidel_analisisYohan jacobi gaussseidel_analisis
Yohan jacobi gaussseidel_analisis
 
Play fair cipher
Play fair cipherPlay fair cipher
Play fair cipher
 
Как помочь и как помешать компилятору. Андрей Олейников ➠ CoreHard Autumn 2019
Как помочь и как помешать компилятору. Андрей Олейников ➠  CoreHard Autumn 2019Как помочь и как помешать компилятору. Андрей Олейников ➠  CoreHard Autumn 2019
Как помочь и как помешать компилятору. Андрей Олейников ➠ CoreHard Autumn 2019
 
JAVA Program in NetBeans
JAVA Program in NetBeansJAVA Program in NetBeans
JAVA Program in NetBeans
 
Vcs12
Vcs12Vcs12
Vcs12
 
Alejandro
AlejandroAlejandro
Alejandro
 
Vcs19
Vcs19Vcs19
Vcs19
 
Drawing using turbo_cpp
Drawing using turbo_cppDrawing using turbo_cpp
Drawing using turbo_cpp
 
Heep implementation in c
Heep implementation in cHeep implementation in c
Heep implementation in c
 
Programs
ProgramsPrograms
Programs
 
Programs
ProgramsPrograms
Programs
 
Eliminación gaussiana java codigo
Eliminación gaussiana java codigo Eliminación gaussiana java codigo
Eliminación gaussiana java codigo
 
Python codigo graficas
Python codigo graficasPython codigo graficas
Python codigo graficas
 
Scanfill polygon
Scanfill polygonScanfill polygon
Scanfill polygon
 
N primo clase programa
N primo clase programaN primo clase programa
N primo clase programa
 
Vcs21
Vcs21Vcs21
Vcs21
 
Daniel snake
Daniel snakeDaniel snake
Daniel snake
 
bai tap-loi-giai-ngon-ngu-lap-trinh-c
 bai tap-loi-giai-ngon-ngu-lap-trinh-c bai tap-loi-giai-ngon-ngu-lap-trinh-c
bai tap-loi-giai-ngon-ngu-lap-trinh-c
 

Oop lect 10

  • 1. Лекц – 10 давтан Объект хандлагат програмчлал
  • 2. C++-ийн үндсэн график сан(Basic Graphics in C++) Си хэлэнд дүрс зурахад зориулсан график сан байдаг. Энэ санг ажиллуулахад хэрэгтэй толгой файл: #include <graphic.h> Дүрсийг зурахын тулд тусдаа дүрс зурах цонхтой ажилдаг. Үндсэн програмын код нь Console-ийн цонх дээр ажиллана.
  • 3. Dev-C++ дээр график санг ажиллуулах Dev-C++ 4.9.9.2 хувилбар дээр график санг ажиллуулахын тулд дараах тохиргоог хийнэ. Сайт : http://www.cs.colorado.edu/~main/bgi/dev-c++/ 1. graphics.h санг Dev-C++-ийн include/ хавтсанд хуулна. 2. libbgi.a файлыг lib/ хавтсанд хуулна. 3. Dev-C++ дээр New Project үүсгэж Project Options-ийн Parameters-ийн Linker талбар дараах холбоосийг нэмнэ. a. -lbgi b. -lgdi32 c. -lcomdlg32 d. -luuid e. -loleaut32 f. -lole32
  • 5.
  • 6. Project Options-ийн Parameters-ийн Linker талбар дараах холбоосийг нэмэх
  • 7.
  • 8. Жишээ #include <graphics.h> int main( ) { initwindow(400, 300, "First Sample"); circle(100, 50, 40); system("pause"); return 0; }
  • 11. Хэрэгцээт функцууд • cleardevice() • getmaxx() • getmaxy() • delay(millsecond) // = Sleep(delay(millsecond) • setcolor(RED) • setfillstyle(SOLID_FILL, BLUE); • circle(x, y, R); • fillellipse(x, y, R1, R2); • rectangle(x,y,width,height); • bar(x1,1,x2,y2); • drawpoly(maxpoints/2, poly); • outtextxy(x,y,"text"); // only char array • closegraph()
  • 12. Өнгө Тоон утга BLACK 0 BLUE 1 GREEN 2 CYAN 3 RED 4 MAGENTA 5 BROWN 6 LIGHTGRAY 7 DARKGRAY 8 LIGHTBLUE 9 LIGHTGREEN 10 LIGHTCYAN 11 LIGHTRED 12 LIGHTMAGENTA 13 YELLOW 14 WHITE 15
  • 13. Битүү дүрсний өнгөний будалт Setfillstyle 1. SOLID_FILL 2. LINE_FILL 3. LTSLASH_FILL 4. SLASH_FILL 5. BKSLASH_FILL 6. LTBKSLASH_FILL 7. HATCH_FILL 8. XHATCH_FILL 9. INTERLEAVE_FILL 10.WIDE_DOT_FILL 11.CLOSE_DOT_FILL setfillstyle(XHATCH_FILL, YELLOW);
  • 14. #include <graphics.h> #include <math.h> int main() { initwindow(600, 600, "SetFillStyle"); while(!kbhit()) { setcolor(WHITE); setfillstyle(rand() % 11, rand() % 15); bar(100, 100, 500, 500); delay(500); } closegraph(); return 0; }
  • 15. Олон өнцөгтийн жишээ: #include <graphics.h> #include <iostream> #include <time.h> using namespace std; int main( ) { srand(time(NULL)); initwindow(400, 300, “Polygon example"); int maxpoints = 24; int poly[maxpoints]; int maxx = getmaxx() - 50; int maxy = getmaxy() - 50;
  • 16. for(int i = 0; i < maxpoints - 2; i += 2) { poly[i] = (50 + rand()) % maxx; poly[i+1] = (50 + rand()) % maxy; } poly[maxpoints - 2] = poly[0]; poly[maxpoints - 1] = poly[1]; drawpoly(maxpoints/2, poly); system("pause"); return 0; }
  • 17. Холбоотой шулуунууд зурах #include <graphics.h> #include <iostream> #include <time.h> using namespace std; int main( ) { srand(time(NULL)); initwindow(600, 400, "Star example"); moveto(300, 50); lineto(400, 290); lineto(140, 120); lineto(460, 120); lineto(200, 290); lineto(300, 50); system("pause"); return 0; }
  • 18. Дүрсийг хөдөлгөөнт байдлаар харагдуулахын тулд бага хугацааны зогсолттойгоор дүрсийг давтан зурна. Үүнд: delay(millsecond); clearviewport(); графикын функцыг ашиглана. #include <graphics.h> using namespace std; class Circle{ public: int x, y, dx, dy, R; Circle(){ R=20+rand()%20; x=10+R+rand()%getmaxx()/2; y=10+R+rand()%getmaxy()/2; dx=2+rand()%4; if(rand()%2) dx=-dx; dy=2+rand()%4; if(rand()%2) dy=-dy; }
  • 19. void drawCircle(){ circle(x, y, R); x+=dx; y+=dy; if(x<0+R || getmaxx()-R<x) dx=-dx; if(y<0+R || getmaxy()-R<y) dy=-dy; } };
  • 20. int main( ) { srand(time(NULL)); initwindow(800, 600, "Circle class"); int size=20; Circle cr[size]; setfillstyle(SOLID_FILL, BLACK); while(true){ // clearviewport(); bar(0,0,getmaxx(), getmaxy()); for(int i=0; i<size; i++) cr[i].drawCircle(); delay(10); } return 0; }
  • 21. Тоглоомын жишээ #include <process.h> void animateCircle(){ while(true){ cleardevice(); setfillstyle(CLOSE_DOT_FILL , YELLOW); fillellipse(x, y, R, R); x+=dx; y+=dy; setfillstyle(SOLID_FILL , CYAN); bar(blockx, getmaxy() - 40, blockx + 100, getmaxy() - 20); if(x<0+R || getmaxx()-R<x) dx=-dx; if(y<0+R || getmaxy()-R<y) dy=-dy; if(y + R == getmaxy() - 40){ if(blockx - 20 < x && x <= blockx + 120) dy=-dy; } delay(20); } }
  • 22. Circle *cr; void StartBounce(void* p){ cr=new Circle(); while(true) cr->animateCircle(); }
  • 23. int main( ) { srand(time(NULL)); char kv;int grd, grm; initwindow(600, 400, "Bounce"); _beginthread(StartBounce, 0, 0); while(true){ kv=getche(); if(kv==75){ cr->blockx-=5; if(cr->blockx < 0) cr->blockx = 0; } if(kv==77){ cr->blockx+=5; if(cr->blockx + 100 > getmaxx()) cr->blockx = getmaxx() - 100; } } closegraph(); return 0; }