标题:我在网上看到了这个程序码,看不懂,麻烦哪位c语言高手把下面这个程序每句的 ...
只看楼主
guojiantao
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-11-25
结帖率:100%
已结贴  问题点数:20 回复次数:6 
我在网上看到了这个程序码,看不懂,麻烦哪位c语言高手把下面这个程序每句的后面加个注释,感激不尽!谢谢
我在网上看到了这个程序码,看不懂,麻烦哪位高手把下面这个程序每句的后面加个注释,感激不尽!谢谢
#include <dos.h>   
#include <bios.h>   
#include <malloc.h>   
#include <stdlib.h>   
#include <stdio.h>   
#include "graphics.h"   
  
#define R 15   
  
void initgr(void)   
{   
int gd = DETECT, gm = 0;   
initgraph(&gd, &gm, "D:\\TC20\\BGI");   
}   
  
void getmouse(int *x,int *y,int *key)   
{   
union REGS inregs,outregs;   
inregs.x.ax=3;   
int86(0x33,&inregs,&outregs);   
*x=outregs.x.cx;   
*y=outregs.x.dx;   
*key=outregs.x.bx;   
}   
void visbilemouse()   
{   
union REGS inregs,outregs;   
inregs.x.ax=0x01;   
int86(0x33,&inregs,&outregs);   
}   
  
void mouse(int *x,int *y,int *z)   
{   
int a=0,b=0,c=0,a_old=0,b_old=0;   
int *ball;   
ball=malloc(imagesize(a,b,a+R,b+R));   
getimage(a,b,a+R,b+R,ball);   
  
while(c==0)   
{   
getmouse(&a,&b,&c);   
if(a<0) a=0;   
if(b<0) b=0;   
if(a>getmaxx()-R) a=getmaxx()-R;   
if(b>getmaxy()-R) b=getmaxy()-R;   
if(a!=a_old || b!=b_old)   
{   
putimage(a_old,b_old,ball,0);   
getimage(a,b,a+R,b+R,ball);   
  
setcolor(GREEN);   
setlinestyle(0,0,1);   
line(a,b,a+R,b+R/2);   
line(a,b,a+R/2,b+R);   
line(a+R,b+R/2,a+R/2,b+R);   
line(a+R*3/4,b+R*3/4,a+R,b+R);   
}   
a_old=a;b_old=b;   
}   
*x=a;*y=b;*z=c;   
putimage(a,b,ball,0);   
free(ball);   
}   
  
void main()   
{   
int x,y,z;   
initgr();   
visbilemouse();   
do  
{   
setcolor(WHITE);   
rectangle(175,8,220,25);   
outtextxy(180,10,"exit");   
mouse(&x,&y,&z);   
if(z==1)   
{   
setlinestyle(0,0,1);   
setcolor(12);   
circle(x,y,1);   
}   
if(z==2)   
{setfillstyle(1,BLACK);   
bar(0,0,getmaxx(),getmaxy());   
}   
}while(x<175 || x>220 || y<8 || y>25);   
closegraph();   
}
搜索更多相关主题的帖子: c语言 注释 感激不尽 
2010-11-25 13:23
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
得分:0 
在后面+主席马?
2010-11-25 13:34
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
得分:20 
程序代码:
#include <dos.h>  

#include <bios.h>  

#include <malloc.h>  

#include <stdlib.h>  

#include <stdio.h>  

#include "graphics.h"  


 

#define R 15  


 

void
initgr(void)
{  

      int gd = DETECT, gm = 0;           /*初始化*/
      initgraph(&gd, &gm, "D:\\win-tc\\projects");            /*加载图形驱动*/
}  


 

void
getmouse(int *x,int *y,int *key)  

{  

      union REGS inregs,outregs;  

      inregs.x.ax=3;  

      int86(0x33,&inregs,&outregs);           /*调用中断获取鼠标位置及按下的键值*/
      *x=outregs.x.cx;  

      *y=outregs.x.dx;  

      *key=outregs.x.bx;  

}  

void
visbilemouse()  

{  

      union REGS inregs,outregs;  

      inregs.x.ax=0x01;  

      int86(0x33,&inregs,&outregs);  

}  


 

void
mouse(int *x,int *y,int *z)  

{  

      int a=0,b=0,c=0,a_old=0,b_old=0;  

      int *ball;  

      ball=malloc(imagesize(a,b,a+R,b+R));   /*申请内存,用于保存一块区域,(此区域刚好包含画出的鼠标)*/ 

      getimage(a,b,a+R,b+R,ball);                  /*将鼠标所在区域保存*/


 

      while(c==0)                   /*如果未按键*/
      {  

            getmouse(&a,&b,&c);  

            if(a<0)
                  a=0;  

            if(b<0)
                  b=0;  

            if(a>getmaxx()-R)
                  a=getmaxx()-R;  

            if(b>getmaxy()-R)
                  b=getmaxy()-R;               /*保证鼠标在屏幕内*/
            if(a!=a_old || b!=b_old)  

            {  

                  putimage(a_old,b_old,ball,0);       /*将旧的鼠标异或(覆盖)*/
                  getimage(a,b,a+R,b+R,ball);       /*新的位置画鼠标*/

 

                  setcolor(GREEN);  

                  setlinestyle(0,0,1);  

                  line(a,b,a+R,b+R/2);           /*画鼠标*/
                  line(a,b,a+R/2,b+R);  

                  line(a+R,b+R/2,a+R/2,b+R);  

                  line(a+R*3/4,b+R*3/4,a+R,b+R);  

            }  

            a_old=a;            /*刷新旧地址,为下一次覆盖做准备*/
            b_old=b;  

      }  

      *x=a;        /*按下键了,记录下信息,同时隐藏鼠标*/
      *y=b;
      *z=c;  

      putimage(a,b,ball,0);  

      free(ball);  

}  


 

void
main()  

{  

      int x,y,z;  

      initgr();  

      visbilemouse();  

      do 

      {  

            setcolor(WHITE);  

            rectangle(175,8,220,25);  

            outtextxy(180,10,"exit");               /*画个方框,里面写上exit,也就是个按钮*/
            mouse(&x,&y,&z);  

            if(z==1)                   /*按下左键,画个点*/
            {       

                  setlinestyle(0,0,1);  

                  setcolor(12);  

                  circle(x,y,1);  

            }  

            if(z==2)  

            {
                  setfillstyle(1,BLACK);
                  bar(0,0,getmaxx(),getmaxy()); /*按下右键,擦除此点内容*/ 

            }  

      }while(x<175 || x>220 || y<8 || y>25);  

      closegraph();  

}

2010-11-25 13:44
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
得分:0 
你都帮他写了 那我做什么去
2010-11-25 14:10
smilepanda
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-11-26
得分:0 
唉,3楼辛苦!!
2010-11-26 10:21
guojiantao
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-11-25
得分:0 
回复 3楼 xiaomarn
感激不尽!!!谢谢!!!
2010-11-26 20:38
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
得分:0 
楼主的这个程序有什么用吗?

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2010-11-27 10:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-326846-1-1.html




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

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