该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
if(LargeRect.nowx>LargeStartx+LargeRect.size*(array-1)) {LargeRect.nowx-=LargeRect.size;continue;}
setwritemode(1);
DrawLargeRect(LargeRect.agox,LargeRect.agoy,LargeRect.size,LargeRect.color);
DrawLargeRect(LargeRect.nowx,LargeRect.nowy,LargeRect.size,LargeRect.color);
setwritemode(0);
position+=1;
break;
}
case P:
{
setbkcolor(BLUE);
cleardevice();
if(array<10) array++;
else array=5;
InitData2();
InitPic();
break;
}
case R:
{
setbkcolor(BLUE);
cleardevice();
InitData2();
InitPic();
break;
}
case Enter:
{
SmallRect.nowx=LargeRect.nowx+10;
SmallRect.nowy=LargeRect.nowy+10;
for(int i=0;i<5;i++)
ChargeColor(i);
break;
}
case Esc:
{
closegraph();
exit(1);
}
}
if(Win())
{
outtextxy(100,50,"CONGRATULATIONS!");
sleep(5);
setbkcolor(BLUE);
cleardevice();
if(array<10) array++;
else array=5;
InitData2();
InitPic();
}
}while(1);
}
void InitData1()
{
array=5;
LargeStartx=50;
LargeStarty=50;
SmallStartx=LargeStartx+10;
SmallStarty=LargeStarty+10;
LargeRect.size=40;
LargeRect.color=RED;
SmallRect.size=20;
}
void InitData2() //随着关数的变化会改变的数据
{
position=0;
LargeRect.nowx=LargeStartx;
LargeRect.nowy=LargeStarty;
for(int i=0;i<100;i++)
Attr[i]='W';
}
void DrawSmallRect(int x,int y,int size,char color)
{
setfillstyle(1,color);
bar(x,y,x+size,y+size);
}
void DrawLargeRect(int x,int y,int size,char color)
{
setcolor(color);
rectangle(x,y,x+size,y+size);
}
void InitPic()
{
for(int j=0;j
for(int i=0;i
DrawSmallRect(SmallStartx+i*40,SmallStarty+j*40,SmallRect.size,WHITE);
DrawLargeRect(LargeStartx,LargeStarty,LargeRect.size,LargeRect.color);
}
void ChargeColor(int Direction)
{
Add Add;
switch(Direction)
{
case 0: //当前位置
{
Add.x=0;
Add.y=0;
Add.p=0;
break;
}
case 1: //左
{
Add.x=-40;
Add.y=0;
Add.p=-1;
break;
}
case 2: //右
{
Add.x=40;
Add.y=0;
Add.p=1;
break;
}
case 3: //上
{
Add.x=0;
Add.y=-40;
Add.p=-array;
break;
}
case 4: //下
{
Add.x=0;
Add.y=40;
Add.p=array;
break;
}
}
if(Judge(Add.x+SmallRect.nowx,Add.y+SmallRect.nowy))
{
if(Attr[Add.p+position]=='R')
{
Attr[Add.p+position]='W';
SmallRect.color=WHITE;
}
else
{
Attr[Add.p+position]='R';
SmallRect.color=RED;
}
DrawSmallRect(SmallRect.nowx+Add.x,SmallRect.nowy+Add.y,SmallRect.size,SmallRect.color);
}
}
int Win()
{
for(int i=0;i
if(Attr[i]!='R') return 0;
return 1;
}
int Judge(int x,int y)
{
if(x>=SmallStartx&&x<=(SmallStartx+(array-1)*40)&&y>=SmallStarty&&(y<=SmallStarty+(array-1)*40))
return 1;
else return 0;
}