⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elsfk.c

📁 俄罗斯方块的小游戏
💻 C
📖 第 1 页 / 共 4 页
字号:
                    i--;
                }
                else if((shape==11)&&(xorigin+60<460)&&((a[x+3][i]||a[x+3][i+1]\
                        )==0))
                {
                    xorigin+=20;
                    i--;
                }
                else if((shape==12)&&(xorigin+40<460)&&((a[x+1][i]||a[x+1][i+1]\
                        ||a[x+2][i+2])==0))
                {
                    xorigin+=20;
                    i--;
                }
                else if((shape==13)&&(xorigin+60<460)&&((a[x+3][i]||a[x+1][i+1]\
                        )==0))
                {
                    xorigin+=20;
                    i--;
                }
                break;
                case 's': /*上*/
                case 'S':
                {
                    down=1;
                }
                break;
                case 'w':    /*change*/
                case 'W':
                {
                   if( (shape==1)&&((xorigin-40)>=160)&&((a[x-2][i]||a[x-1][i]\
                      ||a[x][i]||a[x+1][i])==0))
                   {
                       shape=2;
                       xorigin-=40;
                       i--;
                       break;
                   }
                   else if((shape==2)&&((i*20+80)<=460)&&((a[x+2][i+1]||a[x+2][i+2]\
                       ||a[x+2][i+3])==0))
                   {
                       shape=1;
                       xorigin+=40;
                       i--;
                       break;
                   }
                   else if((shape==3)&&((a[x+1][i+2]||a[x+2][i+2])==0)&&(\
                            xorigin+60<=460))
                   {
                       shape=4;
                       break;
                   }
                   else if((shape==4)&&((a[x][i+1]||a[x+1][i-1])==0))
                   {
                       shape=3;
                       i--;
                       break;
                   }
                   else if((shape==5)&&(20*i+60<=460)&&(a[x+1][i+2]==0))
                   {
                       shape=6;
                       xorigin+=20;
                       i--;
                       break;
                   }
                   else if((shape==6)&&(xorigin-20>=160)&&(a[x-1][i+1]==0))
                   {
                       shape=7;
                       xorigin-=20;
                       i--;
                       break;
                   }
                   else if(shape==7)
                   {
                       shape=8;
                       i--;
                   }
                   else if((shape==8)&&(xorigin+60<=460)&&(a[x+2][i+1]==0))
                   {
                       shape=5;
                       i--;
                       break;

                   }
                   else if(shape==9)
                   {
                       break;
                   }
                   else if((shape==10)&&(xorigin>160)&&((a[x][i+1]||a[x-1][i+1]\
                            )==0))
                   {
                       shape=11;
                       i--;
                       xorigin-=20;
                       break;
                   }
                   else if((shape==11)&&(20*(i+2)<480)&&((a[x+1][i]||\
                            a[x+1][i+2]||a[x+2][i+2])==0))
                   {
                       shape=12;
                       i--;
                       xorigin-=20;
                       break;
                   }
                   else if((shape==12)&&(xorigin+40<460)&&((a[x+1][i+1]||\
                            a[x+2][i+1])==0))
                   {
                       shape=13;
                       break;
                   }
                   else if((shape==13)&&((a[x][i-1]||a[x+1][i-1]||a[x+1][i+1])\
                            ==0))
                   {
                       shape=10;
                       i--;
                       break;
                   }
                }
            }
        }
    }
    down=0;
    i--;
    switch(shape)
    {
        case 1:
        putimage(xorigin,20*i,buffer1,COPY_PUT);
        putimage(xorigin,20*(i+1),buffer1,COPY_PUT);
        putimage(xorigin,20*(i+2),buffer1,COPY_PUT);
        putimage(xorigin,20*(i+3),buffer1,COPY_PUT);
        a[x][i]=a[x][i+1]=a[x][i+2]=a[x][i+3]=1;
        break;
        case 2:
        putimage(xorigin,20*i,buffer1,COPY_PUT);
        putimage(xorigin+20,20*i,buffer1,COPY_PUT);
        putimage(xorigin+40,20*i,buffer1,COPY_PUT);
        putimage(xorigin+60,20*i,buffer1,COPY_PUT);
        a[x][i]=a[x+1][i]=a[x+2][i]=a[x+3][i]=1;
        break;
        case 3:
        putimage(xorigin+20,20*i,buffer1,COPY_PUT);
        putimage(xorigin,20*(i+1),buffer1,COPY_PUT);
        putimage(xorigin+20,20*(i+1),buffer1,COPY_PUT);
        putimage(xorigin,20*(i+2),buffer1,COPY_PUT);
        a[x+1][i]=a[x][i+1]=a[x+1][i+1]=a[x][i+2]=1;
        break;
        case 4:
        putimage(xorigin,20*i,buffer1,COPY_PUT);
        putimage(xorigin+20,20*i,buffer1,COPY_PUT);
        putimage(xorigin+20,20*(i+1),buffer1,COPY_PUT);
        putimage(xorigin+40,20*(i+1),buffer1,COPY_PUT);
        a[x][i]=a[x+1][i]=a[x+1][i+1]=a[x+2][i+1]=1;
        break;
        case 5:
        putimage(xorigin+20,20*i,buffer1,COPY_PUT);
        putimage(xorigin,20*(i+1),buffer1,COPY_PUT);
        putimage(xorigin+20,20*(i+1),buffer1,COPY_PUT);
        putimage(xorigin+40,20*(i+1),buffer1,COPY_PUT);
        a[x+1][i]=a[x][i+1]=a[x+1][i+1]=a[x+2][i+1]=1;
        break;
        case 6:
        putimage(xorigin,20*i,buffer1,COPY_PUT);
        putimage(xorigin,20*(i+1),buffer1,COPY_PUT);
        putimage(xorigin,20*(i+2),buffer1,COPY_PUT);
        putimage(xorigin+20,20*(i+1),buffer1,COPY_PUT);
        a[x][i]=a[x][i+1]=a[x+1][i+1]=a[x][i+2]=1;
        break;
        case 7:
        putimage(xorigin,20*i,buffer1,COPY_PUT);
        putimage(xorigin+20,20*i,buffer1,COPY_PUT);
        putimage(xorigin+40,20*i,buffer1,COPY_PUT);
        putimage(xorigin+20,20*(i+1),buffer1,COPY_PUT);
        a[x][i]=a[x+1][i]=a[x+2][i]=a[x+1][i+1]=1;
        break;
        case 8:
        putimage(xorigin,20*(i+1),buffer1,COPY_PUT);
        putimage(xorigin+20,20*i,buffer1,COPY_PUT);
        putimage(xorigin+20,20*(i+1),buffer1,COPY_PUT);
        putimage(xorigin+20,20*(i+2),buffer1,COPY_PUT);
        a[x][i+1]=a[x+1][i]=a[x+1][i+1]=a[x+1][i+2]=1;
        break;
        case 9:
        putimage(xorigin,20*i,buffer1,COPY_PUT);
        putimage(xorigin+20,20*i,buffer1,COPY_PUT);
        putimage(xorigin,20*(i+1),buffer1,COPY_PUT);
        putimage(xorigin+20,20*(i+1),buffer1,COPY_PUT);
        a[x][i]=a[x+1][i]=a[x][i+1]=a[x+1][i+1]=1;
        break;
        case 10:
        putimage(xorigin,20*i,buffer1,COPY_PUT);
        putimage(xorigin+20,20*i,buffer1,COPY_PUT);
        putimage(xorigin+20,20*(i+1),buffer1,COPY_PUT);
        putimage(xorigin+20,20*(i+2),buffer1,COPY_PUT);
        a[x][i]=a[x+1][i]=a[x+1][i+1]=a[x+1][i+2]=1;
        break;
        case 11:
        putimage(xorigin+40,20*i,buffer1,COPY_PUT);
        putimage(xorigin,20*(i+1),buffer1,COPY_PUT);
        putimage(xorigin+20,20*(i+1),buffer1,COPY_PUT);
        putimage(xorigin+40,20*(i+1),buffer1,COPY_PUT);
        a[x][i+1]=a[x+1][i+1]=a[x+2][i+1]=a[x+2][i]=1;
        break;
        case 12:
        putimage(xorigin,20*i,buffer1,COPY_PUT);
        putimage(xorigin,20*(i+1),buffer1,COPY_PUT);
        putimage(xorigin,20*(i+2),buffer1,COPY_PUT);
        putimage(xorigin+20,20*(i+2),buffer1,COPY_PUT);
        a[x][i]=a[x][i+1]=a[x][i+2]=a[x+1][i+2]=1;
        break;
        case 13:
        putimage(xorigin,20*i,buffer1,COPY_PUT);
        putimage(xorigin+20,20*i,buffer1,COPY_PUT);
        putimage(xorigin+40,20*i,buffer1,COPY_PUT);
        putimage(xorigin,20*(i+1),buffer1,COPY_PUT);
        a[x][i]=a[x+1][i]=a[x+2][i]=a[x][i+1]=1;
        break;

    }
    /*check the line is full?*/
    {
        int i;
        for(i=23;i>=0;i--)
        if((a[0][i]&&a[1][i]&&a[2][i]&&a[3][i]&&a[4][i]&&a[5][i]&&a[6][i]&& \
        a[7][i]&a[8][i]&&a[9][i]&&a[10][i]&&a[11][i]&&a[12][i]&&a[13][i]&&  \
        a[14][i])==1)
            {
    
                process(i,a,buffer3);
                i++;
                score+=100;
                sprintf(scorestr,"%-ld",score);
                bar(20,220,50,240);
                setcolor(RED);
                outtextxy(20,220,scorestr);
            }
    }
    {
        int i;
        for(i=0;i<15;i++)
        {
            if(a[i][0]==1)
                goto K;
        }
    }



    }/*for  while*/


    K:
    bar(198,200,400,250);
    outtextxy(250,210,"GAME OVER!");
    outtextxy(200,230,"Press any key to exit");
    getch();
    free(buffer1);
    free(buffer2);
    free(buffer3);
    closegraph();
}


