begin process at 2010 02 09 23:24:58
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > PONG EN SDL

PONG EN SDL


 Information sur la source

Note :
6,5 / 10 - par 2 personnes
6,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Jeux Niveau :Débutant Date de création :30/01/2005 Vu :3 006

Auteur : jul38

Ecrire un message privé
Site perso
Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note

 Description

Voila, c'est mon deuxieme petit projet avec la sdl.C'est un pong mais qui a un petit bu,je vous laisse le decouvrir.Il peut aussi servir de base (gestion des touches,affichages....)
le zip est trop gros donc je l'ai mis sur mon site.
http://membres.lycos.fr/jul3838/downloads.ph p et cliquer sur pong.

Source

  • #include <stdlib.h>
  • #include <SDL/sdl.h>
  • #include <SDL/SDL_TTF.h>
  • #include <stdio.h>
  • #include <fmod.h>
  • /*variables des positions raquettes et balle*/
  • SDL_Rect rballe={512,380,0,0};
  • SDL_Rect rraquet1={2,350,0,0};
  • SDL_Rect rraquet2={1000,350,0,0};
  • SDL_Rect intr;
  • SDL_Rect fleche={290,600,0,0};
  • SDL_Rect fin1a,fin2b;
  • /*variables score et sens balle,debut de l'intro et autres....*/
  • int sens1=0, sens2=0, scorep=0, scoreo=0, vit=1,game=1,introdu=1,fini,refini=1;
  • /*les sons*/
  • FMUSIC_MODULE *son_mid;
  • /*pour les booléens*/
  • typedef enum{false,true}bool;
  • /* Les fonctions*/
  • void collision();
  • void loadimage();
  • void affiche();
  • void deplacement();
  • void score();
  • void ordinateur();
  • void joueur();
  • void jouintro();
  • void introd();
  • /*liste des images*/
  • SDL_Surface *Screen, *firstscreen, *balle, *raquette1, *raquette2,*intro, *flech, *fin1, *fin2;
  • TTF_Font *font;
  • /* les events*/
  • SDL_Event event;
  • /* Notre belle fonction main*/
  • int main(int argc, char *argv[])
  • {
  • initialisation();
  • loadimage();
  • introd();
  • FMUSIC_PlaySong(son_mid);
  • fini=1; /*variables pour le score,defini si continue*/
  • while(game!=0) /* boucle principale*/
  • {
  • ordinateur();
  • joueur();
  • collision();
  • score();
  • deplacement();
  • affiche();
  • continuer();
  • SDL_Flip(Screen);
  • }
  • FMUSIC_StopSong(son_mid);
  • SDL_Quit;
  • return 0;
  • }
  • void initialisation() /* petite initialisation de la sdl */
  • { FSOUND_Init(44100, 32, 0);
  • SDL_Init(SDL_INIT_VIDEO);
  • Screen=SDL_SetVideoMode(1024, 768, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
  • SDL_ShowCursor(0);
  • SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY,SDL_DEFAULT_REPEAT_INTERVAL+1);
  • SDL_Delay(100);
  • }
  • void loadimage()/*charge les images + son*/
  • {
  • intro=SDL_LoadBMP("intro.bmp");
  • flech=SDL_LoadBMP("fleche.bmp");
  • balle=SDL_LoadBMP("balle.bmp");
  • raquette1=SDL_LoadBMP("raquet1.bmp");
  • raquette2=SDL_LoadBMP("raquet2.bmp");
  • firstscreen=SDL_LoadBMP("scene.bmp");
  • fin1=SDL_LoadBMP("ga1.bmp");
  • fin2=SDL_LoadBMP("ga2.bmp");
  • SDL_SetColorKey(balle,SDL_SRCCOLORKEY,SDL_MapRGB(balle->format,255,0,0));
  • /*pour mettre le fond de la balle transparent donc plus de rouge*/
  • son_mid=FMUSIC_LoadSong("son_mid.mid");
  • SDL_Delay(500);
  • }
  • void joueur() /* la cest la commande du joueur + Choix du jeu ds l'intro*/
  • {
  • if (SDL_PollEvent(&event))
  • {
  • switch(event.type)
  • {
  • case SDL_KEYDOWN:
  • {
  • Uint8 *keys = SDL_GetKeyState(NULL);
  • if (keys[SDLK_UP])
  • {
  • if (introdu!=0)
  • {
  • fleche.y=fleche.y-50; /*je pense que vous l'avez compris*/
  • if(fleche.y<600)
  • fleche.y=600;
  • }
  • rraquet1.y=rraquet1.y-30;
  • if (rraquet1.y<0)
  • rraquet1.y=0;
  • }
  • if (keys[SDLK_DOWN])
  • {
  • if (introdu!=0)
  • {
  • fleche.y=fleche.y+50; /*je pense que vous l'avez compris*/
  • if(fleche.y>650)
  • fleche.y=650;
  • }
  • rraquet1.y=rraquet1.y+30;
  • if (rraquet1.y>600)
  • rraquet1.y=600;
  • }
  • if(keys[SDLK_ESCAPE]) /* quitte proprement la sdl*/
  • {
  • game=0;
  • introdu=0;
  • refini=0;
  • }
  • if(keys[SDLK_RETURN])
  • {
  • if(fleche.y==600) /* depla des fleches pr l'intro*/
  • {
  • game=1;
  • introdu=0;
  • }
  • if(fleche.y==650) /* depla des fleches pr l'intro*/
  • {
  • introdu=0;
  • game=0;
  • }
  • if(fini!=0) /* la variables qui va permettre de continuer si score>10*/
  • {
  • refini=0;
  • }
  • }
  • }
  • break;
  • }
  • }
  • }
  • void ordinateur()
  • { /* l'ordinateur se deplace selon les coordonnées de la balle*/
  • if(rballe.y>rraquet2.y)
  • {
  • rraquet2.y=rraquet2.y+40;
  • if (rraquet2.y>600)
  • rraquet2.y=600;
  • }
  • if(rballe.y<rraquet2.y)
  • {
  • rraquet2.y=rraquet2.y-40;
  • if (rraquet2.y<0)
  • rraquet2.y=0;
  • }
  • }
  • void deplacement()
  • {/* different sens de la balle*/
  • if (sens1==0)
  • { rballe.x=rballe.x-(3*vit);
  • }
  • if(sens1==1)
  • {
  • rballe.x=rballe.x+(3*vit);
  • }
  • if (sens2==0)
  • {
  • rballe.y=rballe.y-(3*vit);
  • }
  • if(sens2==1)
  • {
  • rballe.y=rballe.y+(3*vit);
  • }
  • }
  • void collision()
  • {/*on gere les collisions avec le mur et les raquettes,on change donc le sens de balle*/
  • if(rballe.y<=0 && rballe.x>512)
  • {vit=vit+1;
  • sens2=1;
  • sens1=0;
  • }
  • if(rballe.y<=0 && rballe.x<512)
  • {vit=vit+1;
  • sens1=0;
  • sens2=1;
  • }
  • if(rballe.y>=720 && rballe.x<512)
  • {vit=vit+1;
  • sens1=1;
  • sens2=0 ;
  • }
  • if(rballe.y>=720 && rballe.x>512)
  • {vit=vit+1;
  • sens2=0;
  • sens1=1;
  • } /* merci ptival de m'avoir aidé sur les collisions balle/raquettes */
  • if((rballe.x + rballe.w) >= rraquet1.x
  • &&
  • (rballe.x) <= (rraquet1.x + rraquet1.w)
  • &&
  • (rballe.y + rballe.h) >= rraquet1.y
  • &&
  • (rballe.y) <= (rraquet1.y + rraquet1.h)
  • )
  • {vit=vit+1;
  • sens1=1 ;
  • }
  • if((rballe.x + rballe.w) >= rraquet2.x
  • &&
  • (rballe.x) <= (rraquet2.x + rraquet2.w)
  • &&
  • (rballe.y + rballe.h) >= rraquet2.y
  • &&
  • (rballe.y) <= (rraquet2.y + rraquet2.h))
  • {vit=vit+1;
  • sens1=0;
  • sens2=0;
  • }
  • }
  • void score()
  • {
  • if (rballe.x<=0) /*si le joueur ne rattrape pas la balle on remet a O*/
  • {
  • scoreo=scoreo+1;
  • rballe.y=380;
  • rballe.x=512;
  • vit=1;
  • sens1=0;
  • sens2=0;
  • }
  • if(rballe.x>=1024) /*si l'ordi ne ratttrape pas la balle*/
  • {
  • scorep=scorep+1;
  • rballe.y=380;
  • rballe.x=512;
  • vit=1;
  • sens1=1;
  • sens2=1;
  • }
  • }
  • void affiche()
  • {/*réaffiche les positions*/
  • SDL_BlitSurface(firstscreen,NULL,Screen,NULL);
  • SDL_BlitSurface(balle,NULL,Screen,&rballe);
  • SDL_BlitSurface(raquette1,NULL,Screen,&rraquet1);
  • SDL_BlitSurface(raquette2,NULL,Screen,&rraquet2);
  • }
  • void introd() /* l'intro.....*/
  • {
  • while(introdu!=0)
  • {
  • joueur();
  • SDL_BlitSurface(intro,NULL,Screen,&intr);
  • SDL_BlitSurface(flech,NULL,Screen,&fleche);
  • SDL_Flip(Screen);
  • }
  • }
  • void continuer()
  • {
  • if(scoreo>9)
  • {
  • while (refini!=0)
  • {
  • joueur();
  • SDL_BlitSurface(fin1,NULL,Screen,&fin1a);
  • SDL_Flip(Screen);
  • }
  • rballe.x=512;
  • rballe.y=380;
  • rraquet1.x=2;
  • rraquet1.y=350;
  • rraquet2.x=1000;
  • rraquet2.y=350;
  • sens1=1;
  • sens2=1;
  • scoreo=0;
  • scorep=0;
  • vit=1;
  • refini=1;
  • SDL_Delay(50);
  • }
  • if(scorep>9)
  • {
  • while (refini!=0)
  • {
  • joueur();
  • SDL_BlitSurface(fin2,NULL,Screen,&fin2b);
  • SDL_Flip(Screen);
  • }
  • rballe.x=512;
  • rballe.y=380;
  • rraquet1.x=2;
  • rraquet1.y=350;
  • rraquet2.x=1000;
  • rraquet2.y=350;
  • sens1=1;
  • sens2=1;
  • scoreo=0;
  • scorep=0;
  • vit=1;
  • refini=1;
  • SDL_Delay(50);
  • }
  • }
