Tetris avec turbo c

Contenu du snippet

2Asoft crée son nouveau jeux palpitant comme toujours mais surtout ingénieux, les 2 programmeurs de 2ASoft (Abdou . Ars) bien que n'etant encore qu'étudiants ont trouvé le temps de nous divertir.

Bonne continuation.

Source / Exemple :


#include<conio.h>
#include<dos.h>
#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>
/***********************************************************/
typedef enum BOOL{faux,vrai} bool;
int px,py,max_ligne=1,ob;
long int score=0;
bool bl;
char c;
/***********************************************************/	
bool obj1[1][4]={1,1,1,1}; 
bool obj11[4][1]={1,1,1,1}; 
bool obj10[2][2]={1,1,1,1}; 
bool obj2[8][3][2]={1,0,1,1,1,0,1,0,1,0,1,1,1,1,1,0,1,0,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,1,0,1,0,1,1,0,1,0,1,0,1,1,1}; 
bool obj3[8][2][3]={1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,0,1,0,1,1,0,0,1,1,0,1,0,1,1,1,0,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,1}; 
bool grille[13][24];
/************************************************************/
void Afficher()
  {
	int i,j;
	setfillstyle(1,11);
	bar(40,51,259,450);
	for(i=1;i<21;i++)
	  for(j=1;j<12;j++)
		if(grille[j][i]==vrai) 
		   {
			 setfillstyle(1,LIGHTGRAY);
			 bar(20+j*20,470-i*20,40+j*20-1,450-i*20+1);
			 setcolor(0);
			 line(20+j*20,470-i*20,20+j*20,450-i*20+1);
			 line(20+j*20,470-i*20,40+j*20-1,470-i*20);
			 setcolor(15);
			 line(40+j*20-1,450-i*20+1,20+j*20,450-i*20+1);
			 line(40+j*20-1,450-i*20+1,40+j*20-1,470-i*20);
		   }
  }
/************************************************************/
int Max(bool tab[13][24])
  {
	int i,j,m;
	for(i=1;i<21;i++)
	  for(j=1;j<12;j++)
		if(tab[j][i]==vrai) 
		   m=i;
	return m;
  }
/*************************************************************/
void Random()
  {
	int t[7]={2,1,4,8,10,9,6},i,j,a;
	randomize();
	ob=t[random(7)];
	px=5;
	py=22;
	switch(ob)
	  {
		case 2 : a=0;break;
		case 4 : a=1;break;
		case 6 : a=2;break;
		case 8 : a=5;break;
		case 9 : a=6;break;
	  }
	if(ob==1) for(i=0;i<4;i++) grille[px+i][py]=obj1[i][0];
	else
	if(ob==10) 
	{
	for(i=0;i<2;i++)
	  {
	  grille[px][py+i]=obj10[0][i];
	  grille[px+1][py+i]=obj10[1][i];
	  }
	}
	else
	{
	  for(i=0;i<3;i++)
		{
		  grille[px+i][py]=obj2[a][i][0];
		  grille[px+i][py+1]=obj2[a][i][1];
		}
	}
	randomize();
  }
