voici le code :
TForm1 *Form1;
//declarations
class defbriques
{
public:
float posx,posy;
int touche;
};
int x,y,vx,vy,mx,my;
float tailbricx,tailbricy;
#define nbbrikx 20
#define nbbriky 20
class defbriques mur[nbbrikx][nbbriky];
//---------------------------------------------------------------
//--------------------------fonctions----------------------------
//---------------------------------------------------------------
//dessin des briques---------------------------------------------
void dessin(class defbriques mur[nbbrikx][nbbriky])
{
for (int i=0;i<nbbrikx;i++)
{
for (int j=0;j<nbbriky;j++)
{
if (mur[i][j].touche!=0)
{
Form1->Image1->Canvas->Pen->Color=clBlack;
Form1->Image1->Canvas->Rectangle(mur[i][j].posx,mur[i][j].posy,mur[i][j].posx+tailbricx,mur[i][j].posy+tailbricy);
}
}
}
};
//----------------------------------------------------------------
//testtouch
void testtouch(class defbriques mur[nbbrikx][nbbriky], int x, int y)
{
for (int i=0;i<nbbrikx;i++)
{
for (int j=0;j<nbbriky;j++)
{
if (x>=mur[i][j].posx && x<=mur[i][j].posx+tailbricx && mur[i][j].touche!=0 && y-5>=mur[i][j].posy && y-5<=mur[i][j].posy+tailbricy)
{
mur[i][j].touche=mur[i][j].touche-1;
vy=-vy;
Form1->Image1->Canvas->Pen->Color=clWhite;
Form1->Image1->Canvas->Rectangle(mur[i][j].posx,mur[i][j].posy,mur[i][j].posx+tailbricx,mur[i][j].posy+tailbricy);
}
}
}
};
//----------------------------------------------------------------
/*
mx,my=position de la souris
*/
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
//déplace ball
Image1->Canvas->Pen->Color=clWhite;
Image1->Canvas->Brush->Color=clWhite;
Image1->Canvas->Ellipse(x-5,y-5,x+5,y+5);
x=x+vx;
y=y+vy;
Image1->Canvas->Pen->Color=clRed;
Image1->Canvas->Brush->Color=clRed;
Image1->Canvas->Ellipse(x-5,y-5,x+5,y+5);
//rebond murs
if (x+5>=Image1->Width) vx=-vx;
if (x-5<=0) vx=-vx;
if (y-5<=0) vy=-vy;
//rebond raket
if (y+5>=Image1->Height-10 && x>=mx-20 && x<=mx+20)
{
vy=-vy;
}
//mur
testtouch(mur,x,y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
x=100;
y=250;
vx=2;
vy=2;
Label1->Caption="";
tailbricx=Image1->Width/nbbrikx;
tailbricy=Image1->Height/(nbbriky*2);
for (int i=0;i<nbbrikx;i++)
{
for (int j=0;j<nbbriky;j++)
{
mur[i][j].posx=tailbricx*i;
mur[i][j].posy=tailbricy*j;
mur[i][j].touche=1;
}
}
dessin(mur);
}