#include <stdlib.h>
#include <SDL/sdl.h>
#include <SDL/SDL_TTF.h>
#include <stdio.h>
#include <fmod.h>

/*variables des positions raquettes et balle*/
SDL_Rect rballe={512,380,0,0}; 
SDL_Rect rraquet1={2,350,0,0};
SDL_Rect rraquet2={1000,350,0,0};
SDL_Rect intr;
SDL_Rect fleche={290,600,0,0};
SDL_Rect fin1a,fin2b;

/*variables score et sens balle,debut de l'intro et autres....*/  
int sens1=0, sens2=0, scorep=0, scoreo=0, vit=1,game=1,introdu=1,fini,refini=1;

/*les sons*/
FMUSIC_MODULE *son_mid;

/*pour les booléens*/
typedef enum{false,true}bool;

/* Les fonctions*/
void collision();
void loadimage();
void affiche();
void deplacement();
void score();
void ordinateur();
void joueur();
void jouintro();
void introd();

/*liste des images*/
SDL_Surface *Screen, *firstscreen, *balle, *raquette1, *raquette2,*intro, *flech, *fin1, *fin2;

TTF_Font *font;
/* les events*/
SDL_Event event; 

/* Notre belle fonction main*/
int main(int argc, char *argv[])
{ 
  initialisation(); 
  loadimage();
  introd();
  FMUSIC_PlaySong(son_mid);
  fini=1; /*variables pour le score,defini si continue*/
   
   while(game!=0) /* boucle principale*/
  { 
   ordinateur();   
   joueur();
   collision();
   score();
   deplacement();
   affiche();
  continuer();
   SDL_Flip(Screen);
  } 
    
   FMUSIC_StopSong(son_mid);
   SDL_Quit;   
   return 0;
}

void initialisation() /* petite initialisation de la sdl */
{    FSOUND_Init(44100, 32, 0);
    SDL_Init(SDL_INIT_VIDEO);
    Screen=SDL_SetVideoMode(1024, 768, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
  SDL_ShowCursor(0);
    SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY,SDL_DEFAULT_REPEAT_INTERVAL+1);
    SDL_Delay(100);
}

void loadimage()/*charge les images + son*/
{   
    intro=SDL_LoadBMP("intro.bmp");
    flech=SDL_LoadBMP("fleche.bmp");
    balle=SDL_LoadBMP("balle.bmp");
    raquette1=SDL_LoadBMP("raquet1.bmp");
    raquette2=SDL_LoadBMP("raquet2.bmp");
    firstscreen=SDL_LoadBMP("scene.bmp");
    fin1=SDL_LoadBMP("ga1.bmp");
    fin2=SDL_LoadBMP("ga2.bmp");
    SDL_SetColorKey(balle,SDL_SRCCOLORKEY,SDL_MapRGB(balle->format,255,0,0));
    /*pour mettre le fond de la balle transparent donc plus de rouge*/
    
     son_mid=FMUSIC_LoadSong("son_mid.mid"); 
     SDL_Delay(500);
}





void joueur() /* la cest la commande du joueur + Choix du jeu ds l'intro*/
{ 
   

    if (SDL_PollEvent(&event))
     {
       switch(event.type)
        {
                   
        case SDL_KEYDOWN:
            {
             Uint8 *keys = SDL_GetKeyState(NULL);
                if (keys[SDLK_UP]) 
                   {
                   if (introdu!=0)
                   {
                   fleche.y=fleche.y-50; /*je pense que vous l'avez compris*/
                     if(fleche.y<600)
                     fleche.y=600;
                    } 
                     rraquet1.y=rraquet1.y-30;
                       if (rraquet1.y<0)
                      rraquet1.y=0;                   
                    }   
                if (keys[SDLK_DOWN])
                   { 
                   if (introdu!=0)
                   {
                       fleche.y=fleche.y+50; /*je pense que vous l'avez compris*/
                      if(fleche.y>650)
                      fleche.y=650;
                       } 
                       rraquet1.y=rraquet1.y+30;
                       if (rraquet1.y>600)
                        rraquet1.y=600;               
                    }
                    if(keys[SDLK_ESCAPE]) /* quitte proprement la sdl*/
                      { 
                       game=0;
                      introdu=0;
                      refini=0;
                      }
                    if(keys[SDLK_RETURN])  
                    {
                       if(fleche.y==600)  /* depla des fleches pr l'intro*/
                       {
                        game=1;
                        introdu=0;
                       }
                       if(fleche.y==650) /* depla des fleches pr l'intro*/
                       {
                        introdu=0;
                        game=0;
                       }
                       if(fini!=0)  /* la variables qui va permettre de continuer si score>10*/
                       {
                       refini=0;
                       }
                    } 
                }    
              break;
            }  
     }       

} 

void ordinateur() 
{ /* l'ordinateur se deplace selon les coordonnées de la balle*/
    if(rballe.y>rraquet2.y)
    {
        rraquet2.y=rraquet2.y+40;
        if (rraquet2.y>600)
        rraquet2.y=600;
    }
    if(rballe.y<rraquet2.y)
    {
        rraquet2.y=rraquet2.y-40;
        if (rraquet2.y<0)
        rraquet2.y=0;
    }    
   
}

void deplacement()
{/* different sens de la balle*/
    if (sens1==0)
    {   rballe.x=rballe.x-(3*vit); 
                 
     }
     if(sens1==1)
     { 
       rballe.x=rballe.x+(3*vit);
       } 
     if (sens2==0)
     {
     rballe.y=rballe.y-(3*vit);
     }  
    if(sens2==1)
     {
       rballe.y=rballe.y+(3*vit);
      }                     
 }           
 
void collision()
{/*on gere les collisions avec le mur et les raquettes,on change donc le sens de balle*/
    if(rballe.y<=0 && rballe.x>512)
    {vit=vit+1;
        sens2=1;
        sens1=0;
        
    }
    if(rballe.y<=0 && rballe.x<512)
    {vit=vit+1;
    sens1=0;
     sens2=1;
     
     }       
    if(rballe.y>=720 && rballe.x<512)
    {vit=vit+1;
       sens1=1;
       sens2=0 ;
     
    }
    if(rballe.y>=720 && rballe.x>512)
    {vit=vit+1;
     sens2=0;
     sens1=1;
    
    }    /* merci ptival de m'avoir aidé sur les collisions balle/raquettes */
    if((rballe.x + rballe.w) >= rraquet1.x
&&
(rballe.x) <= (rraquet1.x + rraquet1.w)
&&
(rballe.y + rballe.h) >= rraquet1.y
&&
(rballe.y) <= (rraquet1.y + rraquet1.h)
)
    {vit=vit+1;
        sens1=1 ;
        
       
    }
    if((rballe.x + rballe.w) >= rraquet2.x
&&
(rballe.x) <= (rraquet2.x + rraquet2.w)
&&
(rballe.y + rballe.h) >= rraquet2.y
&&
(rballe.y) <= (rraquet2.y + rraquet2.h)) 
    {vit=vit+1;
    sens1=0;
      sens2=0; 
       
       
     }
    
}
void score()
{
    if (rballe.x<=0) /*si le joueur ne rattrape pas la balle on remet a O*/
    {
    scoreo=scoreo+1;
    
    rballe.y=380;
    rballe.x=512;
    vit=1;
    sens1=0;
    sens2=0;
    }    
    if(rballe.x>=1024) /*si l'ordi ne ratttrape pas la balle*/
    {
    scorep=scorep+1;
    rballe.y=380;
    rballe.x=512;
    vit=1;
    sens1=1;
    sens2=1;
    } 
    
    
}

void affiche()
{/*réaffiche les positions*/
          SDL_BlitSurface(firstscreen,NULL,Screen,NULL);   
          SDL_BlitSurface(balle,NULL,Screen,&rballe);
          SDL_BlitSurface(raquette1,NULL,Screen,&rraquet1);
          SDL_BlitSurface(raquette2,NULL,Screen,&rraquet2);
}       
 

 void introd() /* l'intro.....*/
 {
 while(introdu!=0)
 {
 
 joueur();

 SDL_BlitSurface(intro,NULL,Screen,&intr); 
 SDL_BlitSurface(flech,NULL,Screen,&fleche); 
 SDL_Flip(Screen);
 } 
 } 
 
 void continuer()
 { 
    if(scoreo>9)
    {
    while (refini!=0)
    {
    joueur(); 
    SDL_BlitSurface(fin1,NULL,Screen,&fin1a);
    SDL_Flip(Screen);
     }
    rballe.x=512;
    rballe.y=380;
    rraquet1.x=2;
    rraquet1.y=350;
    rraquet2.x=1000;
    rraquet2.y=350;
    sens1=1;
    sens2=1;
    scoreo=0;
    scorep=0;
    vit=1;
    refini=1;
    SDL_Delay(50);
    }
    if(scorep>9)
    {
    while (refini!=0)
    {
    joueur(); 
    SDL_BlitSurface(fin2,NULL,Screen,&fin2b);
    SDL_Flip(Screen);
     }
    rballe.x=512;
    rballe.y=380;
    rraquet1.x=2;
    rraquet1.y=350;
    rraquet2.x=1000;
    rraquet2.y=350;
    sens1=1;
    sens2=1;
    scoreo=0;
    scorep=0;
    vit=1;
    refini=1;
    SDL_Delay(50);
    }
}  
                                               



 Sources du même auteur

CASSE BRIQUE AVEC LA SDL
Source avec Zip MORPION EN C AVEC LA SDL

 Sources de la même categorie

Source avec Zip Source avec une capture PLUS OU MOINS par antho974
Source avec Zip Source avec une capture TETRIS EN C++ AVEC SDL par Marmalus
Source avec une capture DÉMINEUR SOUS TERMINAL par aom333
Source avec Zip JEU: MARIO SOKOBAN par astro53
Source avec Zip JEU PUISSANCE IV par ElendilAranwe

Commentaires et avis

Commentaire de DeathAngel67300 le 30/01/2005 22:34:53

Ben le problème c'est que ton jeu bug.

Après avoir touché deux fois la balle, celle-ci se met juste à faire des diagonales sur l'écran, sans faire perdre ni gagner qqun.
Ensuite la vitesse augmente un peu vite à mon gout, au 6 ème rebond la balle se voit plus.
Dernier commentaire : la jouabilité est pas top du tout, à chaque fois faut appuyer sur la touche pour monter et descendre, vaudrait mieux pouvoir rester appuyé et avoir un mouvement fluide.
Je pense que tu as les moyens d'améliorer tout ca. Bon courage :)

Commentaire de Kirua le 31/01/2005 07:59:38

pour l'histoire de touches, il y a une fonction qui peut t'aider: SDL_Key_Repeat je pense, qq chose dans ce goût là, qui permet d'envoyer periodiquement les messages claviers tant que la touche n'est pas relâchée

Commentaire de jul38 le 31/01/2005 17:57:00

J'ai utilise SDL_KeyRepeat,et tu peux rester appuyé sur la touche faut attendre 1 sec avant qu'elle se mette a bouger,pour le probleme des diagonales, je veux essayer de voir sa.
Merci

Commentaire de Kirua le 31/01/2005 18:02:52

1s dans un jeu de réflexe, c'est pas terrible hein :/
faut paramètrer ça, pour que ce soit immédiat, AMHA.

Commentaire de shenron666 le 01/02/2005 16:16:37

