begin process at 2008 07 06 15:32:07
1 205 627 membres
195 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : SDL de l'aide plz [ Divers / Débutant(e) ] (jimmy30)

SDL de l'aide plz le 12/05/2008 16:43:38

jimmy30
/* 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 ^^

Re : SDL de l'aide plz le 12/05/2008 17:30:15

jfrancois
Réponse acceptée !
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


Re : SDL de l'aide plz le 12/05/2008 17:41:44

jimmy30
Réponse acceptée !
Merci peu être pe tu mexpliquer la suite du programme du moins les expressions importantes?

Re : SDL de l'aide plz le 12/05/2008 18:20:36

jfrancois
Réponse acceptée !

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


Re : SDL de l'aide plz le 12/05/2008 18:22:29

jimmy30
Réponse acceptée !
Merci c trop gentil tu me sauve


Classé sous : bar, screen, posball, posbar2, posbar1

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS