c语言程序模拟点灯,点灯游戏(自己编的)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#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);}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值