Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1850 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  allegro en sacade

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

allegro en sacade

n°1212431
huben
Posté le 01-10-2005 à 14:56:55  profilanswer
 

Bonjour je m'amuse a developper un petit jeu (pourri) et qui tourne a peu pres bien sur un 2.4 GHZ mais ramme des qu'on descend, je pense que c'est du au fait que j'utilise une boucle pour generer l'image , en gros l'image est générée moins souvent et donc sa rame
 
je saispas si vous avez d'autres solutions...
 
 
voici mon code

Code :
  1. #include <allegro.h>
  2.      int point=0;
  3.      int i=0;
  4.      int Ltemp=0;
  5.      int L=0;
  6.      int H=200;
  7.      int L2=1024;
  8.      int H2=500;
  9.      int L3=512;
  10.      int H3=-500;
  11.      int L4=0;
  12.      int H4=0;
  13.      int L5=400;
  14.      int H5=20;
  15.      int rayon=50;
  16.      int rayon2=5;
  17.      int rayon3=30;
  18.    
  19.    void rects(int a,int b,int c,int d,int cl1,int cl2,int cl3,struct BITMAP *bmp,int rempl)
  20.      {
  21.       rect(bmp,a,b,c,d,makecol(cl1,cl2,cl3));
  22.      
  23.       if(mouse_x>a&&mouse_x<c&&mouse_y<d&&mouse_y>b)point--;
  24.      
  25.       }
  26.    void rectspb(int a,int b,int c,int d,int cl1,int cl2,int cl3,struct BITMAP *bmp,int rempl)
  27.      {
  28.       rectfill(bmp,a,b,c,d,makecol(cl1,cl2,cl3));
  29.      
  30.       if(mouse_x>a&&mouse_x<c&&mouse_y<d&&mouse_y>b&&mouse_b==1)point=point-10;
  31.       if(mouse_x>a&&mouse_x<c&&mouse_y<d&&mouse_y>b&&mouse_b==2)point=point-10;
  32.       if(mouse_x>a&&mouse_x<c&&mouse_y<d&&mouse_y>b&&mouse_b==0)point=point-10;
  33.       }
  34.    void rectspr(int a,int b,int c,int d,int cl1,int cl2,int cl3,struct BITMAP *bmp,int rempl)
  35.      {
  36.       rectfill(bmp,a,b,c,d,makecol(cl1,cl2,cl3));
  37.      
  38.       if(mouse_x>a&&mouse_x<c&&mouse_y<d&&mouse_y>b&&mouse_b==1)point--;
  39.       if(mouse_x>a&&mouse_x<c&&mouse_y<d&&mouse_y>b&&mouse_b==2)point=point+2;
  40.       }
  41.    void grosrect(int a,int b,int c,int d,struct BITMAP *bmp)
  42.       {
  43.       rect(bmp,a,b,c,d,makecol(200,0,100)); //TRACE rectangle ext
  44.       if(mouse_x<a)point--;//si souris hors rectangle alors un point en moins
  45.       if(mouse_x>c)point--;//-
  46.       if(mouse_y<b )point--;//-
  47.       if(mouse_y>d)point--;//-  
  48.       }
  49.    void rectangles(struct BITMAP *final)
  50.      {
  51.      grosrect(102,77,922,691,final);
  52.      grosrect(100,75,924,693,final);
  53.      rects(130,90,160,370,200,100,0,final,makecol(20,20,20));
  54.      rects(300,90,330,400,200,100,0,final,makecol(20,20,20));
  55.      rects(750,358,792,462,200,100,0,final,makecol(20,20,20));
  56.      rects(600,90,650,400,200,100,0,final,makecol(20,20,20));
  57.      rects(550,400,580,700,200,100,0,final,makecol(20,20,20));
  58.      rects(212,500,232,624,200,100,0,final,makecol(20,20,20));
  59.      rects(130,420,426,450,200,100,0,final,makecol(20,20,20));
  60.      rectspb(L,H,L+rayon3,H+rayon3,0,50,255,final,makecol(0,50,255));
  61.      rectspb(L5,H5,L5+rayon3,H5+rayon3,0,50,255,final,makecol(0,0,255));
  62.      rectspr(L2,H2,L2+rayon3,H2+rayon3,255,50,50,final,makecol(200,50,50));
  63.      rectspr(L3,H3,L3+rayon3,H3+rayon3,255,50,50,final,makecol(200,50,50));
  64.      rectspr(L4,H4,L4+rayon3,H4+rayon3,255,50,50,final,makecol(200,50,50));
  65.      }
  66.    
  67.      void souris(int maxm,int maxp,struct BITMAP *final,int ca,int cb)
  68.      { 
  69.              if (mouse_b==0) //souris
  70.                   {
  71.                   circle(final,mouse_x,mouse_y,rayon,ca);
  72.                   circlefill(final,mouse_x,mouse_y,rayon2,cb);
  73.                   }
  74.              
  75.               if (mouse_b==1)circlefill(final,mouse_x,mouse_y,rayon2,makecol(0,0,255));//clics
  76.               if (mouse_b==2)circlefill(final,mouse_x,mouse_y,rayon2,makecol(255,0,0));//-     
  77.      }
  78.     void depl()
  79.     {
  80.           srand(time(NULL));
  81.           L=L+15;
  82.           if(L>922){L=rand()%512;H=rand()%768;}
  83.           if(L2<75){L2=rand()%512;H2=rand()%768;}
  84.           if(H3>691){L3=rand()%512;H3=rand()%768;}
  85.           L2=L2-15;
  86.           H3=H3+12;
  87.           H4=H4+10;
  88.           L4=L4+10;
  89.           H5=H5+5;
  90.           L5=L5+5;
  91.     }
  92.          
  93.   void txt(struct BITMAP *final)
  94.   {
  95.      textout(final,font,"Ceci est la version C.05 (C comme constrution )du Mazeshoot.Projet secret developpé par B.A.S.",5,30,makecol(255,255,200));
  96.      textout(final,font,"Utilisez la souris pour faire bouger le rond.",12,40,makecol(0,200,100));
  97.      textout(final,font,"Cliquez avec le bouton gauche pour rendre le rond bleu, le bouton droit pour le rendre rouge et echap pour quitter",12,50,makecol(0,200,100));
  98.      textout(final,font,"Tirez en rouge sur, devinez quoi...les carres rouges,ils rapportent 2 points, ne vous trompez pas!!",12,60,makecol(0,200,100));
  99.      textout(final,font,"ATTENTION, les carrés bleus sont méchants ils vous font perdre 10 points a chaque contact",12,70,makecol(255,0,100));
  100.      if(point<0) textout(final,font,"T'ention,les carrés bleus, les rectangles gris et les sorties enlevent des points!",12,100,makecol(255,0,50));
  101.      textprintf(final,font,120,750,makecol(10,200,255),"nombre de points: %d",point);//on affiche le nb de points
  102.   }
  103. int main () //MAIN FUNCTION
  104.     {
  105.    
  106.      BITMAP*final; // création du bitmap final
  107.      allegro_init (); // initialisation d'allegro
  108.      install_keyboard (); //initialisation du clavier
  109.      set_gfx_mode (GFX_AUTODETECT,1024,768,0,0); // mode graphique et taille de l'écran
  110.      set_color_depth(32);
  111.      install_mouse();
  112.      final = create_bitmap (1024,768); // configauration du bitmap final
  113.      set_mouse_speed(3,3);
  114.    
  115.      while (key[KEY_ESC]==0) // tant que l'on appuie pas sur échap
  116.      {   i=i+3;
  117.          clear_bitmap (final);
  118.          txt(final);
  119.          rectangles(final); //Tracage des rectangles...
  120.          souris(-10,10,final,makecol(200,255,50),makecol(200,100,50));
  121.          depl();         
  122.          blit(final,screen,0,0,0,0,1024,768);//on envoie le bo*** a l'ecran
  123.          
  124.      }//et on recomence
  125.    
  126.      destroy_bitmap (final);// on détruit le bitmap
  127.      allegro_exit (); // on quitte allegro
  128.      return 0;
  129. }
  130. END_OF_MAIN();


 
voila, je résume, je crée mon image avec une série de fonctions que je définit avant
 
merci de votre aide


Message édité par huben le 01-10-2005 à 15:00:55
mood
Publicité
Posté le 01-10-2005 à 14:56:55  profilanswer
 

n°1212494
huben
Posté le 01-10-2005 à 16:49:01  profilanswer
 

up

n°1212522
el muchach​o
Comfortably Numb
Posté le 01-10-2005 à 17:49:23  profilanswer
 

huben, je te conseille d'éplucher les articles sur des sites comme Gamedev et Nehe Prod.  
Tu y apprendras comment faire une boucle d'événements et optimiser l'affichage avec du double buffering et des tas d'autres techniques importantes.


Message édité par el muchacho le 01-10-2005 à 17:57:54
n°1212552
huben
Posté le 01-10-2005 à 18:40:01  profilanswer
 

merci

n°1212557
huben
Posté le 01-10-2005 à 18:49:36  profilanswer
 

enfin, j'aimerai savoir si il y a des solutions en restant dans l'utilisaton de la bibliotheque Allegro

n°1212617
red factio​n
Posté le 01-10-2005 à 20:32:48  profilanswer
 

pas mal les noms des variables, jespere que taura jamais a gerer un gros projet  :p

n°1212627
huben
Posté le 01-10-2005 à 21:03:44  profilanswer
 

je peu toujours les changer
 
au fait, j'ai trouvé la sulutions, deux lignes étaient a inverser...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  allegro en sacade

 

Sujets relatifs
[C] allegro et édition de lienAllegro et Dev-C++
probleme avec AllegroRecherche d'un code : Texte défilant verticalement de façon non sacadé
Installation AllegroLire une vidéo avec allegro
dx8 dx9 allegro openGL ???[C++/Allegro] Claver Azerty sous Allegro
[allegro] image + transparence[debutant] [Allegro] ligne blanche [Resolut --> Bouble Buffering]
Plus de sujets relatifs à : allegro en sacade


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR