| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2236 人关注过本帖
标题:菜鸟初次做东西  请高手指点迷津
取消只看楼主 加入收藏
xcv4c
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-5-4
收藏
得分:0 
哦  大体明白了 不愧是高手,敬佩敬佩! 请问下:

1)专业的处理方向键的方法就是这样嘛?我怎么没想到~ 自叹不如啊? 
2)你为什么把key的低八位屏蔽?不是方向键的“72”部分在低八位嘛?  
3)bioskey(0)返回的值是什么0x12??那是什么意思?


感激不尽!!



[此贴子已经被作者于2005-5-5 23:03:30编辑过]


2005-05-05 22:40
xcv4c
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-5-4
收藏
得分:0 
嗷~对了  就是“栈”是吗?~哎  瞧我这啥脑子!!!真想撞墙!!

麻烦大侠在回答下我上面改过的几个问题   感激不尽
2005-05-05 23:06
xcv4c
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-5-4
收藏
得分:0 
o  不好意思  我错了 我马虎了~对不起  

那个什么蜘蛛我回去找的   还是感激不尽!!

您的程序真是精妙啊!!尤其使这段            if(Key&0xff)  ;       else {} 真是美啊!!

费了我老大神才明白   真是高手   敢问您现在多大?

看了您的程序我咋发现switch不如IF好使呢   您可真是高手啊!!!

[此贴子已经被作者于2005-5-6 0:16:49编辑过]


2005-05-06 00:10
xcv4c
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-5-4
收藏
得分:0 

大侠  又有问题了  请帮帮忙啊: #include "Conio.h" #include "dos.h" #include "stdio.h" #include "graphics.h" #include "ctype.h" #define closegr closegraph #define DIGITLEN 1000 #define MAXLINE 50 void cursor(); void initgr(void); void matrix(int ,int,int,int,int); int Xcursor,Ycursor ; int mem[50][50]; char m[100]; int main(void) { int a,b ; int i,j,k=0 ; int Xsize=50,Ysize=24 ; int Xstart,Ystart; int start=50 ; int Key=0 ,digit;

printf("line:"); scanf("%d",&a); printf("row:"); scanf("%d",&b); initgr(); matrix(start,Xsize,Ysize,a,b) ; Xstart=start; Ystart=start; Xcursor=Xstart; Ycursor=Ystart; cursor(); while(Key!=25) { while(bioskey(1)==0) cursor(); Key=bioskey(0); if ((Key<<8)>>8==27) break;

if(Key&0xff) /*如果不是方向键*/ /*这里加入接收部分,可以用getch(),outtextxy()等函数来处理,并根据所处的屏幕x,y值来对应矩阵的数组*/ { digit=(Key<<8)>>8; do { if (isdigit(digit)) { setfillstyle(0, 5); bar(Xcursor+1,Ycursor+1,Xcursor+Xsize-1,Ycursor+Ysize-1); setcolor(WHITE); m[k++]=digit; m[k]='\0'; outtextxy(Xcursor+3,Ycursor+Ysize/2,m); mem[(Ycursor-Ystart)/Ysize][(Xcursor-Xstart)/Xsize]=atoi(m);

} else { printf("\7"); break;

}

} while ((digit=getch())!=13);

}

else /*是方向键*/ { Key>>=8 ; if(Key==75)Xcursor=Xcursor>start?Xcursor-Xsize:Xcursor+(a-1)*Xsize; if(Key==77)Xcursor=Xcursor<start+(a-1)*Xsize?Xcursor+Xsize:Xcursor-(a-1)*Xsize ; if(Key==72)Ycursor=Ycursor>start?Ycursor-Ysize:Ycursor+(b-1)*Ysize ; if(Key==80)Ycursor=Ycursor<start+(b-1)*Ysize?Ycursor+Ysize:Ycursor-(b-1)*Ysize ;

for (k=0;k<=100;k++) m[k]=0; k=0; } } moveto(300,100); printf("what's u have input is :\n"); for (i=0;i<=b-1;i++) { for (j=0;j<=a-1;j++) printf("%d,",mem[i][j]); printf("\n"); } getch(); closegr(); return 0 ; } /* BGI初始化 */ void initgr(void) { int gd=DETECT,gm=0 ; /* 和gd = VGA,gm = VGAHI是同样效果 */ registerbgidriver(EGAVGA_driver); /* 注册BGI驱动后可以不需要.BGI文件的支持运行 */ initgraph(&gd,&gm,""); } /*光标*/ void cursor() { setlinestyle(0,0,2) ; setcolor(WHITE); line(Xcursor+3,Ycursor+21,Xcursor+3,Ycursor+4); delay(3500); setcolor(BLACK); line(Xcursor+3,Ycursor+21,Xcursor+3,Ycursor+4); delay(3500); }

void matrix(int start,int Xsize,int Ysize,int a,int b) { int i; for(i=0;i<=a;i++) { line(start+i*Xsize,start,start+i*Xsize,start+b*Ysize); /*画竖线*/ } for(i=0;i<=b;i++) { line(start,start+i*Ysize,start+a*Xsize,start+i*Ysize);

}

} 为什么矩阵数组的mem[0][0]总是0?我试过了  一行一列时输入数字后按回车之后如果不按方向键就没问题  按了方向键就会为○? 当我把86行改成 for (;k>=0,k--) m[k]=0; k=0; 就都没问题了,虽然问题解决了 可是不知为什么会出现这种情况??我冥思苦想了半天了   百思不得其解,,郁闷死了,请大侠帮我分析下?感激不尽!!!!

2005-05-07 00:14
xcv4c
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-5-4
收藏
得分:0 
感谢两位大侠  不过我更不明白了  您的  m[k=0]='\0';  只把m[0]给赋成'\0'了  如果我第一格输入的是123    您的  m[k=0]='\0';  只把m[0]给赋成'\0'了 ,而m[1]==2,,,m[2]==3,,,,,m[3]='\0', 下次 我在另一个格里输入数字9时,,,,m[]不就等于923了嘛??





而且我的for (k=0;k&lt;=100;k++)
                m[k]=0;

为啥会造成只要一按方向键就会给mem[0][0]清零呢?为什么for (;k&gt;=0,k--)
         m[k]=0;  就行呢?



望大侠不要嫌麻烦啊   救救我啊
2005-05-07 12:31
xcv4c
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-5-4
收藏
得分:0 
1.不愧是大侠 果然是越界造成的   可是越界应该警告啊  他怎么给清零了?又为什么只给mem[0][0]清零  其它正常?? 我用的这个论坛上介绍的WIN-TC 1.8  编译器不太懂~   

2.我认为给char m[]  这个数组清零应该是必要的吧?要不然如果前一个数字是四位如1234后一个是三位如987   那么不会影响后一个的输出嘛?(9874);  不过经我调试果然如大侠所说  只要k=0就行了  这是为什么?
2005-05-07 13:10
xcv4c
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-5-4
收藏
得分:0 
嗷  我明白了  我上面有句

m[k++]=digit;
   m[k]='\0';

感谢大侠!   真的感激不尽!
2005-05-07 13:15
xcv4c
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-5-4
收藏
得分:0 
唉  真是感觉脑袋不够用了  呵呵  

  感谢高手指教 !!
2005-05-07 13:29
快速回复:菜鸟初次做东西  请高手指点迷津
数据加载中...
 
   



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

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