Casse brique

Résolu
HUSNET Messages postés 6 Date d'inscription mercredi 2 mars 2005 Statut Membre Dernière intervention 4 mars 2005 - 2 mars 2005 à 21:23
HUSNET Messages postés 6 Date d'inscription mercredi 2 mars 2005 Statut Membre Dernière intervention 4 mars 2005 - 3 mars 2005 à 20:32
Slt
en fait j'utilise c++ builder et je dois faire un casse brique en cours seulement je n'arrive pas
a trouver comment faire pour supprimer la brique au contact de la balle sans faire
plein de tests pour chaque brique et si quelqu'un a une astuce, bah ça serait super sachant
que j'ai deja fait les trajectoires pour la balle... et il me reste plus que les briques...
merci d'avance

4 réponses

Vulpetrus Messages postés 70 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 21 décembre 2005
3 mars 2005 à 13:53
Normalement tu n'as pas à faire plein de test, pour un casse
brique de taille m X n, tu travaille avec un tableau d'entier
montab[m][n], tes briques sont representées dans ce tableau.

si montab[x][y] = 0 y a pas de brique à cette endroit

si montab[x][y] = 1 il y a une brique (=2 brique plus resistante =3 brique incassable etc ...)

montab[x][y] = -1 il y a une de tes balles

comme tu connais ta trajectoir de ta (tes) balle(s) (c'est toi
qui l'a dit) , tu peux donc determiner quelle va être la nouvelle
position de ta balle, tu fais un test sur cette nouvelle position, si
il ya une brique, tu la détruis (en mettant montab[x][y] = 0) et tu
change la trajectoire de ta balle. si il y en a pas tu déplace ta
balle à cette position. etc ...



y a pas plus simple je pense.

bon courage ;)
3
HUSNET Messages postés 6 Date d'inscription mercredi 2 mars 2005 Statut Membre Dernière intervention 4 mars 2005
3 mars 2005 à 18:19
Merci beaucoup pour ton conseil
Je pense que j'utiliserais des tableaux pour les briques:tab[i][j]=1 au debut
et ça dessineras la brique et -1 au cas ou il y a contact pour ne pas dessiner avec une condition et j'espere que ça marcheras.

si tu veux mon programme il se résume a peu pres a ça:
il est bidon, je sais (je suis en premiere année de dut et je viens juste de commencer vcl et ça c'est mon projet) mais je ferais des améliorations après avoir régler les problèmes les plus importants

//---------------------------------------------------------------------------
TForm1 *Form1;
int i, j;
float X=100, Y=100, A=5, B=5, C=550, D=680;

//il faut aussi que je déclare les briques tab[i][j] et je les initialise a 1
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------



void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Refresh();
Canvas->Brush->Color = clYellow;
Canvas->Pen->Color = clBlue;
Canvas->Ellipse(X,Y,X+10,Y+10);
X=X+A;Y=Y+B;
if(Y<0){B=-B;}//equation de trajectoire de la balle au contact du mur
if(X>1020){A=-A;}
if(X<0){A=-A;}
Canvas->Brush->Color = clGray;
Canvas->Pen->Color = clBlue;
Canvas->Rectangle(C,D,C+200,D+20);
if(X>C) //equation de trajectoire de la balle au contact de la raket
{if(X<C+200)
{if(Y+10>D)
if(Y<D)
{
{if(X<C+25){A=-2.8*2;B=-0.8*2;}
else
{if(X<C+50){A=-2.3*2;B=-1.7*2;}
else
{if(X<C+75){A=-1.7*2;B=-2.3*2;}
else
{if(X<C+100){A=-0.8*2;B=-2.8*2;}
else
{if(X<C+125){A=0.8*2;B=-2.8*2;}
else
{if(X<C+150){A=1.7*2;B=-2.3*2;}
else
{if(X<C+175){A=2.3*2;B=-1.7*2;}
else
{A=2.8*2;B=-0.8*2;}
}}}}}}}}}}
for(i=0;i<20;i++) //briques c'est la que je ferais ce que tu m'as dis
{
for(j=1;j<3;j++)
{
Canvas->Brush->Color = clRed;
Canvas->Pen->Color = clBlue;
Canvas->Rectangle(i*50,j*20,(i+1)*50,(j+1)*20);


}
}
}


void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{


if(X<925) //mouvement de la raket
{if(X>100)
{
C=X-100;
}
}


}
0
Vulpetrus Messages postés 70 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 21 décembre 2005
3 mars 2005 à 18:32
Perso, j'utilise visual c++, c'est trés convivial.

Bonne chance pour ton projet. ;)
0
HUSNET Messages postés 6 Date d'inscription mercredi 2 mars 2005 Statut Membre Dernière intervention 4 mars 2005
3 mars 2005 à 20:32
en fait moi aussi j'utilise visual (c++ builder 5) je me suis trompé
et au fait merci parceque ça commence à marcher sauf que les images n'arrete pas de clignoter, je pense que c'est à cause du timer mais j'arrive pas à résoudre le pb
En tout cas merci pour ton conseil
0
Rejoignez-nous