请教关于用c画直线的问题

fengyoujing 2004-03-17 09:22:34
昨天在一本书上看到一个程序,用c画一条斜度小于90度的直线,用的算法是逐点比较法,是在tc底下编译的,结果我今天在调试时实现不了,请高手指点一下,源代码如下:
#include "stdio.h"
#include "stdlib.h"
#include "graphics.h"
#include "math.h"
#define ESC 0×1b

void Initialize(void)
{
int GraphDriver;
int GraphMode;
int ErrorCode;
GraphDriver=DETECT;
initgraph(&GraphDriver,&GraphMode,"");
ErrorCode=graphresult();
if(ErrorCode!=grOK)
{
printf("Graphics System Error:%s\n",grapherrormsg(ErrorCode));
exit(1);
}
}


main()
{
int xo,yo,xa,ya,x,y;
int dx,dy,c,f; /* c为从原点o到点a要走的步数 */
Initialize();
printf("input x,y:");
scanf("%d,%d",&xo,&yo);
printf("xa:%d-639",xo);
scanf("%d",&xa);
printf("ya:0......%d",yo);
scanf("%d",&ya);

dx=xa-xo;dy=yo-ya;
if(xa>=xo&&xa<=639&&ya>=0&&ya<=yo)
{
outtextxy(xo,yo+5,"o");
outtextxy(xa,ya-10,"a");
if(dx>dy) c=dx;
else c=dy;
x=xo;y=yo;f=0;
while(c>=0)
{
putpixel(x,y,14);
if(f>0) {x=x+1;f=f-dy;if(dx>dy) c=c-1;}
else {y=y-1;f=f+dx;if(dx<=dy) c=c-1;}
}
}
else printf ("error");
}

p.s. “0×1b”中的×怎样在tc中加入阿,键盘上没这键阿

...全文
115 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengyoujing 2004-03-18
  • 打赏
  • 举报
回复
那请问图行驱动文件是什么文件?叫什么名字?
flowercity 2004-03-17
  • 打赏
  • 举报
回复
修改方法一:
在initgraph(&GraphDriver,&GraphMode,"");之前加图形驱动
同时编译的时候要+graphics.lib
这样的程序可以单独运行
修改方法二:
将图形驱动文件放在你工作目录下用TC编译,也可以运行,但不能单独运行,需要图形驱动文件。

你的#define ESC 0×1b是字母X而不是乘号,那是ESC键值
注意,调用不同的函数,键值可能不一样,要自己测试
比如bioskey()和hbit()同一个键,但键值结果可能不一样!

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