Ad Code

Responsive Advertisement

How to make Tetris game in C...... C coding of Tetris Game....

 C Programming of Tetris Game




  1. #include <graphics.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <dos.h>
  5. #include <conio.h>

  6. void swap(int a,int b);void bar1();void bar2();
  7. void bar3();  void bar4();  check0(); check1();
  8. check2(); void del(); void rod1(); void rod2();
  9. void box1();void box2();void tee1();voidtee2();
  10. void tee3();void tee4();check3();void insert();
  11. void again();void print();void remove();void frame();
  12. int score=0,spd,q,t,a=0,i,j,l[6]={300,90,315,105,301,91},p,turn,m,n;
  13. char play='y';
  14. static int arr[26][13];
  15. void main(void)
  16. {

  17.    char ch,y;
  18.    int gd= DETECT,gm,area,maxx,maxy,move,lmove,rmove;
  19.    void *buff;
  20.    initgraph(&gd,&gm,"d:\tc\bgi");
  21. do{

  22.    turn=1;
  23.     score=0;
  24.    do{
  25.    clrscr();
  26.    cleardevice();
  27.    printf("
  28.  Enter Your Choice

  29. ");
  30.    printf(" Basic Level.......... 1
  31. ");
  32.    printf(" Middle Level......... 2
  33. ");
  34.    printf(" Advanced Level....... 3
  35. ");
  36.    printf(" Experts Level........ 4
  37. ");
  38.    printf(" Professional Level... 5
  39. ");
  40.    y=getch();
  41.    clrscr();
  42.    cleardevice();
  43.    if(y=='1') {spd=200; settextstyle(2,0,6);outtextxy(2,150,"   Basic
  44. Level ");break;}
  45.    if(y=='2') {spd=150; settextstyle(2,0,6);outtextxy(2,150,"   Middle
  46. Level ");break;}
  47.    if(y=='3') {spd=100; settextstyle(2,0,6);outtextxy(2,150,"  Advanced
  48. Level ");break;}
  49.    if(y=='4') {spd=75; settextstyle(2,0,6);outtextxy(2,150,"  Experts
  50. Level ");break;}
  51.    if(y=='5') {spd=50;  settextstyle(2,0,6);outtextxy(2,150,"Professional
  52. Level ");break;}
  53.       }while(1);

  54.    frame();
  55.    getch();
  56. int k,ar[2],pr[2],t[6];

  57. randomize();
  58. ar[0]=random(2);
  59. pr[0]=random(6);
  60. ar[1]=random(2);
  61. pr[1]=random(6);
  62. while(1)
  63. {
  64. printf(" score= %d
  65. ",score);
  66. a=ar[0];
  67. p=pr[0];
  68. l[0]=450;l[1]=250;l[2]=465;l[3]=265;l[4]=451;l[5]=251;

  69. if(y=='1') spd=100;
  70. if(y=='2') spd=75;
  71. if(y=='3') spd=50;
  72. if(y=='4') spd=30;
  73. if(y=='5') spd=20;
  74. print();

  75. delay(500);
  76. a=ar[1];
  77. p=pr[1];

  78. t[0]=l[0];  t[1]=l[1]; t[2]=l[2];
  79. t[3]=l[3];  t[4]=l[4]; t[5]=l[5];

  80. a=ar[1];
  81. p=pr[1];

  82. l[0]=270;l[1]=90;l[2]=285;l[3]=105;l[4]=271;l[5]=91;

  83. do{
  84.     k=0;
  85. if(kbhit()){ ch=getch();
  86.       if(ch==0) ch=getch();
  87.     if(ch==77) {move=check1(); if(move==0) {l[0]+=15;l[2]+=15;l[4]+=15;
  88. k=1;}}
  89.     if(ch==75) {move=check2(); if(move==0) {l[0]-=15;l[2]-=15;l[4]-=15;
  90. k=1;}}
  91.     if(ch==80) spd=10;
  92.     if(ch==27) exit(0);

  93.     if(ch==32){
  94.         k=1;
  95.         if(p==4||p==5)  switch(p)
  96.           {
  97.   case 4:  if(a==0) a++; else p++; break;
  98.   case 5:  if(a==1) a--; else p--;
  99.           }
  100.         if(p==1||p==2) switch(p)
  101.          {  case 1:  if(a==0) a++; else p++;
  102. l[0]=270;l[2]=285;l[4]=271;break;
  103.   case 2:  if(a==1) a--; else p--; l[0]=270;l[2]=285;l[4]=271;
  104. }

  105.         if(p==3)  { if(a==0) a++; else a=0;
  106.  l[0]=270;l[2]=285;l[4]=271; }

  107.      }
  108.     if(a==1)    {swap(l[0],l[1]);swap(l[2],l[3]);swap(l[4],l[5]);}
  109.   }



  110. move=check0();
  111. if(move==1) break;

  112. print();

  113. if(k==1) delay(0); else delay(spd);

  114. remove();

  115. if(k==0) {l[1]+=15; l[3]+=15; l[5]+=15;}


  116. }while(1);
  117. print();
  118. fflush(stdin);


  119. insert();

  120. check3();

  121. a=ar[0];
  122. p=pr[0];


  123. l[0]=t[0];l[1]=t[1];l[2]=t[2];l[3]=t[3];
  124. l[4]=t[4];l[5]=t[5];


  125. remove();


  126. ar[1]=ar[0];
  127. pr[1]=pr[0];


  128. ar[0]=random(2);
  129. pr[0]=random(6);

  130. if(pr[0]==2) pr[0]=3;
  131. if(turn==0) break;


  132.    }


  133.     }while(play=='y');

  134. }


  135. void swap(int a,int b)
  136. {
  137. a=a+b;
  138. b=a-b;
  139. a=a-b;
  140. }


  141. void bar1()
  142. { if(a==0&&i<1) {l[0]+=15;l[2]+=15;l[4]+=15; }
  143.   if(a==0&&i>=1){l[1]+=15;l[3]+=15;l[5]+=15; }

  144. //  if(a==1&&i==1)
  145. {l[0]-=15;l[2]-=15;l[4]-=15;l[1]-=15;l[3]-=15;l[5]-=15; }
  146.   if(a==1&&i==0) {l[1]+=15;l[3]+=15;l[5]+=15; }
  147.   if(a==1&&i>0) {l[0]-=15;l[2]-=15;l[4]-=15; }

  148.   if(a==2&&i>=2) {l[0]-=15;l[2]-=15;l[4]-=15; }
  149.   if(a==2&&i<2) {l[1]+=15;l[3]+=15;l[5]+=15; }
  150.  }




  151. void bar2()
  152. { if(a==0&&i>=3){l[0]-=15;l[2]-=15;l[4]-=15; }
  153.   if(a==0&&i<3) {l[1]-=15;l[3]-=15;l[5]-=15; }

  154.   if(a==1&&i<3) {l[0]+=15;l[2]+=15;l[4]+=15; }
  155.   if(a==1&&i==3){l[1]-=15;l[3]-=15;l[5]-=15; }

  156.   if(a==2&&i<2) {l[0]+=15;l[2]+=15;l[4]+=15;}
  157.   if(a==2&&i>=2){l[1]-=15;l[3]-=15;l[5]-=15; }
  158.    }
  159. void bar3()
  160. {if(a==0&&i>=3){l[0]+=15;l[2]+=15;l[4]+=15; }
  161.  if(a==0&&i<3){l[1]+=15;l[3]+=15;l[5]+=15; }
  162.  if(a==2&&i<2) {l[0]-=15;l[2]-=15;l[4]-=15; }
  163.  if(a==2&&i>=2) {l[1]+=15;l[3]+=15;l[5]+=15; }
  164.  if(a==1&&i>=1) {l[0]+=15;l[2]+=15;l[4]+=15; }
  165.  if(a==1&&i<1) {l[1]+=15;l[3]+=15;l[5]+=15; }
  166.    }
  167. void bar4()
  168. {if(a==0&&i<1){l[0]-=15;l[2]-=15;l[4]-=15; }
  169.  if(a==0&&i>=1) {l[1]-=15;l[3]-=15;l[5]-=15; }
  170.  if(a==2&&i>=2) {l[0]+=15;l[2]+=15;l[4]+=15; }
  171.  if(a==2&&i<2){l[1]-=15;l[3]-=15;l[5]-=15; }
  172.  if(a==1&&i<3) {l[0]-=15;l[2]-=15;l[4]-=15; }
  173.  if(a==1&&i==3) {l[1]-=15;l[3]-=15;l[5]-=15; }
  174. }
  175. void rod1()

  176. {

  177.  if(a==0) {l[0]+=15;l[2]+=15;l[4]+=15; }
  178.     else    {l[1]+=15;l[3]+=15;l[5]+=15; }
  179.   }
  180. void rod2()
  181. {

  182.  if(a==0) {l[0]-=15;l[2]-=15;l[4]-=15; }
  183.    else  {l[1]-=15;l[3]-=15;l[5]-=15; }

  184.  }
  185. void box1()
  186. {if(i<1) {l[0]-=15;l[2]-=15;l[4]-=15; }
  187.  if(i==1) {l[1]+=15;l[3]+=15;l[5]+=15; }
  188.  if(i==2) {l[0]+=15;l[2]+=15;l[4]+=15; }
  189.  }
  190. void box2()
  191. {if(i<1) {l[0]-=15;l[2]-=15;l[4]-=15; }
  192.  if(i==1) {l[1]-=15;l[3]-=15;l[5]-=15; }
  193.  if(i==2) {l[0]+=15;l[2]+=15;l[4]+=15; }
  194.  }
  195.  void tee1()
  196.  {
  197.     if(a==0&&i==1) {l[0]-=15;l[2]-=15;l[4]-=15; }
  198.     if(a==0&&i<1) {l[1]+=15;l[3]+=15;l[5]+=15; }
  199.     if(a==0&&(i==2||i==3)) {l[0]+=15;l[2]+=15;l[4]+=15; }


  200.     if(a>0&&i==2)
  201. {l[0]-=15;l[2]-=15;l[4]-=15;l[1]+=15;l[3]+=15;l[5]+=15; }
  202.     if(a>0&&i==0) {l[1]+=15;l[3]+=15;l[5]+=15; }
  203.     if(a>0&&(i==1)) {l[0]+=15;l[2]+=15;l[4]+=15; }

  204.       }
  205.   void tee2()
  206.   {
  207.     if(a==0&&i==0) {l[0]-=15;l[2]-=15;l[4]-=15; }
  208.     if(a==0&&i==1) {l[0]-=15;l[2]-=15;l[4]-=15; }
  209.     if(a==0&&i==2)
  210. {l[0]+=15;l[2]+=15;l[4]+=15;l[1]-=15;l[3]-=15;l[5]-=15; }

  211.     if(a>0&&i==2)
  212. {l[0]-=15;l[2]-=15;l[4]-=15;l[1]-=15;l[3]-=15;l[5]-=15; }
  213.     if(a>0&&i==1) {l[0]+=15;l[2]+=15;l[4]+=15; }
  214.     if(a>0&&i==0) {l[1]-=15;l[3]-=15;l[5]-=15; }


  215.       }
  216.    void tee3()
  217.    {  if(a==0&&i==0) {l[0]-=15;l[2]-=15;l[4]-=15; }
  218.       if(a==0&&i==2)
  219. {l[0]-=15;l[2]-=15;l[4]-=15;l[1]-=15;l[3]-=15;l[5]-=15; }
  220.       if(a==0&&i==1) {l[1]+=15;l[3]+=15;l[5]+=15;}


  221.       if(a>0&&i==2)
  222. {l[0]+=15;l[2]+=15;l[4]+=15;l[1]+=15;l[3]+=15;l[5]+=15; }
  223.       if(a>0&&i==0) {l[1]+=15;l[3]+=15;l[5]+=15; }
  224.       if(a>0&&(i==1)) {l[0]-=15;l[2]-=15;l[4]-=15; }
  225.    }
  226.    void tee4()
  227.    {  if(a==0&&i==1) {l[1]+=15;l[3]+=15;l[5]+=15; }
  228.       if(a==0&&i==0) {l[0]+=15;l[2]+=15;l[4]+=15; }
  229.       if(a==0&&i==2)
  230. {l[1]-=15;l[3]-=15;l[5]-=15;l[0]+=15;l[2]+=15;l[4]+=15; }

  231.       if(a>0&&i==2)
  232. {l[0]+=15;l[2]+=15;l[4]+=15;l[1]-=15;l[3]-=15;l[5]-=15; }
  233.       if(a>0&&i==0) {l[1]-=15;l[3]-=15;l[5]-=15; }
  234.       if(a>0&&i==1) {l[0]-=15;l[2]-=15;l[4]-=15; }

  235.       }

  236.  check0()
  237. { int x,y,s,d=5;

  238.    x=(l[0]-180)/15;
  239.    y=(l[1]-90)/15;
  240.    if(a==0){
  241.   switch (p)
  242.    { case 0: y+=2;d=2; if(arr[y][x-1]==1) return(1); else break;
  243.      case 1: y+=4;x++;d=1;if(arr[y-3][x-1]==1) return(1); else break;
  244.      case 2: y=y+4;d=2;x+=1;break;
  245.      case 3: y=y+1;d=5;x+=4;break;
  246.      case 4: y+=2;d=3;x++;break;
  247.      case 5: y+=1;d=3;if(arr[y+1][x-1]==1) return(1); else break;
  248.      }
  249.       for(s=1;s<d;s++,x--)
  250.       if(arr[y][x]==1) return(1);
  251.       if((arr[y][x])==0) return(0); else return(1);
  252.      }

  253.       if(a==1){
  254.      switch (p)
  255.    { case 0: y+=2;d=2; if(arr[y][x-1]==1) return(1); else break;
  256.      case 1: y=y+2;d=4;if(arr[y][x]==1) return(1); else break;
  257.      case 2: y=y+2;d=4;x+=3;if(arr[y][x-3]==1) return(1); else break;
  258.      case 3: y=y+5;d=0;break;
  259.      case 4: y+=3;d=0;if(arr[y-1][x+1]==1) return(1); else break;
  260.      case 5: y+=3;d=0;if(arr[y-1][x-1]==1) return(1); else break;
  261.    }
  262.       for(s=1;s<d;s++,x--)
  263.       if(arr[y][x]==1) break;
  264.      if((arr[y][x])==0) return(0); else return(1);
  265.        }


  266.   return(0);
  267. }


  268. check1()
  269. {  int x,y,s,d=5;

  270.    x=(l[0]-150)/15;
  271.    y=(l[1]-90)/15;

  272.    if(a==0){
  273.    switch (p)
  274.     {  case 0: x=x-1;y++;d=2;break;
  275.        case 1: x=x;d=3; y=y+3; break;
  276.        case 2: x=x;d=4;y+=3; break;
  277.        case 3: x=x+3;d=0;break;
  278.        case 4: x=x;break;
  279.        case 5: x=x-1;d=0;

  280.      }
  281.     for(s=0;s<d;s++,y--)
  282.     if(arr[y][x]==1) break;
  283.      if((arr[y][x])==0) return(0); else return(2);
  284.     }


  285.    if(a==1)
  286.    {   switch(p)
  287.    {   case 0: x=x; break;
  288.        case 1: x=x;d=1;break;
  289.        case 2: x=x+3;  break;
  290.        case 3: x=x;y+=5;d=4;break;
  291.        case 4: x=x+1;break;
  292.        case 5: x=x;y+=2;d=2;
  293.    }

  294.     for(s=0;s<d;s++,y--)
  295.     if(arr[y][x-1]==1) break;
  296.    if((arr[y][x-1])==0) return(0); else return(2);
  297.   }
  298.   return(0);
  299. }


  300. check2()
  301. {
  302.  int x,y,s,d=5;
  303.    x=(l[0]-150)/15;
  304.    y=(l[1]-90)/15;
  305.   if(a==0){
  306.    switch (p)
  307.    { case 0: x=x-1;d=1;break;
  308.      case 1: x=x;d=3;break;
  309.      case 2: x=x;d=3;break;
  310.      case 3: x=x;d=0;break;
  311.      case 4: x=x-1;d=1;break;
  312.      case 5: x=x-2;d=0;
  313.    }
  314.     for(s=0;s<d;s++,y++)
  315.     if(arr[y][x-3]==1) break;
  316.     if((arr[y][x-3])==0) return(0); else return(2);
  317.    }

  318.     if(a==1){


  319.     switch (p)
  320.    { case 0: x=x-4;d=2;break;
  321.      case 1: x=x-6;d=0;break;
  322.      case 2: x=x-3;d=2;y-=1;break;
  323.      case 3: x=x-3;d=5;break;
  324.      case 4: x-=3; d=3;break;
  325.      case 5: x-=4; d=4;
  326.     }
  327.     for(s=1;s<d;s++,y++)
  328.     if(arr[y][x]==1) break;
  329.      if((arr[y][x])==0) return(0); else return(2);
  330.     }
  331.   return(0);
  332. }

  333.  check3()
  334. {

  335.  for(t=1;t<25;t++)

  336.  for(q=1;q<12;)
  337.    if(arr[t][q]==1) { q++; if(q==12) {score+=100;del();}}  else break;

  338.   return(0);
  339. }


  340. void insert()
  341. { int x,y;
  342.     for(i=0;i<5;i++){
  343.     x=(l[0]-180)/15;
  344.     y=(l[1]-90)/15;
  345.    arr[y][x]=1;
  346.      switch(p)
  347.      {
  348.        case 0: box2();break;
  349.        case 1: bar2();break;
  350.        case 2: bar4();break;
  351.        case 3: rod2();break;
  352.        case 4: tee2();break;
  353.        case 5: tee4();
  354.      }
  355.      }

  356.     if(arr[0][5]==1||arr[0][6]==1)
  357.     {
  358.     settextstyle(3,0,4);
  359.     outtextxy(180,100," GAME OVER ");
  360.     fflush(stdin);
  361.     getch();
  362.     turn=0;
  363.     again();
  364.     }

  365. }

  366. void print()
  367. {
  368.   for(i=0;i<5;i++){
  369. setcolor(WHITE);
  370. setfillstyle(SOLID_FILL,6);
  371. rectangle(l[0]+1,l[1]+1,l[2]-1,l[3]-1);
  372. floodfill(l[4]+1,l[5]+1,WHITE);
  373. if(i<4)  switch (p)
  374. { case 0 : box1();break;
  375.    case 1 : bar1();break;
  376.    case 2 : bar3();break;
  377.    case 3 : rod1();break;
  378.    case 4 : tee1();break;
  379.    case 5 : tee3();
  380. }
  381.         }

  382. }

  383. void remove()
  384. {
  385. for(i=0;i<5;i++){
  386. setcolor(BLACK);
  387. setfillstyle(SOLID_FILL,BLACK);
  388. rectangle(l[0]+1,l[1]+1,l[2]-1,l[3]-1);
  389. floodfill(l[4]+1,l[5]+1,BLACK);
  390.  if(i<4) switch (p)
  391. { case 0 : box2();break;
  392.    case 1 : bar2();break;
  393.    case 2 : bar4();break;
  394.    case 3 : rod2();break;
  395.    case 4 : tee2();break;
  396.    case 5 : tee4();
  397. }
  398.   }

  399. }

  400. void del()
  401. { int m,n;
  402.  for(;t>0;t--)
  403.  for(q=1;q<12;q++)
  404.  arr[t][q]=arr[t-1][q];


  405.  for(n=0;n<25;n++)
  406.  //delay(50);
  407.  for(m=1;m<12;m++){

  408.  if(arr[n][m]==1)  { setcolor(WHITE);
  409.       setfillstyle(SOLID_FILL,6);
  410.       rectangle((m*15)+181,(n*15)+91,(m*15)+194,(n*15)+104);
  411.       floodfill((m*15)+182,(n*15)+92,WHITE);
  412.      }


  413.  else        { setcolor(BLACK);
  414.       setfillstyle(SOLID_FILL,BLACK);
  415.       rectangle((m*15)+181,(n*15)+91,(m*15)+194,(n*15)+104);
  416.       floodfill((m*15)+182,(n*15)+92,BLACK);
  417.      }


  418.         }
  419. }



  420. void frame()
  421. {  setcolor(WHITE);
  422.    setfillstyle(SOLID_FILL,8);

  423. settextstyle(7,0,6);
  424. outtextxy(140,3," TETTRIS ");
  425. setcolor(WHITE);
  426. settextstyle(2,0,7);
  427. outtextxy(400,440,"Press 'Esc' To Exit");
  428. settextstyle(2,0,5);
  429. outtextxy(5,285,"      PRESS     ");
  430. outtextxy(5,300,"Space To Change Shape");
  431. outtextxy(5,315,"Use Arrow Keys To Move");



  432.    rectangle(180,465,375,480);
  433.    floodfill(181,466,WHITE);

  434.    rectangle(180,90,194,480);
  435.    floodfill(181,95,WHITE);

  436.    rectangle(361,90,375,480);
  437.    floodfill(362,95,WHITE);


  438.    setcolor(WHITE);
  439.    settextstyle(7,0,1);
  440.    outtextxy(400,200," Next To Come ");
  441.    setfillstyle(SOLID_FILL,0);
  442.    rectangle(400,230,530,335);
  443.    floodfill(401,231,WHITE);



  444.    for(m=0;m<26;m++)
  445.    for(n=0;n<13;n++)
  446.    arr[m][n]=0;

  447.    for(m=0,n=0;n<26;n++)
  448.    arr[n][m]=1;

  449.    for(n=12,m=0;m<26;m++)
  450.    arr[m][n]=1;

  451.    for(m=25,n=0;n<13;n++)
  452.    arr[m][n]=1;

  453. }
  454. void again()
  455. {
  456.    cleardevice();
  457.    setcolor(WHITE);
  458.    setfillstyle(SOLID_FILL,BLACK);
  459.    rectangle(150,175,530,335);
  460.    floodfill(159,179,BLACK);


  461.    setcolor(WHITE);
  462.    settextstyle(7,0,1);
  463.    outtextxy(175,200,"   Enter Your Choice  ");
  464.    outtextxy(175,220," Press 'Y' To Play Again ");
  465.    outtextxy(175,240," Press Any Key To Exit ");

  466.  play=getch();
  467.  if(play=='y') cleardevice();
  468.  else exit(0);

  469.  }


Reactions

Post a Comment

1 Comments