void process(int i,int a[15][24],char *buffer1)
{
    int j,k;
    long size;
    char *buffer2;
    size=imagesize(160,i*20,460,(i+1)*20);
    buffer2=(char *)malloc(size);
    /*getimage(160,i*20,460,(i+1)*20,buffer2) */
    for(j=0;j<3;j++)
    {
        putimage(160,i*20,buffer1,XOR_PUT);
        delay(65535);
    }
    putimage(160,i*20,buffer1,COPY_PUT);
    delay(65535);
    for(j=i-1;j>=0;j--)
    {
        getimage(160,j*20,460,j*20+20,buffer2);
        /*putimage(160,j*20,buffer1,COPY_PUT); */
        putimage(160,j*20+20,buffer2,COPY_PUT);
        a[0][j+1]=a[0][j];
        a[1][j+1]=a[1][j];
        a[2][j+1]=a[2][j];
        a[3][j+1]=a[3][j];
        a[4][j+1]=a[4][j];
        a[5][j+1]=a[5][j];
        a[6][j+1]=a[6][j];
        a[7][j+1]=a[7][j];
        a[8][j+1]=a[8][j];
        a[9][j+1]=a[9][j];
        a[10][j+1]=a[10][j];
        a[11][j+1]=a[11][j];
        a[12][j+1]=a[12][j];
        a[13][j+1]=a[13][j];
        a[14][j+1]=a[14][j];



    }
    a[0][0]=a[1][0]=a[2][0]=a[3][0]=a[4][0]=a[5][0]=a[6][0]=a[7][0]=a[8][0]=\
    a[9][0]=a[10][0]=a[11][0]=a[12][0]=a[13][0]=a[14][0]=0;
    putimage(160,0,buffer1,COPY_PUT);
    free(buffer2);
}

    


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -