| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 869 人关注过本帖
标题:求一图形程序(我们的实习作业~)
只看楼主 加入收藏
djytnt
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-7-13
收藏
 问题点数:0 回复次数:8 
求一图形程序(我们的实习作业~)

我们C语言从未接触过图形操作,可是实习老师给我们出了这样的题!!马上就要交了啊,还是没弄明白~恳请哪位高手帮忙写一个 或给与帮助 QQ:50863650

程序要求:

1:图形初始化。800x600或640x480;

2:显示光标为一小十字(+)初始位置(0,0)。

3:键盘:按方向键一次时,光标按照相应方向移动1个像素,按小键盘的方向键时,光标移动5像素;

4:第一次按下 F3 时,锁定光标位置为初始位置,光标移动时就开始在初始位置和光标之间画出一条直线,再次按下 F3 则确定这条直线,若键入 F4 则取消这条直线。按Esc退出程序!

搜索更多相关主题的帖子: 图形 光标 作业 像素 
2004-07-13 14:10
chengstone
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
帖 子:562
专家分:226
注 册:2004-4-3
收藏
得分:0 

今天无事可做 正好看到你求助了 于是操刀 胡乱写了一下

功能跟你的要求一样 方向为方向键和数字键的8(上),4(左),2(下),6(右)

当第一次按下f3时 然后移动 当移动到任意位置后 再次按下f3 这时两次按下的点之间就会画出一条直线了 此时按下f4就会取消这条线

#include<graphics.h>

#include<bios.h>

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define S_UP 0x4838

#define S_DOWN 0x5032

#define S_LEFT 0x4b34

#define S_RIGHT 0x4d36

#define ESC 0x011b

#define F3 0x3d00

#define F4 0x3e00

static int i=0,j,k;

turn(int *w,int *x,int *y,int *z,int *a,int *b,int *c,int *d,int type)

{

setcolor(0);

line(*w,*x,*y,*z);

line(*a,*b,*c,*d);

switch(type)

{

case LEFT:if(*a>0)

{

setcolor(WHITE);

line(--(*w),*x,--(*y),*z);

line(--(*a),*b,--(*c),*d);

}

else {setcolor(15);

line(*w,*x,*y,*z);

line(*a,*b,*c,*d);}

break;

case RIGHT:if(*c<640)

{

setcolor(WHITE);

line(++(*w),*x,++(*y),*z);

line(++(*a),*b,++(*c),*d);

}

else {setcolor(15);

line(*w,*x,*y,*z);

line(*a,*b,*c,*d);}

break;

case S_LEFT:if(*a>0&&(*a)-5>0)

{

setcolor(WHITE);

line((*w)-=5,*x,(*y)-=5,*z);

line((*a)-=5,*b,(*c)-=5,*d);

}

else {setcolor(15); *w=5;*y=5;*a=0;*c=10;

line(*w,*x,*y,*z);

line(*a,*b,*c,*d);}

break;

case S_RIGHT:if(*c<640&&(*c)+5<640)

{

setcolor(WHITE);

line((*w)+=5,*x,(*y)+=5,*z);

line((*a)+=5,*b,(*c)+=5,*d);

}

else {setcolor(15); *w=640-5;*y=640-5;*a=640-10;*c=640;

line(*w,*x,*y,*z);

line(*a,*b,*c,*d);}

break;

case UP:if(*x>0)

{

setcolor(WHITE);

line(*w,--(*x),*y,--(*z));

line(*a,--(*b),*c,--(*d));

}

else {setcolor(15);

line(*w,*x,*y,*z);

line(*a,*b,*c,*d);}

break;

case DOWN:if(*z<480)

{

setcolor(WHITE);

line(*w,++(*x),*y,++(*z));

line(*a,++(*b),*c,++(*d));

}

else {setcolor(15);

line(*w,*x,*y,*z);

line(*a,*b,*c,*d);}

break;

case S_UP:if(*x>0&&(*x)-5>0)

{

setcolor(WHITE);

line(*w,(*x)-=5,*y,(*z)-=5);

line(*a,(*b)-=5,*c,(*d)-=5);

}

else {setcolor(15); *x=0;*z=10;*b=5;*d=5;

line(*w,*x,*y,*z);

line(*a,*b,*c,*d);}

break;

case S_DOWN:if(*z<480&&(*z)+5<480)

{

setcolor(WHITE);

line(*w,(*x)+=5,*y,(*z)+=5);

line(*a,(*b)+=5,*c,(*d)+=5);

}

else {setcolor(15); *x=480-10;*z=480;*b=480-5;*d=480-5;

line(*w,*x,*y,*z);

line(*a,*b,*c,*d);}

break;

}

}

