各位好:请帮我看看为什么我的程序在鼠标单击方块的时候不能将方块删除呢?
#include<graphics.h>
#include<dos.h>
#include<conio.h>
union REGS i,o; //DOS中定义的结构
int button,x,y;
struct FF{
int left,top,right,bottom;
};
struct FF graph={200,200,400,400}; //总图坐标
struct FF dot[11][11]; //方块数量
void show_mouse(void); //显示鼠标函数
void draw_graph(struct FF *g); //绘制图形大框函数
void draw_dot(struct FF dot[11][11]); //绘制方块函数
void process_program(void); //主要处理函数
int status_mouse(void);
void mouse_on(struct FF dot[11][11]);
int main(void)
{
int gdriver=DETECT,gmode;
clrscr();
initgraph(&gdriver,&gmode,"c:\\tc");
show_mouse();
draw_graph(&graph);
draw_dot(dot); file://绘制方块(点)
process_program();
getch();
closegraph();
return 0;
}
void show_mouse(void)
{
i.x.ax=1;
int86(0x33,&i,&o);
}
void draw_graph(struct FF *g) //此函数不会错
{
int i;
setcolor(3);
rectangle(g->left,g->top,g->right,g->bottom);
for(i=1;i<=10;i++)
{
line(g->left,g->top+i*20-20,g->right,g->top+i*20-20);
line(g->left+i*20-20,g->top,g->left+i*20-20,g->bottom);
}
}
void draw_dot(struct FF dot[11][11])
{
int k,m,n;
for(k=1;k<=10;k++) // set every line first element
{
dot[k][1].left=202;
dot[k][1].top=202+k*20-20;
dot[k][1].right=218;
dot[k][1].bottom=218+k*20-20;
}
for(m=1;m<=10;m++) //设置除第一元素外的其他元素
{
for(n=2;n<=10;n++)
{
dot[m][n].left=dot[m][n-1].left+20;
dot[m][n].top=dot[m][n-1].top;
dot[m][n].right=dot[m][n-1].right+20;
dot[m][n].bottom=dot[m][n-1].bottom;
}
}
setfillstyle(1,2);
for(m=1;m<=10;m++)
{
for(n=1;n<=10;n++)
{
bar(dot[m][n].left,dot[m][n].top,dot[m][n].right,dot[m][n].bottom);
}
}
}
void process_program(void)
{
char ch;
while(1)
{
if(kbhit())
{
ch=getch();
if(ch==9) //if input tab key,exit program
break;
}
if(status_mouse())
mouse_on(dot);
}
}
int status_mouse(void) //鼠标状态函数,不会错
{
i.x.ax=3;
int86(0x33,&i,&o);
button=o.x.bx;
x=o.x.cx;
y=o.x.dx;
return button;
}
void mouse_on(struct FF dot[11][11])
{
int v1,v2;
for(v1=1;v1<=10;v1++)
for(v2=1;v2<=10;v2++)
{
if(x>=dot[v1][v2].left && x<=dot[v1][v2].right && y>=dot[v1][v2].top && y<=dot[v1][v2].bottom)
{
setfillstyle(1,0);
bar(dot[v1][v2].left,dot[v1][v2].top,dot[v1][v2].right,dot[v1][v2].bottom);
break;
}
}
}
[此贴子已经被作者于2006-3-4 21:41:07编辑过]