/******************************************************************/
void Descendre()
  {
	int i;
	bool b=vrai;
	if(ob==1)
	  {
		for(i=0;i<4;i++) b=b&&(!obj1[i][0]||!grille[px+i][py-1]); 
		if(b==vrai)
		  for(i=0;i<4;i++)
			  {
				grille[px+i][py]=faux;
				grille[px+i][py-1]=vrai;
			  }
	  }
	if(ob==11)
	  {
		b=(!obj11[0][0]||!grille[px][py-1]);
		if(b==vrai)
		  {
			grille[px][py+3]=faux;
			grille[px][py-1]=vrai;
		  }
	  }
	if(ob==2||ob==4||ob==6)
	  {
		for(i=0;i<3;i++) b=b&&(!obj2[ob/2-1][i][0]||!grille[px+i][py-1]);
		if(b==vrai)
		  for(i=0;i<3;i++)
			{
			  if(obj2[ob/2-1][i][1]==vrai) grille[px+i][py+1]=faux;
			  grille[px+i][py]=obj2[ob/2-1][i][1];
			  grille[px+i][py-1]=vrai;
			}
	  }
	if(ob==14||ob==17)
	  {
		b=(!obj3[(ob-14)/3][0][0]||!grille[px][py-1])&&(!obj3[(ob-14)/3][1][0]||!grille[px+1][py-1]);
		if(b==vrai)
		  {
		  for(i=0;i<2;i++)
		   if(obj3[(ob-14)/3][i][1]==faux) 
		   {
			 grille[px+i][py]=faux;
			 grille[px+1-i][py+2]=faux;
			 grille[px+i][py-1]=vrai;
			 grille[px-i+1][py-1]=vrai;
		   }
		  
		  }
	  }
	if(ob==10)
	  {
		b=(!obj10[0][0]||!grille[px][py-1])&&(!obj10[1][0]||!grille[px+1][py-1]);
		if(b==vrai)
		  {
			grille[px][py+1]=faux;
			grille[px+1][py+1]=faux;
			grille[px][py-1]=vrai;
			grille[px+1][py-1]=vrai;
			
		  }
	  }	
	if(ob==12||ob==18)
	  {
		b=(!obj3[ob/6][0][0]||!grille[px][py-1])&&(!obj3[ob/6][1][1]||!grille[px+1][py]);
		if(b==vrai)
		  {
			for(i=0;i<3;i++)
			  {
				if(obj3[ob/6][0][i]==vrai) grille[px][py+i]=faux;
				if(obj3[ob/6][1][i]==vrai) grille[px+1][py+i]=faux;
			  }
				for(i=0;i<3;i++)
			  {
			   if(obj3[ob/6][0][i]==vrai) grille[px][py+i-1]=obj3[ob/6][0][i];
			   if(obj3[ob/6][1][i]==vrai) grille[px+1][py+i-1]=obj3[ob/6][1][i];
			  }
		  }
	  }
	if(ob==13||ob==19) 
	  {
		b=(!obj3[5-((19-ob)/6)][1][0]||!grille[px+1][py-1])&&(!obj3[5-((19-ob)/6)][0][1]||!grille[px][py]);
		if(b==vrai)
		  {
			for(i=0;i<3;i++)
			  {
				if(obj3[5-((19-ob)/6)][0][i]==vrai) grille[px][py+i]=faux;
				if(obj3[5-((19-ob)/6)][1][i]==vrai) grille[px+1][py+i]=faux;
			  }
				for(i=0;i<3;i++)
			  {
				if(obj3[5-((19-ob)/6)][0][i]==vrai) grille[px][py+i-1]=obj3[5-((19-ob)/6)][0][i];
				if(obj3[5-((19-ob)/6)][1][i]==vrai) grille[px+1][py+i-1]=obj3[5-((19-ob)/6)][1][i];
			  }
		  }
	  }
	if(ob==3||ob==5||ob==7)
	  {
		for(i=0;i<3;i++) 
		  {
			if(obj2[ob-((7-ob)*(ob-3)/4)][i][0]==vrai) b=b&&(!obj2[ob-((7-ob)*(ob-3)/4)][i][0]||!grille[px+i][py-1]);
			else b=b&&(!obj2[ob-((7-ob)*(ob-3)/4)][i][1]||!grille[px+i][py]);
		  }
		if(b==vrai)
		  for(i=0;i<3;i++)
			{
			  grille[px+i][py+1]=faux;
			  grille[px+i][py]=vrai;
			 if(obj2[ob-((7-ob)*(ob-3)/4)][i][0]==vrai) grille[px+i][py-1]=obj2[ob-((7-ob)*(ob-3)/4)][i][0];
			}
	  }
	if(ob==8||ob==9)
	  {
		for(i=0;i<3;i++)
		  {
			if(obj2[ob-3][i][0]==vrai) b=b&&(!obj2[ob-3][i][0]||!grille[px+i][py-1]);
			else b=b&&(!obj2[ob-3][i][1]||!grille[px+i][py]);
		  }
		if(b==vrai)
		  {
			for(i=0;i<3;i++)
			  {
				if(obj2[ob-3][i][0]==vrai) 
				 {
				   grille[px+i][py]=faux;
				   grille[px+i][py-1]=obj2[ob-3][i][0];
				 }
				if(obj2[ob-3][i][1]==vrai) 
				 { 
				   grille[px+i][py+1]=faux;
				   grille[px+i][py]=obj2[ob-3][i][1];
				 }
				
			  }
		  }
	  }
	if(ob==15||ob==16)
	  {
		for(i=0;i<2;i++)
		  {
			if(obj3[ob-9][i][0]==vrai) b=b&&(!obj3[ob-9][i][0]||!grille[px+i][py-1]); 
			else b=b&&(!obj3[ob-9][i][2]||!grille[px+i][py+1]);
		  }
		if(b==vrai)
		{
		  grille[px][py+2]=faux;
		  grille[px+1][py+2]=faux;
		  for(i=0;i<2;i++)
			{
			  if(obj3[ob-9][i][0]==vrai) grille[px+i][py-1]=vrai;
			  else grille[px+i][py+1]=vrai;
			}
		}
	  }
	if(b==vrai) 
	{
	 sound(300);
	 delay(20);
	 nosound();
	 py--;
	 bl=faux;
	}
	else
	  {
		max_ligne=Max(grille);
		bl=vrai;
		c=0;
		Random();
		sound(500);
		delay(100);
		sound(600);
		delay(100);
		sound(700);
		delay(100);
		sound(1000);
		delay(100);
		nosound();
	  }
	Afficher();
  }
