📄 d.c
字号:
else if(block[type][x-1][y+1]==1)
{ block[type][x+1][y]=block[type][x-1][y-1]=block[type][x-1][y]=1;
block[type][x][y-1]=block[type][x][y+1]=block[type][x-1][y+1]=0;
color[type][x+1][y]=color[type][x-1][y-1]=color[type][x-1][y]=color[type][x][y];
color[type][x][y-1]=color[type][x][y+1]=color[type][x-1][y+1]=BLACK;
}
else if(block[type][x-1][y-1]==1)
{ block[type][x][y-1]=block[type][x][y+1]=block[type][x+1][y-1]=1;
block[type][x+1][y]=block[type][x-1][y-1]=block[type][x-1][y]=0;
color[type][x][y-1]=color[type][x][y+1]=color[type][x+1][y-1]=color[type][x][y];
color[type][x+1][y]=color[type][x-1][y-1]=color[type][x-1][y]=BLACK;
}
break;
case 4 : if(block[type][x+1][y+1]==1)
{ block[type][x+1][y]=block[type][x-1][y+1]=block[type][x-1][y]=1;
block[type][x][y-1]=block[type][x][y+1]=block[type][x+1][y+1]=0;
color[type][x+1][y]=color[type][x-1][y+1]=color[type][x-1][y]=color[type][x][y];
color[type][x][y-1]=color[type][x][y+1]=color[type][x+1][y+1]=BLACK;
}
else if(block[type][x-1][y+1]==1)
{ block[type][x][y-1]=block[type][x][y+1]=block[type][x-1][y-1]=1;
block[type][x+1][y]=block[type][x-1][y+1]=block[type][x-1][y]=0;
color[type][x][y-1]=color[type][x][y+1]=color[type][x-1][y-1]=color[type][x][y];
color[type][x+1][y]=color[type][x-1][y+1]=color[type][x-1][y]=BLACK;
}
else if(block[type][x-1][y-1]==1)
{ block[type][x+1][y]=block[type][x+1][y-1]=block[type][x-1][y]=1;
block[type][x][y-1]=block[type][x][y+1]=block[type][x-1][y-1]=0;
color[type][x+1][y]=color[type][x+1][y-1]=color[type][x-1][y]=color[type][x][y];
color[type][x][y-1]=color[type][x][y+1]=color[type][x-1][y-1]=BLACK;
}
else if(block[type][x+1][y-1]==1)
{ block[type][x][y-1]=block[type][x][y+1]=block[type][x+1][y+1]=1;
block[type][x+1][y]=block[type][x+1][y-1]=block[type][x-1][y]=0;
color[type][x][y-1]=color[type][x][y+1]=color[type][x+1][y+1]=color[type][x][y];
color[type][x+1][y]=color[type][x+1][y-1]=color[type][x-1][y]=BLACK;
}
break;
case 5 : break;
case 6 : if(y==0||y==WIDTH-1) return;
if(block[type][x][y-1]!=1)
{ block[type][x][y-1]=1;
block[type][x+1][y]=0;
color[type][x][y-1]=color[type][x+1][y];
color[type][x+1][y]=BLACK;
}
else if(block[type][x-1][y]!=1)
{ block[type][x-1][y]=1;
block[type][x][y-1]=0;
color[type][x-1][y]=color[type][x][y-1];
color[type][x][y-1]=BLACK;
}
else if(block[type][x][y+1]!=1)
{ block[type][x][y+1]=1;
block[type][x-1][y]=0;
color[type][x][y+1]=color[type][x-1][y];
color[type][x-1][y]=BLACK;
}
else if(block[type][x+1][y]!=1)
{ block[type][x+1][y]=1;
block[type][x][y+1]=0;
color[type][x+1][y]=color[type][x][y+1];
color[type][x][y+1]=BLACK;
}
break;
}
}
void end( void)
{
exit(0);
}
void dokey(int key,int type)
{ int *x,*y,*n1;
x=&now_x[type];
y=&now_y[type];
n1=&n[type];
paint(2,type);
switch(key)
{ case ESC : exit(0);break;
case LEFT : if(judge(LEFT,type)) { move(LEFT,type);(*y)--; }
break;
case RIGHT: if(judge(RIGHT,type)) { move(RIGHT,type);(*y)++;}
break;
case UP : if(judge(*n1,type)) move(*n1,type);
break;
case DOWN : if(judge(DOWN,type)) move(DOWN,type);
break;
}
paint(0,type);
}
int downblock(int type)
{ int i,j,state=1; /* state=1 can move down, =2 can't move down */
int p; /* p record the position of block */
char temp[9]; /* store score and level */
int nline[2]={0,0};
static int total_line[2]={0,0},level_line[2]={0,0};
static long score[2]={0,0};
static int level[2]={1,1};
static int level2[2]={0,0}; /* used for level >9 */
for(i=LENGTH-1;i>=0;i--) /* judge whether can move down */
for(j=0;j<WIDTH;j++)
if(block[type][i][j]==1&&(i==LENGTH-1||block[type][i+1][j]==2))
state=0;
if(state==1) /* able to move down */
{ paint(2,type);
for(i=LENGTH-1;i>=0;i--)
for(j=WIDTH-1;j>=0;j--)
if(block[type][i][j]==1)
{ block[type][i+1][j]=1;
block[type][i][j]=0;
color[type][i+1][j]=color[type][i][j];
color[type][i][j]=BLACK;
}
now_x[type]++;
paint(0,type);
}
else /* unable to move down */
{ for(i=0;i<LENGTH;i++)
{ int count=0;
for(j=0;j<WIDTH;j++)
{ if(block[type][i][j]==1)
{ block[type][i][j]=2;p=i; }
if(block[type][i][j]!=0) count++;
}
if(count==10) /* clear a line */
{ nline[type]++;
level_line[type]++;
total_line[type]++;
for(j=0;j<WIDTH;j++)
{ block[type][i][j]=BLACK;
color[type][i][j]=0;
}
}
}
paint(1,type);
delay(500);
score[type]+=5*(LENGTH-p)*level[type];
if(nline[type]!=0)
{ int k,count;
for(i=LENGTH-1;i>=0;i--) /* down all block */
{ count=0;
for(j=0;j<WIDTH;j++)
if(block[type][i][j]==0) count++;
if(count==10)
for(k=i-1;k>=0;k--)
{ count=0;
for(j=0;j<WIDTH;j++)
if(block[type][k][j]!=0) count++;
if(count!=0)
{ for(j=0;j<WIDTH;j++)
{ block[type][i][j]=block[type][k][j];
block[type][k][j]=0;
color[type][i][j]=color[type][k][j];
color[type][k][j]=BLACK;
}
break;
}
}
}
score[type]+=100*pow(2,nline[type]-1);
nline[type]=0;
sprintf(temp,"%d",total_line[type]);
setviewport(40+300*type,270,60+300*type,280,0);
clearviewport();
settextjustify(RIGHT_TEXT,BOTTOM_TEXT);
outtextxy(20,10,temp);
}
if(level_line[type]>=30)
{ if(level[type]<9)
level[type]++;
else level2[type]++;
level_line[type]=0;
sprintf(temp,"%d",level[type]+level2[type]);
setviewport(40+300*type,150,60+300*type,160,0);
clearviewport();
settextjustify(RIGHT_TEXT,BOTTOM_TEXT);
outtextxy(20,10,temp);
}
ltoa(score[type],temp,10);
setviewport(20+300*type,210,60+300*type,220,0);
clearviewport();
settextjustify(RIGHT_TEXT,BOTTOM_TEXT);
outtextxy(40,10,temp);
paint(1,type);
n[type]=*order[type]++;
if(!newblock(n[type],type))
{ if(type==USER) end();
else auto_state=DEATH;
}
}
return level[type];
}
void ai(int n)
{ int px=now_x[AUTO],py=now_y[AUTO]; /* used for ai final position */
int priority=0; /* the priority of position */
int cir=0; /* record up times */
int i,j,p,q,k,t;
switch (n)
{ case 0 : for(j=1;j<=7;j++)
for(i=0;i<18;i++)
{ if(block[AUTO][i][j-1]||block[AUTO][i][j]||block[AUTO][i][j+1]||block[AUTO][i][j+2])
break;
if(block[AUTO][i+1][j]||block[AUTO][i+1][j-1]||block[AUTO][i+1][j+1]||block[AUTO][i+1][j+2])
{ block[AUTO][i][j]=block[AUTO][i][j-1]=block[AUTO][i][j+1]=block[AUTO][i][j+2]=3;
if(block[AUTO][i+1][j-1]&&block[AUTO][i+1][j]&&block[AUTO][i+1][j+1]&&block[AUTO][i+1][j+2]||cal_nline()==1)
cal_pri(i,j,&priority,&px,&py,&cir,0);
clear();
break;
}
}
for(j=0;j<10;j++)
for(i=1;i<16;i++)
{ if(block[AUTO][i+2][j]||block[AUTO][i+1][j]||block[AUTO][i][j]||block[AUTO][i-1][j])
break;
if(block[AUTO][i+3][j])
{ block[AUTO][i+1][j]=block[AUTO][i][j]=block[AUTO][i-1][j]=block[AUTO][i+2][j]=3;
cal_pri(i,j,&priority,&px,&py,&cir,1);
clear();
break;
}
}
write_path(px,py,cir);
break;
case 1: for(j=0;j<=8;j++)
for(i=1;i<17;i++)
{ if(block[AUTO][i+1][j+1]||block[AUTO][i][j+1]||block[AUTO][i][j]||block[AUTO][i-1][j])
break;
if(block[AUTO][i+1][j]!=0)
{ block[AUTO][i-1][j]=block[AUTO][i][j]=block[AUTO][i][j+1]=block[AUTO][i+1][j+1]=3;
if(block[AUTO][i+2][j+1]||cal_nline()==2)
cal_pri(i,j,&priority,&px,&py,&cir,0);
clear();
break;
}
}
for(j=1;j<=8;j++)
for(i=1;i<18;i++)
{ if(block[AUTO][i][j-1]||block[AUTO][i-1][j+1]||block[AUTO][i][j]||block[AUTO][i-1][j])
break;
if(block[AUTO][i+1][j]!=0)
{ block[AUTO][i-1][j]=block[AUTO][i-1][j+1]=block[AUTO][i][j-1]=block[AUTO][i][j]=3;
if(block[AUTO][i+1][j-1]&&block[AUTO][i][j+1]||block[AUTO][i][j+1]&&cal_nline()==1)
cal_pri(i,j,&priority,&px,&py,&cir,1);
clear();
break;
}
}
write_path(px,py,cir);
break;
case 2: for(j=1;j<=9;j++)
for(i=1;i<17;i++)
{ if(block[AUTO][i+1][j-1]||block[AUTO][i][j-1]||block[AUTO][i][j]||block[AUTO][i-1][j])
break;
if(block[AUTO][i+1][j]!=0)
{ block[AUTO][i-1][j]=block[AUTO][i][j]=block[AUTO][i][j-1]=block[AUTO][i+1][j-1]=3;
if(block[AUTO][i+2][j-1]||cal_nline()==2)
cal_pri(i,j,&priority,&px,&py,&cir,0);
clear();
break;
}
}
for(j=1;j<=8;j++)
for(i=1;i<18;i++)
{ if(block[AUTO][i][j+1]||block[AUTO][i-1][j-1]||block[AUTO][i][j]||block[AUTO][i-1][j])
break;
if(block[AUTO][i+1][j]!=0)
{ block[AUTO][i-1][j-1]=block[AUTO][i-1][j]=block[AUTO][i][j]=block[AUTO][i][j+1]=3;
if(block[AUTO][i][j-1]&&block[AUTO][i+1][j+1]||block[AUTO][i][j-1]&&cal_nline()==1)
cal_pri(i,j,&priority,&px,&py,&cir,1);
clear();
break;
}
}
write_path(px,py,cir);
break;
case 3: for(j=1;j<=8;j++)
for(i=0;i<17;i++)
{ if(block[AUTO][i+1][j-1]||block[AUTO][i][j+1]||block[AUTO][i][j-1]||block[AUTO][i][j])
break;
if(block[AUTO][i+1][j]||block[AUTO][i+1][j+1])
{ block[AUTO][i][j-1]=block[AUTO][i][j]=block[AUTO][i][j+1]=block[AUTO][i+1][j-1]=3;
if(block[AUTO][i+2][j-1]&&block[AUTO][i+1][j+1]&&block[AUTO][i+1][j]||cal_nline()==2||cal_nline()==1&&block[AUTO][i+2][j-1])
cal_pri(i,j,&priority,&px,&py,&cir,0);
clear();
break;
}
}
for(j=0;j<=8;j++)
for(i=1;i<17;i++)
{ if(block[AUTO][i+1][j]||block[AUTO][i+1][j+1]||block[AUTO][i][j]||block[AUTO][i-1][j])
break;
if(block[AUTO][i+2][j]!=0)
{ block[AUTO][i-1][j]=block[AUTO][i][j]=block[AUTO][i+1][j]=block[AUTO][i+1][j+1]=3;
if(block[AUTO][i+2][j+1]||cal_nline()==1)
cal_pri(i,j,&priority,&px,&py,&cir,1);
clear();
break;
}
}
for(j=1;j<=8;j++)
for(i=1;i<18;i++)
{ if(block[AUTO][i][j-1]||block[AUTO][i][j+1]||block[AUTO][i][j]||block[AUTO][i-1][j+1])
break;
if(block[AUTO][i+1][j+1]!=0)
{ block[AUTO][i][j-1]=block[AUTO][i][j]=block[AUTO][i][j+1]=block[AUTO][i-1][j+1]=3;
if(block[AUTO][i+1][j-1]&&block[AUTO][i+1][j]||cal_nline()==1)
cal_pri(i,j,&priority,&px,&py,&cir,2);
clear();
break;
}
}
for(j=1;j<=9;j++)
for(i=1;i<17;i++)
{ if(block[AUTO][i-1][j-1]||block[AUTO][i-1][j]||block[AUTO][i][j]||block[AUTO][i+1][j])
break;
if(block[AUTO][i+2][j]||block[AUTO][i][j-1])
{ block[AUTO][i-1][j-1]=block[AUTO][i-1][j]=block[AUTO][i][j]=block[AUTO][i+1][j]=3;
if(block[AUTO][i][j-1]&&block[AUTO][i+1][j-1]&&block[AUTO][i+2][j]||cal_nline()==3||cal_nline()==2&&block[AUTO][i+2][j])
cal_pri(i,j,&priority,&px,&py,&cir,3);
clear();
break;
}
}
write_path(px,py,cir);
break;
case 4: for(j=1;j<=8;j++)
for(i=0;i<17;i++)
{ if(block[AUTO][i+1][j+1]||block[AUTO][i][j-1]||block[AUTO][i][j]||block[AUTO][i][j+1])
break;
if(block[AUTO][i+1][j]||block[AUTO][i+1][j-1])
{ block[AUTO][i][j-1]=block[AUTO][i][j]=block[AUTO][i][j+1]=block[AUTO][i+1][j+1]=3;
if(block[AUTO][i+2][j+1]&&block[AUTO][i+1][j]&&block[AUTO][i+1][j-1]||cal_nline()==2)
cal_pri(i,j,&priority,&px,&py,&cir,0);
clear();
break;
}
}
for(j=0;j<=8;j++)
for(i=1;i<17;i++)
{ if(block[AUTO][i+1][j]||block[AUTO][i-1][j+1]||block[AUTO][i][j]||block[AUTO][i-1][j])
break;
if(block[AUTO][i+2][j]||block[AUTO][i][j+1])
{ block[AUTO][i-1][j]=block[AUTO][i][j]=block[AUTO][i+1][j]=block[AUTO][i-1][j+1]=3;
if(block[AUTO][i+1][j+1]&&block[AUTO][i][j+1]&&block[AUTO][i+2][j]||cal_nline()==3||cal_nline()==2&&block[AUTO][i+2][j])
cal_pri(i,j,&priority,&px,&py,&cir,1);
clear();
break;
}
}
for(j=1;j<=8;j++)
for(i=1;i<18;i++)
{ if(block[AUTO][i][j-1]||block[AUTO][i][j+1]||block[AUTO][i][j]||block[AUTO][i-1][j-1])
break;
if(block[AUTO][i+1][j]||block[AUTO][i+1][j-1]||block[AUTO][i+1][j+1])
{ block[AUTO][i][j-1]=block[AUTO][i][j]=block[AUTO][i][j+1]=block[AUTO][i-1][j-1]=3;
if(block[AUTO][i+1][j-1]&&block[AUTO][i+1][j+1]&&block[AUTO][i+1][j]||cal_nline()==1&&block[AUTO][i+1][j-1])
cal_pri(i,j,&priority,&px,&py,&cir,2);
clear();
break;
}
}
for(j=1;j<=9;j++)
for(i=1;i<17;i++)
{ if(block[AUTO][i+1][j-1]||block[AUTO][i+1][j]||block[AUTO][i][j]||block[AUTO][i-1][j])
break;
if(block[AUTO][i+2][j]!=0)
{ block[AUTO][i+1][j-1]=block[AUTO][i-1][j]=block[AUTO][i][j]=block[AUTO][i+1][j]=3;
if(block[AUTO][i+2][j-1]||cal_nline()==1)
cal_pri(i,j,&priority,&px,&py,&cir,3);
clear();
break;
}
}
write_path(px,py,cir);
break;
case 5: for(j=0;j<=8;j++)
for(i=0;i<17;i++)
{ if(block[AUTO][i][j]||block[AUTO][i+1][j]||block[AUTO][i][j+1]||block[AUTO][i+1][j+1])
break;
if(block[AUTO][i+2][j]||block[AUTO][i+2][j+1])
{ block[AUTO][i][j]=block[AUTO][i+1][j]=block[AUTO][i][j+1]=block[AUTO][i+1][j+1]=3;
if(block[AUTO][i+2][j+1]&&block[AUTO][i+2][j]||cal_nline()==2)
cal_pri(i,j,&priority,&px,&py,&cir,0);
clear();
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -