SDL de l'aide plz

Résolu
jimmy30 Messages postés 7 Date d'inscription vendredi 2 mai 2008 Statut Membre Dernière intervention 12 mai 2008 - 12 mai 2008 à 16:43
jimmy30 Messages postés 7 Date d'inscription vendredi 2 mai 2008 Statut Membre Dernière intervention 12 mai 2008 - 12 mai 2008 à 18:22
/* Placement des barres, balle et ligne */
posBar1.x = 50;
posBar1.y = SCREEN_H/2 - BAR_H/2;

posBar2.x = SCREEN_W - 50 - BAR_W;
posBar2.y = SCREEN_H/2 - BAR_H/2;


resetBall(&posBall,&xBall,&yBall);

posLigne.x = SCREEN_W/2 - LINE_W/2;
posLigne.y = 0;










while(alive)
{

/* Mise a jour du score */
sprintf(scoreP1_s,"%d",scoreP1);
sprintf(scoreP2_s,"%d",scoreP2);

score1 = TTF_RenderText_Solid(font, scoreP1_s, couleurScore);
score2 = TTF_RenderText_Solid(font, scoreP2_s, couleurScore);


/* Rebond sur les bords de l'ecran */
if(posBall.y <=0)
yBall = BALL_SPEED;
if(posBall.y >=600)
yBall = -BALL_SPEED;




/* Si victoire d'un joueur */
if(posBall.x <=0)
{
resetBall(&posBall,&xBall,&yBall);
scoreP2++;
}
if(posBall.x + BALL_SIZE >SCREEN_W)
{
resetBall(&posBall,&xBall,&yBall);
scoreP1++;
}




/* Collision avec la barre de gauche */

if(posBall.x <= posBar1.x+BAR_W && posBall.x > posBar1.x)
{

if(posBall.y >= posBar1.y && posBall.y <= posBar1.y + BAR_H)
xBall = BALL_SPEED;

}

/* Collision avec la barre de droite */
if(posBall.x >= posBar2.x && posBall.x < posBar2.x + BAR_W/2)
{

if(posBall.y >= posBar2.y && posBall.y <= posBar2.y + BAR_H)
xBall = -BALL_SPEED;

}
Voial une partie d'un pong simple question je cherche a comprendre comment ca fonstionne et la je bloque sur SCREEN_H et BAR_H pareil pour le _W
Quelqu'un peut t'il m'expliquer ce morceau svp
Merci ^^

4 réponses

cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
12 mai 2008 à 17:30
Bonjour,
SCREEN_H screen height hauteur de l'écran (en pixels)SCREEN_W screen width largeur de l'écran (en pixels)

BAR_H/W = hauteur/largeur de la barre

Jean-François
3
jimmy30 Messages postés 7 Date d'inscription vendredi 2 mai 2008 Statut Membre Dernière intervention 12 mai 2008
12 mai 2008 à 17:41
Merci peu être pe tu mexpliquer la suite du programme du moins les expressions importantes?
3
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
12 mai 2008 à 18:20
Voilà une version un peu plus commentée avec ce que je me souviens d'un jeu de pong !

/* --- Barre 1 centrée verticalement à gauche de l'écran */
posBar1.x = 50;
posBar1.y = SCREEN_H/2 - BAR_H/2;




/* --- Barre 2 centrée verticalement à droite de l'écran */
posBar2.x = SCREEN_W - 50 - BAR_W;
posBar2.y = SCREEN_H/2 - BAR_H/2;




/* --- Placement des barres et de la balle */
resetBall(&posBall,&xBall,&yBall);




/* --- Placement de la ligne de séparation */
posLigne.x = SCREEN_W/2 - LINE_W/2;
posLigne.y = 0;






/* --- Boucle du jeu */
while(alive)
{
   /* --- Mise à jour des scores */
   sprintf(scoreP1_s,"%d",scoreP1);
   sprintf(scoreP2_s,"%d",scoreP2);
   score1 = TTF_RenderText_Solid(font,scoreP1_s,couleurScore);
   score2 = TTF_RenderText_Solid(font,scoreP2_s,couleurScore);






   /* --- Rebond sur le bord supérieur de l'écran */
   /* --- ==> la balle repart vers le bas (dans le même sens)*/   if (posBall.y <0) yBall BALL_SPEED; // vitesse verticale






   /* --- Rebond sur le bord bas de l'écran */
   /* --- ==> la balle repart vers le haut (dans le même sens) */   if (posBall.y >600) yBall -BALL_SPEED; // vitesse verticale






   /* --- Si la balle atteint le bord gauche */
   /* --- ==> recentrer la balle */
   /* --- ==> ajouter un point au joueur 2 */

   if (posBall.x <= 0)
   {
      resetBall(&posBall,&xBall,&yBall);
      ++scoreP2;
   }






   /* --- Si la balle atteint le bord droit */
   /* --- ==> recentrer la balle */
   /* --- ==> ajouter un point au joueur 1 */
   if (posBall.x + BALL_SIZE > SCREEN_W)
   {
      resetBall(&posBall,&xBall,&yBall);
      ++scoreP1;
   }






   /* --- Si la balle atteint la barre de gauche */
   /* --- ==> la balle repart vers la droite */
   if (posBall.x <= posBar1.x+BAR_W  &&  posBall.x > posBar1.x)
      if (posBall.y >= posBar1.y && posBall.y <= posBar1.y + BAR_H)
         xBall = BALL_SPEED; // vitesse horizontale






   /* --- Si la balle atteint la barre de droite */
   /* --- ==> la balle repart vers la gauche */
   if (posBall.x >= posBar2.x  &&  posBall.x < posBar2.x + BAR_W/2)
      if (posBall.y >= posBar2.y && posBall.y <= posBar2.y + BAR_H)
         xBall = -BALL_SPEED; // vitesse horizontale



   ...






Jean-François
3
jimmy30 Messages postés 7 Date d'inscription vendredi 2 mai 2008 Statut Membre Dernière intervention 12 mai 2008
12 mai 2008 à 18:22
Merci c trop gentil tu me sauve
3
Rejoignez-nous