/*************************************************************/
void Droite()
  {
	int i;
	bool b=vrai;
	if(ob==11)
	  {
		for(i=0;i<4;i++) b=b&&(!obj11[0][i]||!grille[px+1][py+i]); 
		if(b==vrai)
		  for(i=0;i<4;i++)
			  {
				grille[px][py+i]=faux;
				grille[px+1][py+i]=vrai;
			  }
	  }
	if(ob==1)
	  {
		b=(!obj1[3][0]||!grille[px+4][py]);
		if(b==vrai)
		  {
			grille[px][py]=faux;
			grille[px+4][py]=vrai;
		  }
	  }
	if(ob==13||ob==15||ob==17)
	  { 
		if(ob==17)
	   { 
		for(i=0;i<3;i++) b=b&&(!obj3[1][1][i]||!grille[px+2][py+i]);
		 if(b==vrai)
		  for(i=0;i<3;i++)
			{
			  if(obj3[1][0][i]==vrai) grille[px][py+i]=faux;
			  grille[px+1][py+i]=obj3[1][0][i];
			  grille[px+2][py+i]=vrai;
			}
	   }
		else
	   { 
		for(i=0;i<3;i++) b=b&&(!obj3[ob-9][1][i]||!grille[px+2][py+i]);
		 if(b==vrai)
		  for(i=0;i<3;i++)
			{
			  if(obj3[ob-9][0][i]==vrai) grille[px][py+i]=faux;
			  grille[px+1][py+i]=obj3[ob-9][0][i];
			  grille[px+2][py+i]=vrai;
			}
	   }
	  }
	if(ob==4||ob==7)
	  {
		b=(!obj2[ob*(ob-3)/4][2][0]||!grille[px+3][py])&&(!obj2[ob*(ob-3)/4][2][1]||!grille[px+3][py+1]);
		if(b==vrai)
		  {
			for(i=0;i<2;i++)
			if(obj2[ob*(ob-3)/4][0][i]==vrai)
			{
			  grille[px][py+i]=faux;
			  grille[px+2][py+1-i]=faux;
			}
			grille[px+3][py]=obj2[ob*(ob-3)/4][2][0];
			grille[px+3][py+1]=obj2[ob*(ob-3)/4][2][1];
		  }
	  }
	if(ob==10)
	  {
		b=(!obj10[1][0]||!grille[px+2][py])&&(!obj10[1][1]||!grille[px+2][py+1]);
		if(b==vrai)
		  {
			grille[px][py]=faux;
			grille[px][py+1]=faux;
			grille[px+2][py]=vrai;
			grille[px+2][py+1]=vrai;
			
		  }
	  }	
	if(ob==2||ob==8)
	  {
		b=(!obj2[(ob-2)*5/6][2][0]||!grille[px+3][py])&&(!obj2[(ob-2)*5/6][1][1]||!grille[px+2][py+1]);
		if(b==vrai)
		  {
			for(i=0;i<3;i++)
			  {
				if(obj2[(ob-2)*5/6][i][0]==vrai) grille[px+i][py]=faux;
				if(obj2[(ob-2)*5/6][i][1]==vrai) grille[px+i][py+1]=faux;
			  }
				for(i=0;i<3;i++)
			  {
				if(obj2[(ob-2)*5/6][i][0]==vrai) grille[px+i+1][py]=obj2[(ob-2)*5/6][i][0];
				if(obj2[(ob-2)*5/6][i][1]==vrai) grille[px+i+1][py+1]=obj2[(ob-2)*5/6][i][1];
			  }
		  }
	  }
	if(ob==3||ob==9) 
	  {
		b=(!obj2[(ob+3)/2][1][0]||!grille[px+2][py])&&(!obj2[(ob+3)/2][2][1]||!grille[px+3][py+1]);
		if(b==vrai)
		  {
			for(i=0;i<3;i++)
			  {
				if(obj2[(ob+3)/2][i][1]==vrai) grille[px+i][py+1]=faux;
				if(obj2[(ob+3)/2][i][0]==vrai) grille[px+i][py]=faux;
			  }
				for(i=0;i<3;i++)
			  {
				if(obj2[(ob+3)/2][i][0]==vrai) grille[px+i+1][py]=obj2[(ob+3)/2][i][0];
				if(obj2[(ob+3)/2][i][1]==vrai) grille[px+i+1][py+1]=obj2[(ob+3)/2][i][1];
			  }
		  }
	  }
	if(ob==12||ob==14||ob==16)
	  {
		if(ob==16)
	   {
		for(i=0;i<3;i++) 
		  {
			if(obj3[7][1][i]==vrai) b=b&&(!obj3[7][1][i]||!grille[px+2][py+i]);
			else b=b&&(!obj3[7][0][i]||!grille[px+1][py+i]);
		  }
		if(b==vrai)
		  for(i=0;i<3;i++)
			{
			  grille[px][py+i]=faux;
			  grille[px+1][py+i]=vrai;
			  if(obj3[7][1][i]==vrai) grille[px+2][py+i]=obj3[7][1][i];
			}
	   }
	  else
	   {
		 for(i=0;i<3;i++) 
		  {
			if(obj3[14-ob][1][i]==vrai) b=b&&(!obj3[14-ob][1][i]||!grille[px+2][py+i]);
			else b=b&&(!obj3[14-ob][0][i]||!grille[px+1][py+i]);
		  }
		if(b==vrai)
		  for(i=0;i<3;i++)
			{
			  grille[px][py+i]=faux;
			  grille[px+1][py+i]=vrai;
			  if(obj3[14-ob][1][i]==vrai) grille[px+2][py+i]=obj3[14-ob][1][i];
			}
	   }
	  }
	if(ob==18||ob==19)
	  {
		for(i=0;i<3;i++)
		  {
			if(obj3[3+(ob-18)*2][1][i]==vrai) b=b&&(!obj3[3+(ob-18)*2][1][i]||!grille[px+2][py+i]);
			else b=b&&(!obj3[3+(ob-18)*2][0][i]||!grille[px+1][py+i]);
		  }
		if(b==vrai)
		  {
			for(i=0;i<3;i++)
			  {
                if(obj3[3+(ob-18)*2][1][i]==vrai) 
				{
				  grille[px+1][py+i]=faux;
				  grille[px+2][py+i]=obj3[3+(ob-18)*2][1][i];
				}
				if(obj3[3+(ob-18)*2][0][i]==vrai)
				{
				  grille[px][py+i]=faux;
				  grille[px+1][py+i]=obj3[3+(ob-18)*2][0][i];
				}
				
			  }
		  }
	  }
	if(ob==5||ob==6)
	  {
		for(i=0;i<2;i++)
		  {
			if(obj2[2+(6-ob)*2][2][i]==vrai) b=b&&(!obj2[2+(6-ob)*2][2][i]||!grille[px+3][py+i]); 
			else b=b&&(!obj2[2+(6-ob)*2][0][i]||!grille[px+1][py+i]);
		  }
		if(b==vrai)
		{
		  grille[px][py]=faux;
		  grille[px][py+1]=faux;
		  for(i=0;i<2;i++)
			{
			  if(obj2[2+(6-ob)*2][2][i]==vrai) grille[px+3][py+i]=vrai;
			  else grille[px+1][py+i]=vrai;
			}
		}
	  }
	if(b==vrai) px++;
	else c=0;
	sound(300);
	delay(20);
	nosound();
	Afficher();
  }
/*************************************************************/
void Gauche()
  {
	int i;
	bool b=vrai;
	if(ob==11)
	  {
		for(i=0;i<4;i++) b=b&&(!obj11[0][i]||!grille[px-1][py+i]); 
		if(b==vrai)
		  for(i=0;i<4;i++)
			  {
				grille[px][py+i]=faux;
				grille[px-1][py+i]=vrai;
			  }
	  }
	if(ob==1)
	  {
		b=(!obj1[0][0]||!grille[px-1][py]);
		if(b==vrai)
		  {
			grille[px+3][py]=faux;
			grille[px-1][py]=vrai;
		  }
	  }
	if(ob==12||ob==14||ob==16)
	  {
		if(ob==16)
		{
		for(i=0;i<3;i++) b=b&&(!obj3[7][0][i]||!grille[px-1][py+i]);
		if(b==vrai)
		  for(i=0;i<3;i++)
			{
			  if(obj3[7][1][i]==vrai) grille[px+1][py+i]=faux;
			  grille[px][py+i]=obj3[7][1][i];
			  grille[px-1][py+i]=vrai;
			}
		}
		else
		{
		  for(i=0;i<3;i++) b=b&&(!obj3[14-ob][0][i]||!grille[px-1][py+i]);
		if(b==vrai)
		  for(i=0;i<3;i++)
			{
			  if(obj3[14-ob][1][i]==vrai) grille[px+1][py+i]=faux;
			  grille[px][py+i]=obj3[14-ob][1][i];
			  grille[px-1][py+i]=vrai;
			}
		}
	  }
	if(ob==5||ob==6)
	  {
		b=(!obj2[(7-ob)*2][0][0]||!grille[px-1][py])&&(!obj2[(7-ob)*2][0][1]||!grille[px-1][py+1]);
		if(b==vrai)
		  {
			  for(i=0;i<2;i++)
			   if(obj2[(7-ob)*2][2][i]==vrai) 
				{
				  grille[px][py+1-i]=faux;
				  grille[px+2][py+i]=faux;
				}
				grille[px-1][py]=obj2[(7-ob)*2][0][0];
				grille[px-1][py+1]=obj2[(7-ob)*2][0][1];
			
		  }
	  }
	if(ob==10)
	  {
		b=(!obj10[0][0]||!grille[px-1][py])&&(!obj10[0][1]||!grille[px-1][py+1]);
		if(b==vrai)
		  {
			grille[px+1][py]=faux;
			grille[px+1][py+1]=faux;
			grille[px-1][py]=vrai;
			grille[px-1][py+1]=vrai;
			
		  }
	  }	
	if(ob==3||ob==8)
	  {
		b=(!obj2[3+(2*ob-6)/5][0][1]||!grille[px-1][py+1])&&(!obj2[3+(2*ob-6)/5][1][0]||!grille[px][py]);
		if(b==vrai)
		  {
			for(i=0;i<3;i++)
			  {
				if(obj2[3+(2*ob-6)/5][i][0]==vrai) grille[px+i][py]=faux;
				if(obj2[3+(2*ob-6)/5][i][1]==vrai) grille[px+i][py+1]=faux;
			  }
				for(i=0;i<3;i++)
			  {
				if(obj2[3+(2*ob-6)/5][i][0]==vrai) grille[px+i-1][py]=obj2[3+(2*ob-6)/5][i][0];
				if(obj2[3+(2*ob-6)/5][i][1]==vrai) grille[px+i-1][py+1]=obj2[3+(2*ob-6)/5][i][1];
			  }
		  }
	  }
	if(ob==2||ob==9) 
	  {
		b=(!obj2[(6*ob-12)/7][0][0]||!grille[px-1][py])&&(!obj2[(6*ob-12)/7][1][1]||!grille[px][py+1]);
		if(b==vrai)
		  {
			for(i=0;i<3;i++)
			  {
				if(obj2[(6*ob-12)/7][i][0]==vrai) grille[px+i][py]=faux;
				if(obj2[(6*ob-12)/7][i][1]==vrai) grille[px+i][py+1]=faux;
			  }
				for(i=0;i<3;i++)
			  {
				if(obj2[(6*ob-12)/7][i][0]==vrai) grille[px+i-1][py]=obj2[(6*ob-12)/7][i][0];
				if(obj2[(6*ob-12)/7][i][1]==vrai) grille[px+i-1][py+1]=obj2[(6*ob-12)/7][i][1];
			  }
		  }
	  }
	if(ob==13||ob==15||ob==17)
	  {
		if(ob==17)
		{
		for(i=0;i<3;i++) 
		  {
			if(obj3[1][0][i]==vrai) b=b&&(!obj3[1][0][i]||!grille[px-1][py+i]);
			else b=b&&(!obj3[1][1][i]||!grille[px][py+i]);
		  }
		if(b==vrai)
		  for(i=0;i<3;i++)
			{
			  grille[px+1][py+i]=faux;
			  grille[px][py+i]=vrai;
			  if(obj3[1][0][i]==vrai) grille[px-1][py+i]=obj3[1][0][i];
			}
		}
		else
		{
		for(i=0;i<3;i++) 
		  {
			if(obj3[ob-9][0][i]==vrai) b=b&&(!obj3[ob-9][0][i]||!grille[px-1][py+i]);
			else b=b&&(!obj3[ob-9][1][i]||!grille[px][py+i]);
		  }
		if(b==vrai)
		  for(i=0;i<3;i++)
			{
			  grille[px+1][py+i]=faux;
			  grille[px][py+i]=vrai;
			  if(obj3[ob-9][0][i]==vrai) grille[px-1][py+i]=obj3[ob-9][0][i];
			}
	
		}
	  }
	if(ob==18||ob==19)
	  {
		for(i=0;i<3;i++)
		  {
			if(obj3[2*(ob-18)+3][0][i]==vrai) b=b&&(!obj3[2*(ob-18)+3][0][i]||!grille[px-1][py+i]);
			else b=b&&(!obj3[2*(ob-18)+3][1][i]||!grille[px][py+i]);
		  }
		if(b==vrai)
		  {
			for(i=0;i<3;i++)
			  {
				if(obj3[2*(ob-18)+3][1][i]==vrai) grille[px+1][py+i]=faux;
				grille[px][py+i]=obj3[2*(ob-18)+3][1][i];
				if(obj3[2*(ob-18)+3][0][i]==vrai) grille[px-1][py+i]=obj3[2*(ob-18)+3][0][i];
			  }
		  }
	  }
	if(ob==4||ob==7)
	  {
		for(i=0;i<2;i++)
		  {
			if(obj2[2*(ob-4)+1][0][i]==vrai) b=b&&(!obj2[2*(ob-4)+1][0][i]||!grille[px-1][py+i]); 
			else b=b&&(!obj2[2*(ob-4)+1][2][i]||!grille[px+1][py+i]);
		  }
		if(b==vrai)
		{
		  grille[px+2][py]=faux;
		  grille[px+2][py+1]=faux;
		  for(i=0;i<2;i++)
			{
			  if(obj2[2*(ob-4)+1][0][i]==vrai) grille[px-1][py+i]=vrai;
			  else grille[px+1][py+i]=vrai;
			}
		}
	  }
	if(b==vrai) px--;
	else c=0;
	sound(300);
	delay(20);
	nosound();
	Afficher();
  }
/*************************************************************/
void Rotation()
  {
	int i,j,a,c,d,f;
	bool b=vrai;
	switch(ob)
	  {
		case 2 : c=2;a=0;break;
		case 3 : c=4;a=3;break;
		case 4 : c=0;a=1;break;
		case 5 : c=6;a=4;break;
		case 6 : c=7;a=2;break;
		case 7 : c=1;a=7;break;
		case 8 : c=3;a=5;break;
		case 9 : c=5;a=6;break;
		case 12 : a=0;c=2;f=3;break;
		case 13 : a=3;c=4;f=0;break;
		case 14 : a=1;c=0;f=4;break;
		case 15 : a=4;c=6;f=1;break;
		case 16 : a=2;c=7;f=7;break;
		case 17 : a=7;c=1;f=2;break;
		case 18 : a=5;c=3;break;
		case 19 : a=6;c=5;break;
	  }
	if(ob<10)
	  {
		if(ob==1)
		  {
			for(i=1;i<4;i++) b=b&&(!obj11[0][i]||!grille[px+1][py+i]);
			if(b==vrai)
			  {
				for(i=0;i<4;i++) grille[px+i][py]=faux;
				for(i=0;i<4;i++) grille[px+1][py+i]=vrai;
				px++;
			  }
		  }
		else
		  {
			for(i=0;i<2;i++)
			 for(j=0;j<2;j++)
			  {
				if(obj2[a][i][j]==faux) b=b&&(!obj3[c][i][j]||!grille[px+i][py+j]);
			  }
			b=b&&(!obj3[c][0][2]||!grille[px][py+2])&&(!obj3[c][1][2]||!grille[px+1][py+2]);
			if(b==vrai)
			  {
				for(i=0;i<3;i++)
				  for(j=0;j<2;j++)
					if(obj2[a][i][j]==vrai) grille[px+i][py+j]=faux;
				for(i=0;i<3;i++)
				  for(j=0;j<2;j++) 
					if(obj3[c][j][i]==vrai) grille[px+j][py+i]=obj3[c][j][i];
					
			  }
		  }
	  if(b==vrai) ob=ob+10;
	  }
	else
	{
	if(ob>10)
	  {
		if(ob==11)
		  {
			for(i=2;i<4;i++) b=b&&(!obj1[i][0]||!grille[px+i-1][py]);
			b=b&&(!obj1[0][0]||!grille[px-1][py]);
			if(b==vrai)
			  {
				for(i=0;i<4;i++) grille[px][py+i]=faux;
				for(i=0;i<4;i++) grille[px+i-1][py]=vrai;
				ob=1;
				px--;
			  }
		  }
		else
		  {
			if(ob==18||ob==19)
			  {
				for(i=0;i<2;i++)
				 for(j=0;j<2;j++)
				  {
					if(obj3[c][j][i]==faux) b=b&&(!obj2[a][i][j]||!grille[px+j][py+i]);
				  }
					b=b&&(!obj2[a][2][0]||!grille[px+2][py])&&(!obj2[a][2][1]||!grille[px+2][py+1]);
				if(b==vrai)
				  {
					for(i=0;i<2;i++)
					for(j=0;j<3;j++) 
					  if(obj3[c][i][j]==vrai) grille[px+i][py+j]=faux;
					for(i=0;i<2;i++)
					for(j=0;j<3;j++)   
					  if(obj2[a][j][i]==vrai) grille[px+j][py+i]=obj2[a][j][i];
					ob=ob-10;
				  }  
				
			  }
			else
			  {
			   if(ob==12||ob==14||ob==16) d=ob-9;
			   else d=ob-11;
				for(i=0;i<2;i++)
				 for(j=0;j<2;j++)
				  {
					if(obj3[c][j][i]==faux) b=b&&(!obj2[f][i][j]||!grille[px+j][py+i]);
				  }
					b=b&&(!obj2[f][2][0]||!grille[px+2][py])&&(!obj2[f][2][1]||!grille[px+2][py+1]);
				if(b==vrai)
				  {
					for(i=0;i<2;i++)
					for(j=0;j<3;j++) 
					  if(obj3[c][i][j]==vrai) grille[px+i][py+j]=faux;
					for(i=0;i<2;i++)
					for(j=0;j<3;j++)   
					  if(obj2[f][j][i]==vrai) grille[px+j][py+i]=obj2[f][j][i];
					ob=d;
				  }  
			  
			  }
		  }
	  }
	  }
	sound(300);
	delay(20);
	nosound();
	Afficher();
  }
/************************************************************/
void Nouvelle()
  {
	int i,j;
	char *sco;
	for(i=1;i<12;i++)
	  for(j=1;j<23;j++)
		grille[i][j]=faux;
	score=50;
	bl=vrai;
	sound(500);
	delay(100);
	sound(600);
	delay(100);
	sound(700);
	delay(100);
	sound(1000);
	delay(100);
	sound(1500);
	delay(100);
	sound(1600);
	delay(100);
	sound(1700);
	delay(100);
	sound(2000);
	delay(100);
	nosound();
	Afficher();
	score=50;
	setfillstyle(0,15);
	bar(300,190,600,220);
	itoa(score,sco,10);
	settextstyle(1,0,4);
	setcolor(15);
	outtextxy(450-(strlen(sco)*12),183,sco);
  }
/***********************************************************/
void Effacer_ligne()
  {
	int i,j,k;
	char c;
	bool b;
	for(i=1;i<21;i++)
	  {
		while(1)
		{
		b=vrai;
		for(j=1;j<12;j++) 
		  b=b&&grille[j][i];
		if(b==vrai)
		{
		 px=0;
		 py=22;
		 score+=10;
		 sound(400);
		 delay(50);
		 sound(500);
		 delay(50);
		 sound(600);
		 delay(50);
		 sound(800);
		 delay(50);
		 sound(1000);
		 delay(50);
		 sound(1200);
		 delay(50);
		 nosound();
		  for(k=i;k<21;k++)
		   for(j=1;j<12;j++)
			grille[j][k]=grille[j][k+1];
		 if(kbhit())
		   {
		   c=getch();
		   switch(c)
			 {
			   case 'n' : Nouvelle();break;
			   case  27 : exit(1);break;
			 }
		   }
		 delay(100);
         Afficher();
		}
		else break;
		}
	  }
   }
/*************************************************************/
void Game_over()
  {
	int i,j;
	char c;
	if((bl==vrai)&&(max_ligne>19))
	  {
			for(i=1;i<12;i++)
			  for(j=1;j<21;j++)
				grille[i][j]=vrai;
			Afficher();
			settextstyle(1,0,4);
			setcolor(0);
			outtextxy(63,226,"GAME OVER");
			sound(100);
			delay(100);
			sound(150);
			delay(100);
			sound(200);
			delay(100);
			sound(250);
			delay(100);
			sound(200);
			delay(100);
			sound(100);
			delay(100);
			nosound();
			c=getch();
			if(c=='n') Nouvelle();
			if(c==27) exit(1);
	  bl=faux;
	  }
  }
/**************************************************************/
void Pause()
{
  int i,j;
  unsigned int t;
  void *p1,*p2,*p3,*p4,*p5,*p6;
  t=imagesize(0,0,214,240);
  p1=malloc(t);
  p2=malloc(t);
  p3=malloc(t);
  p4=malloc(t);
  p5=malloc(t);
  p6=malloc(t);
  getimage(0,0,214,240,p1);
  getimage(0,240,214,480,p2);
  getimage(214,0,428,240,p3);
  getimage(214,240,428,480,p4);
  getimage(428,0,642,240,p5);
  getimage(428,240,642,480,p6);
  for(i=0;i<getmaxy()/2;i++)
	for(j=0;j<getmaxx()/2;j++)
	  putpixel(j*2,i*2,0);
  setcolor(0);
  settextstyle(1,0,7);
  outtextxy(200,200,"PAUSE");
  getch();
  putimage(0,0,p1,COPY_PUT);
  putimage(0,240,p2,COPY_PUT);
  putimage(214,0,p3,COPY_PUT);
  putimage(214,240,p4,COPY_PUT);
  putimage(428,0,p5,COPY_PUT);
  putimage(428,240,p6,COPY_PUT);
 // free(p1);free(p2);free(p3);free(p4);free(p5);free(p6);
}
/*************************************************************/
void Procedure()
  {
	int i,j,k;
	char *sco;
	setfillstyle(1,LIGHTGRAY);
	i=getmaxx();
	j=getmaxy();
	bar(0,0,i,j);
	setfillstyle(1,7);
	bar(37,51,259,450);
	for(i=0;i<13;i++) grille[i][0]=vrai;
	for(i=0;i<23;i++) 
	  {
		grille[0][i]=vrai;
		grille[12][i]=vrai;
	  }
	setcolor(15);
	settextstyle(2,0,7);
	outtextxy(41,451,"ESC : Quitter");
	outtextxy(211,451,"N : Nouvelle partie");
	outtextxy(461,451,"P : Pause");
	settextstyle(4,0,8);
	outtextxy(294,12,"TETRIS");
	settextstyle(1,0,4);
	outtextxy(399,0,"2Asoft");
	outtextxy(400,130,"SCORE");
	setcolor(0);
	settextstyle(4,0,8);
	outtextxy(295,13,"TETRIS");
	settextstyle(1,0,4);
	outtextxy(400,1,"2Asoft");
	outtextxy(401,130,"SCORE");
	settextstyle(2,0,7);
	outtextxy(40,450,"ESC : Quitter");
	outtextxy(210,450,"N : Nouvelle partie");
	outtextxy(460,450,"P : Pause");
	rectangle(37,48,262,453);
	setcolor(15);
	line(460,355,490,355);
	line(490,355,490,385);
	line(380,355,410,355);
	line(410,355,410,385);
	line(420,330,450,330);
	line(450,330,450,360);
	line(420,370,450,370);
	line(450,370,450,400);
	outtextxy(436,336,"|");
	outtextxy(432,332,"^");
	outtextxy(392,300,"ROTATION");
	outtextxy(387,359,"<");
	line(389,371,401,371);
	outtextxy(300,359,"GAUCHE");
	outtextxy(476,359,">");
	line(468,371,480,371);
	outtextxy(506,359,"DROITE");
	outtextxy(435,375,"|");
	outtextxy(420,404,"BAS");
	settextstyle(2,1,7);
	outtextxy(424,384,"<");
	setcolor(0);
	settextstyle(2,0,7);
	line(380,355,380,385);
	line(380,385,410,385);
	line(420,330,420,360);
	line(420,360,450,360);
	line(420,370,420,400);
	line(420,400,450,400);
	line(460,355,460,385);
	line(460,385,490,385);
	outtextxy(435,335,"|");
	outtextxy(431,331,"^");
	outtextxy(391,299,"ROTATION");
	outtextxy(386,358,"<");
	line(388,370,400,370);
	outtextxy(299,358,"GAUCHE");
	outtextxy(475,358,">");
	line(467,370,479,370);
	outtextxy(505,358,"DROITE");
	outtextxy(435,375,"|");
	outtextxy(419,403,"BAS");
	settextstyle(2,1,7);
	outtextxy(423,383,"<");
	setfillstyle(0,0);
	bar(300,190,600,220);
	while(c!='n')
	  {
		c=getch();
		if(c==27) exit(1);
		sound(200);
		delay(500);
		nosound();
	  }
	setcolor(15);
	line(37,48,37,453);
	line(36,453,262,453);
	line(38,48,38,453);
	line(36,452,262,452);
	line(39,48,39,453);
	line(36,451,262,451);
	line(36,48,36,453);
	line(36,454,262,454);
	setcolor(0);
	line(37,48,262,48);
	line(262,48,262,453);
	line(38,49,262,49);
	line(261,48,261,452);
	line(39,50,262,50);
	line(260,48,260,451);
	line(36,47,262,47);
	line(263,47,263,454);
	setcolor(11);
	for(i=450;i>=51;i--)
	 {
	  line(40,i,259,i);
	  delay(1);
	 }
	Random();
	Nouvelle();
	while(1)
	  {
	 Effacer_ligne();
	 for(k=0;k<21;k++)
	  {
		j=0;
		for(i=0;i<3;i++)
		  { 
			c=0;
			while (kbhit())	c=getch();
			if(c==77) Droite();
			if(c==75) Gauche();
			if(c==72) Rotation();
			if((c=='n')||(c=='N')) {Nouvelle();Random();}
			if(c==80) {j=300;break;}
			if((c=='p')||(c=='P')) Pause();
			if(c==27) exit(1);
			delay(150);
			  
		   }
		Descendre();
		delay(300-j);
		if(bl==vrai) break;
		}
		Game_over();
		setfillstyle(0,11);
		bar(300,190,600,220);
		itoa(score,sco,10);
		settextstyle(1,0,4);
		outtextxy(450-(strlen(sco)*12),183,sco);

	  }
  }
