C Codes
Beginners
C on Unix
Code Snippets
Data Structures
File Operations
Games Graphics
Gnu-Linux
Hardware
Mathematics
Miscellaneous
Small Programs
Sorting
C > Games and Graphics sample source codes
Tetris Game in C
Tetris Game in C #include
#include
#include
#include
#include
void swap(int a,int b);void bar1();void bar2(); void bar3(); void bar4(); check0(); check1(); check2(); void del(); void rod1(); void rod2(); void box1();void box2();void tee1();voidtee2(); void tee3();void tee4();check3();void insert(); void again();void print();void remove();void frame(); int score=0,spd,q,t,a=0,i,j,l[6]={300,90,315,105,301,91},p,turn,m,n; char play='y'; static int arr[26][13]; void main(void) { char ch,y; int gd= DETECT,gm,area,maxx,maxy,move,lmove,rmove; void *buff; initgraph(&gd,&gm,"d:\tc\bgi"); do{ turn=1; score=0; do{ clrscr(); cleardevice(); printf(" Enter Your Choice "); printf(" Basic Level.......... 1 "); printf(" Middle Level......... 2 "); printf(" Advanced Level....... 3 "); printf(" Experts Level........ 4 "); printf(" Professional Level... 5 "); y=getch(); clrscr(); cleardevice(); if(y=='1') {spd=200; settextstyle(2,0,6);outtextxy(2,150," Basic Level ");break;} if(y=='2') {spd=150; settextstyle(2,0,6);outtextxy(2,150," Middle Level ");break;} if(y=='3') {spd=100; settextstyle(2,0,6);outtextxy(2,150," Advanced Level ");break;} if(y=='4') {spd=75; settextstyle(2,0,6);outtextxy(2,150," Experts Level ");break;} if(y=='5') {spd=50; settextstyle(2,0,6);outtextxy(2,150,"Professional Level ");break;} }while(1); frame(); getch(); int k,ar[2],pr[2],t[6]; randomize(); ar[0]=random(2); pr[0]=random(6); ar[1]=random(2); pr[1]=random(6); while(1) { printf(" score= %d ",score); a=ar[0]; p=pr[0]; l[0]=450;l[1]=250;l[2]=465;l[3]=265;l[4]=451;l[5]=251; if(y=='1') spd=100; if(y=='2') spd=75; if(y=='3') spd=50; if(y=='4') spd=30; if(y=='5') spd=20; print(); delay(500); a=ar[1]; p=pr[1]; t[0]=l[0]; t[1]=l[1]; t[2]=l[2]; t[3]=l[3]; t[4]=l[4]; t[5]=l[5]; a=ar[1]; p=pr[1]; l[0]=270;l[1]=90;l[2]=285;l[3]=105;l[4]=271;l[5]=91; do{ k=0; if(kbhit()){ ch=getch(); if(ch==0) ch=getch(); if(ch==77) {move=check1(); if(move==0) {l[0]+=15;l[2]+=15;l[4]+=15; k=1;}} if(ch==75) {move=check2(); if(move==0) {l[0]-=15;l[2]-=15;l[4]-=15; k=1;}} if(ch==80) spd=10; if(ch==27) exit(0); if(ch==32){ k=1; if(p==4||p==5) switch(p) { case 4: if(a==0) a++; else p++; break; case 5: if(a==1) a--; else p--; } if(p==1||p==2) switch(p) { case 1: if(a==0) a++; else p++; l[0]=270;l[2]=285;l[4]=271;break; case 2: if(a==1) a--; else p--; l[0]=270;l[2]=285;l[4]=271; } if(p==3) { if(a==0) a++; else a=0; l[0]=270;l[2]=285;l[4]=271; } } if(a==1) {swap(l[0],l[1]);swap(l[2],l[3]);swap(l[4],l[5]);} } move=check0(); if(move==1) break; print(); if(k==1) delay(0); else delay(spd); remove(); if(k==0) {l[1]+=15; l[3]+=15; l[5]+=15;} }while(1); print(); fflush(stdin); insert(); check3(); a=ar[0]; p=pr[0]; l[0]=t[0];l[1]=t[1];l[2]=t[2];l[3]=t[3]; l[4]=t[4];l[5]=t[5]; remove(); ar[1]=ar[0]; pr[1]=pr[0]; ar[0]=random(2); pr[0]=random(6); if(pr[0]==2) pr[0]=3; if(turn==0) break; } }while(play=='y'); } void swap(int a,int b) { a=a+b; b=a-b; a=a-b; } void bar1() { if(a==0&&i<1) {l[0]+=15;l[2]+=15;l[4]+=15; } if(a==0&&i>=1){l[1]+=15;l[3]+=15;l[5]+=15; } // if(a==1&&i==1) {l[0]-=15;l[2]-=15;l[4]-=15;l[1]-=15;l[3]-=15;l[5]-=15; } if(a==1&&i==0) {l[1]+=15;l[3]+=15;l[5]+=15; } if(a==1&&i>0) {l[0]-=15;l[2]-=15;l[4]-=15; } if(a==2&&i>=2) {l[0]-=15;l[2]-=15;l[4]-=15; } if(a==2&&i<2) {l[1]+=15;l[3]+=15;l[5]+=15; } } void bar2() { if(a==0&&i>=3){l[0]-=15;l[2]-=15;l[4]-=15; } if(a==0&&i<3) {l[1]-=15;l[3]-=15;l[5]-=15; } if(a==1&&i<3) {l[0]+=15;l[2]+=15;l[4]+=15; } if(a==1&&i==3){l[1]-=15;l[3]-=15;l[5]-=15; } if(a==2&&i<2) {l[0]+=15;l[2]+=15;l[4]+=15;} if(a==2&&i>=2){l[1]-=15;l[3]-=15;l[5]-=15; } } void bar3() {if(a==0&&i>=3){l[0]+=15;l[2]+=15;l[4]+=15; } if(a==0&&i<3){l[1]+=15;l[3]+=15;l[5]+=15; } if(a==2&&i<2) {l[0]-=15;l[2]-=15;l[4]-=15; } if(a==2&&i>=2) {l[1]+=15;l[3]+=15;l[5]+=15; } if(a==1&&i>=1) {l[0]+=15;l[2]+=15;l[4]+=15; } if(a==1&&i<1) {l[1]+=15;l[3]+=15;l[5]+=15; } } void bar4() {if(a==0&&i<1){l[0]-=15;l[2]-=15;l[4]-=15; } if(a==0&&i>=1) {l[1]-=15;l[3]-=15;l[5]-=15; } if(a==2&&i>=2) {l[0]+=15;l[2]+=15;l[4]+=15; } if(a==2&&i<2){l[1]-=15;l[3]-=15;l[5]-=15; } if(a==1&&i<3) {l[0]-=15;l[2]-=15;l[4]-=15; } if(a==1&&i==3) {l[1]-=15;l[3]-=15;l[5]-=15; } } void rod1() { if(a==0) {l[0]+=15;l[2]+=15;l[4]+=15; } else {l[1]+=15;l[3]+=15;l[5]+=15; } } void rod2() { if(a==0) {l[0]-=15;l[2]-=15;l[4]-=15; } else {l[1]-=15;l[3]-=15;l[5]-=15; } } void box1() {if(i<1) {l[0]-=15;l[2]-=15;l[4]-=15; } if(i==1) {l[1]+=15;l[3]+=15;l[5]+=15; } if(i==2) {l[0]+=15;l[2]+=15;l[4]+=15; } } void box2() {if(i<1) {l[0]-=15;l[2]-=15;l[4]-=15; } if(i==1) {l[1]-=15;l[3]-=15;l[5]-=15; } if(i==2) {l[0]+=15;l[2]+=15;l[4]+=15; } } void tee1() { if(a==0&&i==1) {l[0]-=15;l[2]-=15;l[4]-=15; } if(a==0&&i<1) {l[1]+=15;l[3]+=15;l[5]+=15; } if(a==0&&(i==2||i==3)) {l[0]+=15;l[2]+=15;l[4]+=15; } if(a>0&&i==2) {l[0]-=15;l[2]-=15;l[4]-=15;l[1]+=15;l[3]+=15;l[5]+=15; } if(a>0&&i==0) {l[1]+=15;l[3]+=15;l[5]+=15; } if(a>0&&(i==1)) {l[0]+=15;l[2]+=15;l[4]+=15; } } void tee2() { if(a==0&&i==0) {l[0]-=15;l[2]-=15;l[4]-=15; } if(a==0&&i==1) {l[0]-=15;l[2]-=15;l[4]-=15; } if(a==0&&i==2) {l[0]+=15;l[2]+=15;l[4]+=15;l[1]-=15;l[3]-=15;l[5]-=15; } if(a>0&&i==2) {l[0]-=15;l[2]-=15;l[4]-=15;l[1]-=15;l[3]-=15;l[5]-=15; } if(a>0&&i==1) {l[0]+=15;l[2]+=15;l[4]+=15; } if(a>0&&i==0) {l[1]-=15;l[3]-=15;l[5]-=15; } } void tee3() { if(a==0&&i==0) {l[0]-=15;l[2]-=15;l[4]-=15; } if(a==0&&i==2) {l[0]-=15;l[2]-=15;l[4]-=15;l[1]-=15;l[3]-=15;l[5]-=15; } if(a==0&&i==1) {l[1]+=15;l[3]+=15;l[5]+=15;} if(a>0&&i==2) {l[0]+=15;l[2]+=15;l[4]+=15;l[1]+=15;l[3]+=15;l[5]+=15; } if(a>0&&i==0) {l[1]+=15;l[3]+=15;l[5]+=15; } if(a>0&&(i==1)) {l[0]-=15;l[2]-=15;l[4]-=15; } } void tee4() { if(a==0&&i==1) {l[1]+=15;l[3]+=15;l[5]+=15; } if(a==0&&i==0) {l[0]+=15;l[2]+=15;l[4]+=15; } if(a==0&&i==2) {l[1]-=15;l[3]-=15;l[5]-=15;l[0]+=15;l[2]+=15;l[4]+=15; } if(a>0&&i==2) {l[0]+=15;l[2]+=15;l[4]+=15;l[1]-=15;l[3]-=15;l[5]-=15; } if(a>0&&i==0) {l[1]-=15;l[3]-=15;l[5]-=15; } if(a>0&&i==1) {l[0]-=15;l[2]-=15;l[4]-=15; } } check0() { int x,y,s,d=5; x=(l[0]-180)/15; y=(l[1]-90)/15; if(a==0){ switch (p) { case 0: y+=2;d=2; if(arr[y][x-1]==1) return(1); else break; case 1: y+=4;x++;d=1;if(arr[y-3][x-1]==1) return(1); else break; case 2: y=y+4;d=2;x+=1;break; case 3: y=y+1;d=5;x+=4;break; case 4: y+=2;d=3;x++;break; case 5: y+=1;d=3;if(arr[y+1][x-1]==1) return(1); else break; } for(s=1;s
0;t--) for(q=1;q<12;q++) arr[t][q]=arr[t-1][q]; for(n=0;n<25;n++) //delay(50); for(m=1;m<12;m++){ if(arr[n][m]==1) { setcolor(WHITE); setfillstyle(SOLID_FILL,6); rectangle((m*15)+181,(n*15)+91,(m*15)+194,(n*15)+104); floodfill((m*15)+182,(n*15)+92,WHITE); } else { setcolor(BLACK); setfillstyle(SOLID_FILL,BLACK); rectangle((m*15)+181,(n*15)+91,(m*15)+194,(n*15)+104); floodfill((m*15)+182,(n*15)+92,BLACK); } } } void frame() { setcolor(WHITE); setfillstyle(SOLID_FILL,8); settextstyle(7,0,6); outtextxy(140,3," TETTRIS "); setcolor(WHITE); settextstyle(2,0,7); outtextxy(400,440,"Press 'Esc' To Exit"); settextstyle(2,0,5); outtextxy(5,285," PRESS "); outtextxy(5,300,"Space To Change Shape"); outtextxy(5,315,"Use Arrow Keys To Move"); rectangle(180,465,375,480); floodfill(181,466,WHITE); rectangle(180,90,194,480); floodfill(181,95,WHITE); rectangle(361,90,375,480); floodfill(362,95,WHITE); setcolor(WHITE); settextstyle(7,0,1); outtextxy(400,200," Next To Come "); setfillstyle(SOLID_FILL,0); rectangle(400,230,530,335); floodfill(401,231,WHITE); for(m=0;m<26;m++) for(n=0;n<13;n++) arr[m][n]=0; for(m=0,n=0;n<26;n++) arr[n][m]=1; for(n=12,m=0;m<26;m++) arr[m][n]=1; for(m=25,n=0;n<13;n++) arr[m][n]=1; } void again() { cleardevice(); setcolor(WHITE); setfillstyle(SOLID_FILL,BLACK); rectangle(150,175,530,335); floodfill(159,179,BLACK); setcolor(WHITE); settextstyle(7,0,1); outtextxy(175,200," Enter Your Choice "); outtextxy(175,220," Press 'Y' To Play Again "); outtextxy(175,240," Press Any Key To Exit "); play=getch(); if(play=='y') cleardevice(); else exit(0); }
Privacy Policy
|
Link to Us
|
Links