200高分 C语言程序设计 画图 问题 (WinTC)

WinTC:完成一个图形时钟,要求以图形的方式绘制时钟,时针、分针和秒针随时间的变化而变化。以系统的时间为准提示:1、使用setwritemode(intmode)函数。... WinTC :
完成一个图形时钟,要求以图形的方式绘制时钟,时针、分针和秒针随时间的变化而变化。以系统的时间为准

提示:
1、 使用setwritemode(int mode)函数。当mode=0时可将画线时原位置的信息覆盖。当mode=1时,画的线是与原来进行异或后的结果。
2、 可以设计一个函数专用画时、分、秒针的,需要有3个参数:半径,当时的时间(时、分、秒),每时、分、秒转过的角度。
3、 设计一个钟面函数,包括有背景色的钟面,有各分、各秒的刻度(这时需要计算这线段的两端点的横、纵坐标——用正、余弦函数)。
4、 需要用到时间结构体,通过gettime()函数获取系统时间。

jtemail@163.com
可贴,亦可发邮箱。
展开
 我来答
veket_linux
2011-12-14 · TA获得超过4092个赞
知道大有可为答主
回答量:3809
采纳率:0%
帮助的人:4488万
展开全部

/* WIN-TC BGI 图形编程模板 */

#include <dos.h>

#include <math.h>

#include "Conio.h"

#include "graphics.h"

#define closegr closegraph

#define PI 3.14

void initgr(void) /* BGI初始化 */

{

  int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */

  registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */

  initgraph(&gd, &gm, "");

}

int main(void)

{

int r = 200;

int cx;

int cy;

int i;

int x1;

int x2;

int y1;

int y2;

int x3;

int y3;

int xh;

int yh;

int xm;

int ym;

int xs;

int ys;

int r_h = 120;

int r_m = 150;

int r_s = 180;

struct  time t;

  initgr(); /* BGI初始化 */

  /*****此部分添加你自己的代码,例如

  line(25, 25, 220, 220);

  circle(100, 100, 50);

  等等*****/

  cleardevice();

  setwritemode(XOR_PUT); 

  setbkcolor(BLUE);

  setcolor(RED);

  cx = getmaxx()/2;

  cy = getmaxy()/2;

  circle(cx,cy,r);

  for(i=1;i<=60;i++)

  {

    setcolor(YELLOW);

    if(i%5==0)

    {

        x3 = cx + (r-10)*sin(i*PI/30);

        y3 = cy + (r-10)*cos(i*PI/30);

        setfillstyle(SOLID_FILL,GREEN);

        fillellipse(x3,y3,10,10);

    }

    else

    {

        x1 = cx + r*sin(i*PI/30);

        y1 = cy - r*cos(i*PI/30);

        x2 = cx + (r-10)*sin(i*PI/30);

        y2 = cy - (r-10)*cos(i*PI/30);

        line(x1,y1,x2,y2);

    }

  }

  while(1)

  {

    gettime(&t);

    xh = cx + r_h*sin(t.ti_hour%12*PI/6 + t.ti_min*PI/360);

    yh = cy - r_h*cos(t.ti_hour%12*PI/6 + t.ti_min*PI/360);

    xm = cx + r_m*sin(t.ti_min*PI/30 + t.ti_sec*PI/3600);

    ym = cy - r_m*cos(t.ti_min*PI/30 + t.ti_sec*PI/3600);

    xs = cx + r_s*sin(t.ti_sec*PI/30);

    ys = cy - r_s*cos(t.ti_sec*PI/30);

    setcolor(YELLOW);

    line(cx,cy,xh,yh);

    line(cx,cy,xm,ym);

    setcolor(RED);

    line(cx,cy,xs,ys);

    sleep(1);/*这个地方可能会很头疼 */

    setcolor(YELLOW);

    line(cx,cy,xh,yh);

    line(cx,cy,xm,ym);

    setcolor(RED);

    line(cx,cy,xs,ys);

  }

  getch(); /* 暂停一下,看看前面绘图代码的运行结果 */

  closegr(); /* 恢复TEXT屏幕模式 */

  return 0;

}

dosbox上跑程序  抓图

弓宇幻凌
2011-12-15 · TA获得超过337个赞
知道答主
回答量:181
采纳率:50%
帮助的人:21.1万
展开全部
咳 我不懂啊!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式