lock(int w,int b)

{

if(i==0){ i=1; j=w; k=b; }

else { setcolor(3); line(w,b,j,k); i=0; }

}

unlock(int w,int b)

{ i=0; setcolor(0); line(w,b,j,k); }

main()

{

int gd=DETECT,gm=0;

int w=5,x=0,y=5,z=10,a=0,b=5,c=10,d=5;

registerbgidriver(EGAVGA_driver);

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

setcolor(WHITE);

line(w,x,y,z);

line(a,b,c,d);

while(1)

{

switch(bioskey(0))

{

case LEFT:turn(&w,&x,&y,&z,&a,&b,&c,&d,LEFT);break;

case RIGHT:turn(&w,&x,&y,&z,&a,&b,&c,&d,RIGHT);break;

case S_LEFT:turn(&w,&x,&y,&z,&a,&b,&c,&d,S_LEFT);break;

case S_RIGHT:turn(&w,&x,&y,&z,&a,&b,&c,&d,S_RIGHT);break;

case UP:turn(&w,&x,&y,&z,&a,&b,&c,&d,UP);break;

case DOWN:turn(&w,&x,&y,&z,&a,&b,&c,&d,DOWN);break;

case S_UP:turn(&w,&x,&y,&z,&a,&b,&c,&d,S_UP);break;

case S_DOWN:turn(&w,&x,&y,&z,&a,&b,&c,&d,S_DOWN);break;

case F3:lock(w,b);break;

case F4:unlock(w,b);break;

case ESC:cleardevice();setcolor(RED);outtextxy(170,200,"Thank you for use this program!");getch();return 0;

}

}

getch();

closegraph();

}


qq:69558139
2004-07-13 21:37
chengstone
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
帖 子:562
专家分:226
注 册:2004-4-3
收藏
得分:0 
按esc键是退出

qq:69558139
2004-07-13 21:38
chengstone
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
帖 子:562
专家分:226
注 册:2004-4-3
收藏
得分:0 
希望以后这种作业还是自己做为好 在论坛上讨论讨论还可以 不要总是想不劳而获 否则总是别人在帮你写 你还是学不到什么的

qq:69558139
2004-07-13 21:41
guanyou
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2004-6-14
收藏
得分:0 

#include<graphics.h>这个头文件在那啊?我用VC编译时报错,说找不到这个头文件!


2004-07-13 22:23
chengstone
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
帖 子:562
专家分:226
注 册:2004-4-3
收藏
得分:0 
我用的是win-tc 你试试

qq:69558139
2004-07-14 11:57
darrenyang
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2004-5-5
收藏
得分:0 

#define LEFT 0x4b00

0x4b00是不是键值来的?

2004-07-14 13:51
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
收藏
得分:0 
是键盘的扫描码!!!

差点把你忘了...
2004-07-14 15:43
darrenyang
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2004-5-5
收藏
得分:0 
以下是引用天使预备役在2004-07-14 15:43:05的发言: 是键盘的扫描码!!!

多谢了

2004-07-14 16:04
快速回复:求一图形程序(我们的实习作业~)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016057 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved