• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • c語言圖形小游戲(俄羅斯方塊)

    發表于:2007-04-28來源:作者:點擊數: 標簽:游戲測試方塊俄羅斯#include圖形
    #include s td io.h #include stdlib.h #includegraphics.h int Mark[32][13]; int flag=0; void InitMark() /*init the cap */ {int i,j; for(i=1;i31;i++) for(j=1;j11;j++) Mark[i][j]=0; for(j=0;j13;j++) {Mark[0][j]=1; Mark[31][j]=1; } for(i=1;i31;

    #include <stdio.h>
    #include <stdlib.h>
    #include<graphics.h>
    int Mark[32][13];
    int flag=0;
    void InitMark() /*init the cap */
    {int i,j;
     for(i=1;i<31;i++)
      for(j=1;j<11;j++)
       Mark[i][j]=0;
     for(j=0;j<13;j++)
      {Mark[0][j]=1;
       Mark[31][j]=1;
      }
     for(i=1;i<31;i++)
     {Mark[i][0]=1;
      Mark[i][11]=1;
      Mark[i][12]=0;
     }
    }


    void Draw1(int x,int y)      /*draw the long bock*/
    {setfillstyle(1,2);
     bar(x-9,y+1,x-1,y+9);Mark[(y-90)/10][(x-100)/10]=1;Mark[(y-90)/10][12]++;
     bar(x+1,y+1,x+9,y+9);Mark[(y-90)/10][(x-90)/10]=1; Mark[(y-90)/10][12]++;
     bar(x+11,y+1,x+19,y+9);Mark[(y-90)/10][(x-80)/10]=1;Mark[(y-90)/10][12]++;
     bar(x+21,y+1,x+29,y+9);Mark[(y-90)/10][(x-70)/10]=1;Mark[(y-90)/10][12]++;
    }

    void Draw1_1(int x,int y)/*覆蓋上一個長形方塊*/
    {setfillstyle(1,BLACK);
     bar(x-9,y+1,x+29,y+10);
     Mark[(y-90)/10][(x-100)/10]=0;Mark[(y-90)/10][12]--;
     Mark[(y-90)/10][(x-90)/10]=0;Mark[(y-90)/10][12]--;
     Mark[(y-90)/10][(x-80)/10]=0;Mark[(y-90)/10][12]--;
     Mark[(y-90)/10][(x-70)/10]=0;Mark[(y-90)/10][12]--;
    }

    void Draw1_2(int x,int y)/*The up long Block*/
    {setfillstyle(1,2);
     bar(x+1,y-9,x+9,y-1);Mark[(y-100)/10][(x-90)/10]=1;Mark[(y-100)/10][12]++;
     bar(x+1,y+1,x+9,y+9);Mark[(y-90)/10][(x-90)/10]=1;Mark[(y-90)/10][12]++;
     bar(x+1,y+11,x+9,y+19);Mark[(y-80)/10][(x-90)/10]=1;Mark[(y-80)/10][12]++;
     bar(x+1,y+21,x+9,y+29);Mark[(y-70)/10][(x-90)/10]=1;Mark[(y-70)/10][12]++;
    }

    void Draw1_3(int x,int y) /*cover the Long Block*/
    {setfillstyle(1,BLACK);
     bar(x+1,y-9,x+9,y+29);
     Mark[(y-100)/10][(x-90)/10]=0;Mark[(y-100)/10][12]--;
     Mark[(y-90)/10][(x-90)/10]=0;Mark[(y-90)/10][12]--;
     Mark[(y-80)/10][(x-90)/10]=0;Mark[(y-80)/10][12]--;
     Mark[(y-70)/10][(x-90)/10]=0;Mark[(y-70)/10][12]--;
    }

    void Draw2(int x,int y)      /*draw the Tian bock*/
    {setfillstyle(1,3);
     bar(x-9,y+1,x-1,y+9);Mark[(y-90)/10][(x-100)/10]=1;Mark[(y-90)/10][12]++;
     bar(x+1,y+1,x+9,y+9);Mark[(y-90)/10][(x-90)/10]=1; Mark[(y-90)/10][12]++;
     bar(x-9,y+11,x-1,y+19);Mark[(y-80)/10][(x-100)/10]=1;Mark[(y-80)/10][12]++;
     bar(x+1,y+11,x+9,y+19);Mark[(y-80)/10][(x-90)/10]=1;Mark[(y-80)/10][12]++;
    }

    void Draw2_1(int x,int y)   /*cover the Tian bock*/
    {setfillstyle(1,BLACK);
     bar(x-9,y+1,x+9,y+19);
     Mark[(y-90)/10][(x-100)/10]=0;Mark[(y-90)/10][12]--;
     Mark[(y-90)/10][(x-90)/10]=0; Mark[(y-90)/10][12]--;
     Mark[(y-80)/10][(x-100)/10]=0;Mark[(y-80)/10][12]--;
     Mark[(y-80)/10][(x-90)/10]=0;Mark[(y-80)/10][12]--;
    }

    void Draw3(int x,int y)
    {setfillstyle(1,4);
     bar(x-9,y+1,x-1,y+9);Mark[(y-90)/10][(x-100)/10]=1;Mark[(y-90)/10][12]++;
     bar(x+1,y+1,x+9,y+9);Mark[(y-90)/10][(x-90)/10]=1; Mark[(y-90)/10][12]++;
     bar(x+1,y+11,x+9,y+9);Mark[(y-80)/10][(x-90)/10]=1;Mark[(y-80)/10][12]++;
     bar(x+11,y+11,x+19,y+19);Mark[(y-80)/10][(x-80)/10]=1;Mark[(y-90)/10][12]++;
    }
    void Draw3_1(int x,int y)
    {setfillstyle(1,BLACK);
     bar(x-10,y,x+10,y+10);
     Mark[(y-90)/10][(x-100)/10]=0;Mark[(y-90)/10][12]--;
     Mark[(y-90)/10][(x-90)/10]=0; Mark[(y-90)/10][12]--;
     bar(x,y+10,x+20,y+20);
     Mark[(y-80)/10][(x-90)/10]=0;Mark[(y-80)/10][12]--;
     Mark[(y-80)/10][(x-80)/10]=0;Mark[(y-90)/10][12]--;
    }


    void Screen()
    {
     rectangle(100,100,200,400);
     rectangle(250,150,300,200);
    }

    int Block()
    {int i,j;
     i=flag;
     flag=random(3);

    switch(flag)
     {case 0:setfillstyle(1,BLACK);
      bar(251,151,299,199);
      setfillstyle(1,RED);
             bar(256,171,264,179);
      bar(266,171,274,179);
      bar(276,171,284,179);
      bar(286,171,294,179);
      break;
      case 1:setfillstyle(1,BLACK);
      bar(251,151,299,199);
             setfillstyle(1,RED);
             bar(271,156,279,164);
      bar(271,166,279,174);
      bar(271,176,279,184);
      bar(271,186,279,194);
             break;
      case 2:setfillstyle(1,BLACK);
      bar(251,151,299,199);
             setfillstyle(1,RED);
             bar(266,156,274,164);
      bar(276,156,284,164);
      bar(266,166,274,174);
      bar(276,166,284,174);
             break;
     }
     return i;
    }

    int Control(int CH,int x,int y)
    {int key;

     switch(CH)
     {case 0:/*對平放長操作*/
      Draw1(x,y);
      while(Mark[(y-80)/10][(x-100)/10]==0&&Mark[(y-80)/10][(x-90)/10]==0&&Mark[(y-80)/10][(x-80)/10]==0&&Mark[(y-80)/10][(x-70)/10]==0)
      {
       if(kbhit())
       {key=getch();
       if(key==75&&Mark[(y-90)/10][(x-110)/10]==0) {Draw1_1(x,y);x-=10;Draw1(x,y);}
       else if(key==77&&Mark[(y-90)/10][(x-60)/10]==0) {Draw1_1(x,y);x+=10;Draw1(x,y);}
      else if(key==32&&Mark[(y-100)/10][(x-90)/10]==0&&Mark[(y-80)/10][(x-90)/10]==0&&Mark[(y-70)/10][(x-90)/10]==0)  {Draw1_1(x,y);Control(1,x,y);break;}
           else if(key==80&&Mark[(y-80)/10][(x-100)/10]==0&&Mark[(y-80)/10][(x-90)/10]==0&&Mark[(y-80)/10][(x-80)/10]==0&&Mark[(y-80)/10][(x-70)/10]==0)
                 {Draw1_1(x,y);
                  while(Mark[(y-80)/10][(x-100)/10]==0&&Mark[(y-80)/10][(x-90)/10]==0&&Mark[(y-80)/10][(x-80)/10]==0&&Mark[(y-80)/10][(x-70)/10]==0)
                              {y+=10;
                              }
                  Draw1(x,y);
                  break;
                  }
            else if(key==27){return 27;}
       }
       Draw1_1(x,y);
       y+=10;
       Draw1(x,y);
        delay(10000000000);
      }
      break;
      case 1: /*對豎放長操作*/
      Draw1_2(x,y);
      while(Mark[(y-60)/10][(x-90)/10]==0)
      {
       if(kbhit())
       {key=getch();
        if(key==75&&Mark[(y-100)/10][(x-100)/10]==0&&Mark[(y-90)/10][(x-100)/10]==0&&Mark[(y-80)/10][(x-100)]==0&&Mark[(y-70)/10][(x-100)/10]==0)
        {Draw1_3(x,y);x-=10;Draw1_2(x,y);}
        else if(key==77&&Mark[(y-100)/10][(x-80)/10]==0&&Mark[(y-90)/10][(x-80)/10]==0&&Mark[(y-80)/10][(x-80)/10]==0&&Mark[(y-70)/10][(x-80)/10]==0)
        {Draw1_3(x,y);x+=10;Draw1_2(x,y);}
       else if(key==32&&Mark[(y-90)/10][(x-100)/10]==0&&Mark[(y-90)/10][(x-80)/10]==0&&Mark[(y-70)/10][(x-70)/10]==0) {Draw1_3(x,y);Control(0,x,y);break;}
            else if(key==80&&Mark[(y-60)/10][(x-90)/10]==0)
                 {Draw1_3(x,y);
                  while(Mark[(y-60)/10][(x-90)/10]==0)
                              {y+=10;
                              }
                  Draw1_2(x,y);
                  break;
                  }
             else if(key==27) {return 27;}
       }
       Draw1_3(x,y);/*cover the before Up Block*/
       y+=10;
       Draw1_2(x,y);
       delay(10000000000);
       }
             break;
      case 2:Draw2(x,y);/*對田方處理*/
      while(Mark[(y-70)/10][(x-90)/10]==0&&Mark[(y-70)/10][(x-100)/10]==0)
      {
       if(kbhit())
       {key=getch();
       if(key==75&&Mark[(y-90)/10][(x-110)/10]==0&&Mark[(y-80)/10][(x-110)/10]==0) {Draw2_1(x,y);x-=10;Draw2(x,y);}
       else if(key==77&&Mark[(y-90)/10][(x-80)/10]==0&&Mark[(y-80)/10][(x-80)/10]==0) {Draw2_1(x,y);x+=10;Draw2(x,y);}
      else if(key==80&&Mark[(y-70)/10][(x-100)/10]==0&&Mark[(y-70)/10][(x-90)/10]==0)
                 {Draw2_1(x,y);
                  while(Mark[(y-70)/10][(x-90)/10]==0&&Mark[(y-70)/10][(x-100)/10]==0)
                              {y+=10;
                              }
                  Draw2(x,y);
                  break;
                  }
            else if(key==27){return 27;}
       }
       Draw2_1(x,y);
       y+=10;
       Draw2(x,y);
        delay(10000000000);
      }
          break;
      case 3:Draw3(x,y);  /*left Tian design*/
      while(Mark[(y-70)/10][(x-90)/10]==0&&Mark[(y-70)/10][(x-80)/10]==0&&Mark[(y-80)/10][(x-100)/10]==0)
      {
       if(kbhit())
       {key=getch();
       if(key==75&&Mark[(y-90)/10][(x-110)/10]==0&&Mark[(y-80)/10][(x-100)/10]==0) {Draw3_1(x,y);x-=10;Draw3(x,y);}
       else if(key==77&&Mark[(y-90)/10][(x-80)/10]==0&&Mark[(y-80)/10][(x-70)/10]==0) {Draw3_1(x,y);x+=10;Draw3(x,y);}
      else if(key==32&&Mark[(y-90)/10][(x-110)/10]==0&&Mark[(y-80)/10][(x-90)/10]==0&&Mark[(y-70)/10][(x-90)/10]==0)  {Draw3_1(x,y);Control(4,x,y);break;}
           else if(key==80&&Mark[(y-80)/10][(x-100)/10]==0&&Mark[(y-80)/10][(x-90)/10]==0&&Mark[(y-80)/10][(x-80)/10]==0&&Mark[(y-80)/10][(x-70)/10]==0)
                 {Draw1_1(x,y);
                  while(Mark[(y-80)/10][(x-100)/10]==0&&Mark[(y-80)/10][(x-90)/10]==0&&Mark[(y-80)/10][(x-80)/10]==0&&Mark[(y-80)/10][(x-70)/10]==0)
                              {y+=10;
                              }
                  Draw1(x,y);
                  break;
                  }
            else if(key==27){return 27;}
       }
       Draw1_1(x,y);
       y+=10;
       Draw1(x,y);
        delay(10000000000);
      }
       break;
      case 4:break;
      case 5:break;
      case 6:break;
     }
    }
    void Delete()
    {int y,y1,x;
     for(y=1;y<=30;y++)
     {if(Mark[y][12]==10)
      {for(y1=y;y1>1;y1--)
        Mark[y1][12]=Mark[y1-1][12];
        Mark[1][12]=0;
       for(y1=y;y1>1;y1--)
        for(x=1;x<=10;x++)
         Mark[y1][x]=Mark[y1-1][x];
       for(x=1;x<=10;x++)
         Mark[1][x]=0;
      setfillstyle(1,BLACK);
      bar(101,101,199,399);
      for(y1=1;y1<=30;y1++)
       for(x=1;x<=10;x++)
        if(Mark[y1][x]==1)
        {setfillstyle(1,2);
         bar(x*10+91,y1*10+91,x*10+99,y1*10+99);
        }
      }
     }
    }

    int Gameover()
    {if(Mark[1][12]>=1&&Mark[2][12]>=1&&Mark[3][12]>=1&&Mark[4][12]>=1&&Mark[5][12]>=1) return 1;
     else return 0;
    }

    void main()
    {  int gd,gm,CH,NC,OFF=0;
       gd=DETECT;
       initgraph(&gd,&gm,"");
       randomize();
       InitMark();
       NC=0;
       Screen();  /*屏幕設置*/
       flag=random(3);
       while(1)
       {
        CH=Block();
        NC=Control(CH,140,110);  /*控制圖形函數*/

       if(NC==27) break;
       Delete();
       OFF=Gameover();
       if(OFF) break;
       }
       getch();
       cleardevice();
       closegraph();
    }
    



    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>