Pour les touches tu peux gérer de la façon suivante :
Tu crée un tableau de 256 chars pour mapper ton clavier (ou un tableau de 4 si tu gères que 4 touches si tu préfères)
à chaque mémoire correspond 1 touche, si la touche est appuyée la mémoire est à 1 sinon elle est à 0
Ensuite tu utilise les fonctions SDL pour détected qu'une touche a été manipulée, tu regardes si la touche a été appuyée ou relachée et tu modifie la mémoire en conséquence

à coté de cela dans la boucle principale du programme tu regarde les mémoires pour savoir si tu vas bouger la raquette

Commentaire de Kirua le 01/02/2005 17:41:30

Avec la SDL, ce tableau est construit et géré d'office par l'API. Tu as une fct qui ressemble à SDL_GetKeyState() ou apparenté.

Commentaire de Chouchou182 le 02/02/2005 22:18:06

Salut

Shenron666, pour mapper l'état (appuyé ou non) de 256 touches, un octet suffit : 1 bit par touche et on utilise des and et or bit à bit pour faire les tests.

Ce sera plus rapide et l'utilisation de la mémoire sera moindre.

Personnellement j'intercepte les appuis des touches via SDL_KEYDOWN et SDL_KEYUP et j'ajuste par des opérations logiques l'état des bits de ma variable contenant l'état des inputs de mon jeu.

Ensuite pour déplacer, je teste successivement l'état de chaque touche et agis en conséquence.

Bonne prog

Chouchou

Commentaire de Kirua le 02/02/2005 22:21:12

1 octets ça te fait 256 états, donc 8 touches (forcément, 8 bits). Pour sauver toutes les 256 touches, il te faut 256 / 8 = 32 octets au total.

Commentaire de Chouchou182 le 03/02/2005 17:56:49

Oula

en effet, j'ai fumé quoi moi ??

Il faut donc utiliser le type de donnée dont la taille en mémoire correspond à la capacité recherchée (256 octets est trop et 1 octet est effectivement insuffisant).

Merci Kirua pour ta présence d'esprit.

Commentaire de shenron666 le 03/02/2005 20:10:35

C'est vrai, bien vu dirait l'aveugle que je suis ^__^
merci pour ce s précisions

Commentaire de Arnaud16022 le 05/02/2005 21:27:58

meme un bool fait 8 bits
pourquoi tant d'économie? les barrettes de ram font minimum 128 Mo, 1024 pour les chanceux, et un tableau de 256 fait... 256 octets (si ce sont des bool) soit un millionnieme de ta memoire.
pour info, rien de le double buffer en 800*600 fait plus de 5 Mo.
alors qu'allouer seulement 1 bit par touche et se dépatouiller avec tes or et and doit faire pas mal (toutes proportion gardées) chuter le fps.

Commentaire de Kirua le 05/02/2005 22:33:51

La taille du double buffer est directement proportionnelle à la profondeur de tes couleurs. Èvidemment si tu fais du 32 bits... ;)

sinon, le booléen est bien stocké sur 1 octet en C++ (en VB c'est sur 4 octets je pense... à vérifier), mais t'as pas accès à toute la plage de valeur... c'est juste pour la clarté.

Commentaire de Arnaud16022 le 05/02/2005 23:16:16

"t'as pas accès à toute la plage de valeur" tu veux dire quoi par la? un booleen dans l'idéal c'est true ou false, meme si en C c'est tous les entier entre 0 et 127... (bicoz les 8 bits)

Commentaire de Kirua le 05/02/2005 23:54:00

ben que le compilo t'empêcheras justement de jouer avec les 8 bits de ton booléen, quand bien même ils sont physiquement tous là.

Commentaire de Arnaud16022 le 06/02/2005 18:19:43

ah bon? on peux pas écrire
bool dummy=105;
?
enfin bon.. l'intéret est limité, ya qu'a prendre un BYTE dans ce cas la.

Commentaire de Kirua le 06/02/2005 18:22:55

Tu peux écrire ça, mais c'est parce que tu a un cast implicite qui va te le transformer en true.

BYTE c'est pas standard sauf erreur, il faut utiliser char ou unsigned char et vérifier avec sizeof() que ça fait bien 1 octet.

Commentaire de omer9311 le 26/10/2005 23:54:48

Salut,

Moi aussi je fais un pong et je galérais sur les collisions balle/raquettes jusqu'a ce que je trouve la solution dans ton code, merci et bonne continuation !

@+

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales