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();
}
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.