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

📄 elsfk.c

📁 俄罗斯方块的小游戏
💻 C
📖 第 1 页 / 共 4 页
字号:
  0x00,0x03,0x80,0x01,0x90,0x00,0x00,0x00,
  0x00,0x0F,0x00,0x03,0x88,0x00,0x00,0x00,
  0x00,0x3E,0x00,0x03,0x04,0x00,0x00,0x00,
  0x00,0x78,0x00,0x07,0x02,0x00,0x00,0x00,
  0x01,0xF0,0x00,0x06,0x03,0x00,0x00,0x00,
  0x0F,0xE0,0x00,0x0E,0x01,0x80,0x00,0x00,
  0x07,0xC0,0x00,0x0C,0x00,0xC0,0x00,0x00,
  0x03,0x80,0x00,0x18,0x00,0x70,0x00,0x00,
  0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,
  0x00,0x00,0x00,0x70,0x00,0x3E,0x00,0x00,
  0x00,0x00,0x00,0xE0,0x00,0x1F,0x00,0x00,
  0x00,0x00,0x01,0x80,0x00,0x0F,0xC0,0x00,
  0x00,0x00,0x03,0x00,0x00,0x07,0xF8,0x00,
  0x00,0x00,0x06,0x00,0x00,0x07,0xFE,0x00,
  0x00,0x00,0x18,0x00,0x00,0x03,0xFF,0x80,
  0x00,0x00,0x20,0x00,0x00,0x01,0xFF,0xF0,
  0x00,0x00,0x80,0x00,0x00,0x00,0x7F,0xF0,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};
void drawmat(char *mat,int matsize,int x,int y,int color)
/*依次:字模指针、点阵大小、起始坐标(x,y)、颜色*/
{int i,j,k,n;
 n=(matsize-1)/8+1;
 for(j=0;j<matsize;j++)
  for(i=0;i<n;i++)
   for(k=0;k<8;k++)
    if(mat[j*n+i]&(0x80>>k))  /*测试为1的位则显示*/
     putpixel(x+i*8+k,y+j,color);
}



main()
{
    int time;
    int graphdriver=DETECT,graphmode,i,j,button,x;
    int xorigin=300;
    int down=0,shape,next;
    int a[15][24]={0};
    char scorestr[10];
    long score=0;
    struct fillsettingstype save;
    long size;
    char key;
    char *buffer1,*buffer2,*buffer3;
    char savepattern[8];
    char gray50[]={0xaa,0x44,0xaa,0x11,0xaa,0x44,0xaa,0x11};
    void process(int i, int a[15][],char *buffer);
    void drawmat(char *mat,int matsize,int x,int y,int color);
    /*registerbgidriver(EGAVGA_driver);  */
    initgraph(&graphdriver,&graphmode,"c:\\tc200");
    setfillstyle(SOLID_FILL,LIGHTGREEN);
    bar(495,60,565,450);
    for(i=0;i<5;i++)
    {
        drawmat(name[i],64,500,70+i*70,BLUE);
    }


    setfillpattern(gray50,9);  /*设定用户自定义图形填充模板*/
    bar(160,0,460,479);
    setfillstyle(SOLID_FILL,RED);
    bar(0,0,20,20);
    setlinestyle(SOLID_LINE,0,1);
    /*rectangle(0,0,20,20);  */
    setcolor(8);
    line(0,0,0,20);
    line(1,1,1,19);
    line(0,0,20,0);
    line(1,1,19,1);
    setcolor(15);
    line(20,0,20,20);
    line(19,1,19,19);
    line(0,20,20,20);
    line(1,19,19,19);
    size=(long)imagesize(0,0,20,20);
    buffer1=(char*)malloc(size);
    buffer2=(char*)malloc(size);
    getimage(0,0,20,20,buffer1);
    getimage(xorigin,0,320,20,buffer2);
    size=imagesize(160,0,460,20);
    buffer3=(char*)malloc(size);
    getimage(160,0,460,20,buffer3);
    next=rand()%13+1;
    setfillstyle(SOLID_FILL,BLACK);
    bar(0,0,22,22);
    setcolor(GREEN);
    settextstyle(2,0,6);
    sprintf(scorestr,"%-ld",score);
    outtextxy(20,200,"SCORE:");
    setcolor(RED);
    outtextxy(20,220,scorestr);
    setcolor(GREEN);
    while(1)
    {
    shape=next;
    next=rand()%13+1;
    /*显示next*/
    bar(30,30,130,130);
    setcolor(GREEN);
    rectangle(30,30,130,130);
    i=2;
    xorigin=40;
    switch(next)      /*显示下一个图形*/
    {
        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);
        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);
        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);
        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);
        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);
        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);
        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);
        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);
        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);
        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);
        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);
        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);
        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);
        break;

    }







    xorigin=300;
    for(i=0;i<24;i++)        /*下落*/
    {   x=(xorigin-160)/20;

        switch(shape)
        {
            case 1:
            {
                if((a[x][i+3]==0)&&((i+3)<24))
                {
                    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);

                }

                    
                break;
            }
            case 2:
            {
                if(((a[x][i]||a[x+1][i]||a[x+2][i]||a[x+3][i])==0))
                {
                    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);
                }
                break;
            }
            case 3:
            {
                if( ((a[x][i+2]||a[x+1][i+1])==0)&&((i+2)<24) )
                {
                    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);
                }
                break;
            }
            case 4:
            {
                if(((a[x][i]||a[x+1][i+1]||a[x+2][i+1])==0)&&((i+1)<24))
                {
                    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);
                }
                break;
            }
            case 5:
            {
                if(((a[x][i+1]||a[x+1][i+1]||a[x+2][i+1])==0)&&((i+1)<24))
                {
                    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);
                }
                break;
            }
            case 6:
            {
                if(((a[x][i+2]||a[x+1][i+1])==0)&&((i+2)<24))
                {
                    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);
                }
                break;
            }
            case 7:
            {
                if(((a[x][i]||a[x+1][i+1]||a[x+2][i])==0)&&((i+1)<24))
                {
                    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);
                }
                break;
            }
            case 8:
            {
                if(((a[x][i+1]||a[x+1][i+2])==0)&&((i+2)<24))
                {
                    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);
                }
                break;
            }
            case 9:
            {
                if(((a[x][i+1]||a[x+1][i+1])==0)&&((i+1)<24))
                {
                    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);
                }
                break;
            }
            case 10:
            {
                if(((a[x][i]||a[x+1][i+2])==0)&&((i+2)<24))
                {
                    putimage(xorigin,20*i,buffer1,COPY_PUT);

⌨️ 快捷键说明

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