该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
#include
#include
typedef struct stu
{
int x;
int y;
int n;
}STATE;
void main()
{STATE state[5][5];
void background();
void open(STATE s[5][5],int x,int y);
MOUSEMSG m;
int i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{state[i][j].x=i*40;state[i][j].y=j*40;state[i][j].n=0;}
background();
while(true)
{m=GetMouseMsg();
switch(m.uMsg)
{case WM_LBUTTONDOWN:open(state,m.x,m.y);}
}getch();
closegraph();
}
void setstate(int x,int y,int a)
{
if(a==0)
{setfillstyle(RGB(100,100,250));
bar(x,y,x+40,y+40);
setcolor(BLACK);
rectangle(x,y,x+40,y+40);
}
if(a==1)
{setfillstyle(WHITE);
bar(x,y,x+40,y+40);
setcolor(BLACK);
rectangle(x,y,x+40,y+40);
}
}
void changestate(STATE s[5][5],int x,int y,int a)
{int i,j;
i=x/40;j=y/40;
if(a==0){setstate(x,y,1);s[i][j].n=1;}
if(a==1){setstate(x,y,0);s[i][j].n=0;}
}
void background()
{initgraph(200,200);
int x,y,n=0;
for(x=0;x<200;x+=40)
for(y=0;y<200;y+=40)
{setstate(x,y,n);}
}
void open(STATE s[5][5],int a,int b)
{int x,y,i,j;
for(x=0;x<200;x+=40)
for(y=0;y<200;y+=40)
{if((a-x)>0&&(a-x)<40&&(b-y)>0&&(b-y)<40)
{i=a/40;j=b/40;
changestate(s,x,y,s[i][j].n);
if(a>40) changestate(s,x-40,y,s[i-1][j].n);
if(b>40) changestate(s,x,y-40,s[i][j-1].n);
if(a<160) changestate(s,x+40,y,s[i+1][j].n);
if(b<160) changestate(s,x,y+40,s[i][j+1].n);}
}
}