Bonjour, dans mon jeu toute les 20 millisecondes je dois faire les tests de collisions ; ma question est la suivante : pour plus de performance est-ce qu'il est préférable de créer une struct OffSet par exemple ou je déclare une fois pour toutes mes variables ou bien est-ce qu'il est préférable de recrée toutes les 20 millisecondes mes variables dans mes différente fonctions ?

Est-ce mieux de faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
typedef struct OffSet
{
int XMin1;
int XMax1;
int YMin1;
int YMax1;
int XMin2;
int XMax2;
int YMin2;
int YMax2;
int vx, vy;
}OffSet;
 
../..
 
 
void move_ball(Sprites* S,dataImageScr* D,Clash_SplitScr* CS,InitSdl *A,OffSet* O)
{
  int i=0;
 
  O->XMin2=D->ship.x;
  O->XMax2=D->ship.x+S->ShipW;
  O->YMin2=D->ship.y;
  O->YMax2=D->ship.y+S->ShipH;
 
  for(i=0;i<D->NbBallScr;i++)
    {
      O->XMin1=D->ball[i]->x;
      O->YMin1=D->ball[i]->y;
      O->XMax1=D->ball[i]->x+S->BallW;
      O->YMax1=D->ball[i]->y+S->BallH;
      O->vx=D->ball[i]->vx;
      O->vy=D->ball[i]->vy;
 
      D->ball[i]->x += O->vx;
      D->ball[i]->y += O->vy;
 
      clash_splitScr(O->XMin1,O->XMax1,O->YMin1,O->YMax1,CS,i); 
      clash_ballEdgesScr(S,D,A,i);
 
      clash_ShipBall(O->XMin1, O->XMax1, O->YMax1,
			    O->XMin2, O->XMax2, O->YMin2, O->YMax2,
			    O->vx, O->vy,i,S,D);
	}
    }
Ou bien la 2eme solution :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
void move_ball(Sprites* S,dataImageScr* D,Clash_SplitScr* CS,InitSdl *A)
{
  int i=0;
 
  int vx, vy;
  int XMin1,YMin1,XMax1,YMax1;
 
  int XMin2=D->ship.x;
  int XMax2=D->ship.x+S->ShipW;
  int YMin2=D->ship.y;
  int YMax2=D->ship.y+S->ShipH;
 
  for(i=0;i<D->NbBallScr;i++)
    {
      XMin1=D->ball[i]->x;
      YMin1=D->ball[i]->y;
      XMax1=D->ball[i]->x+S->BallW;
      YMax1=D->ball[i]->y+S->BallH;
      vx=D->ball[i]->vx;
      vy=D->ball[i]->vy;
 
      D->ball[i]->x += vx;
      D->ball[i]->y += vy;
 
      clash_splitScr(XMin1,XMax1,YMin1,YMax1,CS,i);
      clash_ballEdgesScr(S,D,A,i);
 
      clash_ShipBall(XMin1,XMax1,YMax1,
			   XMin2,XMax2,YMin2,YMax2,
			   vx,vy,i,S,D);
	}
    }