/**************************************************************/
void Debut()
  {
	int i1;
	float milieu_y;
	sound(500);
	delay(100);
	sound(600);
	delay(100);
	sound(700);
	delay(100);
	sound(1000);
	delay(100);
	sound(1500);
	delay(100);
	sound(1600);
	delay(100);
	sound(1700);
	delay(100);
	sound(2000);
	delay(100);
	nosound();
	settextstyle(2,0,7);
	outtextxy(360,260,"Presente ...");
	settextstyle(1,0,9);
	outtextxy(160,140,"2Asoft");
	sleep(1);
	getch();
	milieu_y = 240;
	setcolor(11);
	for (i1 = 0; i1 <= milieu_y; i1++) 
	{
	rectangle (0+i1, 0+i1, getmaxx()-i1 , getmaxy()-i1);
	delay(1);
	}
	setcolor(BLACK);
	for (i1 = 0; i1 <= milieu_y; i1++) 
	{
	rectangle (0+i1, 0+i1, getmaxx()-i1 , getmaxy()-i1);
	delay(1);
	}
	sound(500);
	delay(100);
	sound(600);
	delay(100);
	sound(700);
	delay(100);
	sound(1000);
	delay(100);
	sound(1500);
	delay(100);
	sound(1600);
	delay(100);
	sound(1700);
	delay(100);
	sound(2000);
	delay(100);
	nosound();
	setcolor(15);
	outtextxy(150,180,"TETRIS");
	sleep(1);
	getch();
  }
/***************************************************************/
void main()
  { 
	char c;
	int d=DETECT,m,i;
	initgraph(&d,&m,"");
	Debut();
	Procedure();
	closegraph();
  }

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.