#include<graphics.h>#include<conio.h>intmain(){double h =300;// 高度double v =0;// 速度(方向向下)double dv =9.8/50;// 加速度(每 1/50 秒)// 初始化绘图窗口initgraph(640,480);// 画地平线line(100,421,540,421);while(!_kbhit()){
v += dv;// 根据加速度计算速度
h -=(v - dv /2);// 计算高度// 如果高度低于地平线,实现反弹,速度方向取反if(h <=0){
h +=(v - dv /2);
v =- v *0.9;// 反弹时能量损耗 10%}// 画绿色球setcolor(GREEN);circle(320,400-int(h),20);Sleep(20);// 延时(每帧延时 1/50 秒)// 擦掉球setcolor(BLACK);circle(320,400-int(h),20);}// 关闭绘图窗口closegraph();return0;}
钟表模拟程序(表针形式)
#include<graphics.h>#include<conio.h>#include<math.h>#define PI 3.1415926536voidDrawHand(int hour,int minute,int second){double a_hour, a_min, a_sec;// 时、分、秒针的弧度值int x_hour, y_hour, x_min, y_min, x_sec, y_sec;// 时、分、秒针的末端位置// 计算时、分、秒针的弧度值
a_sec = second *2* PI /60;
a_min = minute *2* PI /60+ a_sec /60;
a_hour= hour *2* PI /12+ a_min /12;// 计算时、分、秒针的末端位置
x_sec =int(120*sin(a_sec));
y_sec =int(120*cos(a_sec));
x_min =int(100*sin(a_min));
y_min =int(100*cos(a_min));
x_hour=int(70*sin(a_hour));
y_hour=int(70*cos(a_hour));// 画时针setlinestyle(PS_SOLID,10);setcolor(WHITE);line(320+ x_hour,240- y_hour,320- x_hour /7,240+ y_hour /7);// 画分针setlinestyle(PS_SOLID,6);setcolor(LIGHTGRAY);line(320+ x_min,240- y_min,320- x_min /5,240+ y_min /5);// 画秒针setlinestyle(PS_SOLID,2);setcolor(RED);line(320+ x_sec,240- y_sec,320- x_sec /3,240+ y_sec /3);}voidDrawDial(){// 绘制一个简单的表盘circle(320,240,2);circle(320,240,60);circle(320,240,160);outtextxy(296,310,"BestAns");// 绘制刻度int x, y;for(int i=0; i<60; i++){
x =320+int(145*sin(PI *2* i /60));
y =240+int(145*cos(PI *2* i /60));if(i %15==0)bar(x -5, y -5, x +5, y +5);elseif(i %5==0)circle(x, y,3);elseputpixel(x, y, WHITE);}}voidmain(){initgraph(640,480);// 初始化 640 x 480 的绘图窗口DrawDial();// 绘制表盘setwritemode(R2_XORPEN);// 设置 XOR 绘图模式// 绘制表针
SYSTEMTIME ti;// 定义变量保存当前时间while(!kbhit())// 按任意键退出钟表程序{GetLocalTime(&ti);// 获取当前时间DrawHand(ti.wHour, ti.wMinute, ti.wSecond);// 画表针Sleep(1000);// 延时 1 秒DrawHand(ti.wHour, ti.wMinute, ti.wSecond);// 擦表针(擦表针和画表针的过程是一样的)}closegraph();// 关闭绘图窗口}
3 辆行驶的小车
#include<graphics.h>#include<conio.h>#include<stdlib.h>#include<stdio.h>// 声明需要使用的函数voidcarstart(int x,int y,int z);voiddrawbus();voidinit();// 定义全局变量
IMAGE img;voidmain(){init();int x=0, y=0, z=0;BeginBatchDraw();while(!kbhit()){
x +=2;
y++;
z +=3;if(x >600) x =-200;if(y >600) y =-200;if(z >600) z =-200;carstart(x, y, z);FlushBatchDraw();Sleep(5);}EndBatchDraw();closegraph();}// 初始化函数,初始化窗口大小,获取所画图片voidinit(){// 初始化窗口大小initgraph(600,600);outtextxy(70,250,"大家好,新手来报到,希望大家多多指教");outtextxy(70,270,"下面你们会看到我程序的效果,程序很简单");outtextxy(70,290,"希望以后再跟大家的交流中学到更多,希望自己以后能编出更好的程序");outtextxy(70,320,"请按任意键进观看程序执行效果");// 等待按键按下getch();cleardevice();// 清除上面的文字进入运行效果画面drawbus();// 调用绘图函数,绘制 BUSgetimage(&img,80,40,180,90);// 获取 BUS 图片位置,保存在 img 变量中}//// 车辆行驶程序,通过 putimge 函数,改变移动的像素来达到图片移动voidcarstart(int x,int y,int z){cleardevice();putimage(x,40,&img);setlinestyle(PS_SOLID,10);//设置画线的大小line(0,135,600,135);putimage(y,220,&img);line(0,315,600,315);putimage(z,380,&img);line(0,475,600,475);}//// 绘制 BUS 函数,通过画一些线条,组合它们的位置,组合成一辆小车voiddrawbus(){setcolor(RED);setfillstyle(BLUE);fillcircle(120,120,10);// 画车的轮胎fillcircle(200,120,10);// 画车的轮胎line(80,120,110,120);// 画车的底部车板line(80,40,80,120);// 画车的四周车板line(130,120,190,120);// 画车的底部车板line(210,120,250,120);// 画车的底部车板line(250,40,250,120);// 画车的四周车板line(80,40,250,40);// 画车的顶部车板// 画车窗for(int x =90, y =100; x <190&& y <190; x +=15, y +=15){rectangle(x,60, y,70);}// 画车门rectangle(220,60,240,120);line(230,60,230,120);circle(230,90,5);}