Se connecter / S'enregistrer

Résolu Blit multiple sous allegro

Solutions (3)
Tags :
  • Buffer
  • Bibliotheque
  • Programme
  • Programmation
|
Pour un programme que je fait avec la bibliothèque allegro j'aurais besoin de blitter plusieur fois mais quand il y a deux blit l'ecran laisse des marque noir voici le code ou il y a les deux blittage:
  1. #ifndef LOOP_C_INCLUDED
  2. #define LOOP_C_INCLUDED
  3. #include <allegro.h>
  4. #include "define.h"
  5.  
  6.  
  7.  
  8.  
  9. void mainloop(BITMAP* buffer, BITMAP* souris, FONT* ecr)
  10. {
  11.  
  12. int r = 255, g = 0, b = 0, choix = 0, taille = 1;
  13.  
  14. clear_to_color(buffer, makecol(blanc));
  15. show_mouse(souris);
  16. while(!key[KEY_ENTER])
  17. {
  18. if(key[KEY_ESC])
  19. return 0;
  20. text_mode(-1);
  21. textprintf_centre(buffer, ecr, SCREEN_W / 2, SCREEN_H / 2 - 200, makecol(rouge), "Cree par alexandre");
  22. textprintf_centre(buffer, ecr, SCREEN_W / 2, SCREEN_H / 2 - 150, makecol(rouge), "s: enregistrer");
  23. textprintf_centre(buffer, ecr, SCREEN_W / 2, SCREEN_H / 2 - 100, makecol(rouge), "l: ouvrir bmp dessin.bmp");
  24. textprintf_centre(buffer, ecr, SCREEN_W / 2, SCREEN_H / 2 - 50, makecol(rouge), "a/q: afficher/cacher le curseur");
  25. textprintf_centre(buffer, ecr, SCREEN_W / 2, SCREEN_H / 2, makecol(rouge), "clique gauche/droit: desinner Tourner roue souris: effacer n = nouveau dessin\nechape = quitter");
  26. textprintf_centre(buffer, ecr, SCREEN_W / 2, SCREEN_H / 2 + 50, makecol(rouge), "Bleu: b Rouge: r Blanc = w Vert: v Beige: p Jaune: j Gris: g Orange: o Noir: n Marron: m chiffre = taille");
  27. textprintf_centre(buffer, ecr, SCREEN_W / 2, SCREEN_H / 2 + 100, makecol(rouge), "Appuyer sur entrer pour continuer");
  28. blit(buffer, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);
  29. }
  30.  
  31.  
  32. clear_to_color(buffer, makecol(blanc));
  33. rouge;
  34. while(!key[KEY_ESC])
  35.  
  36. {
  37.  
  38. if(mouse_b & 2)
  39. rectfill(buffer, mouse_x, mouse_y, mouse_x + taille, mouse_y + taille, makecol(r, g, b));
  40. else if(mouse_b & 1)
  41. circlefill(buffer, mouse_x, mouse_y, taille, makecol(r, g, b));
  42. else if(mouse_z & 1)
  43. blanc;
  44. else if (keypressed())
  45. {
  46. choix=readkey();
  47. switch(choix >> 8)
  48. {
  49.  
  50.  
  51. case KEY_O:
  52. orange;
  53. break;
  54.  
  55.  
  56. case KEY_G:
  57. gris;
  58. break;
  59.  
  60.  
  61. case KEY_R:
  62. rouge;
  63. break;
  64.  
  65. case KEY_M:
  66. marron;
  67. break;
  68.  
  69. case KEY_P:
  70. beige;
  71. break;
  72.  
  73.  
  74. case KEY_B:
  75. bleu;
  76. break;
  77.  
  78.  
  79. case KEY_Z:
  80. blanc;
  81. break;
  82.  
  83.  
  84. case KEY_V:
  85. vert;
  86. break;
  87.  
  88. case KEY_J:
  89. jaune;
  90. break;
  91.  
  92. case KEY_N:
  93. clear_to_color(buffer, makecol(blanc));
  94. break;
  95.  
  96.  
  97.  
  98. case KEY_S:
  99. save_bitmap("dessin.pcx", buffer, NULL);
  100. break;
  101.  
  102.  
  103. case KEY_L:
  104. clear_bitmap(buffer);
  105. buffer = load_bitmap("dessin.pcx", NULL);
  106. if(!buffer)
  107. buffer = load_bitmap("dessin.tga", NULL);
  108. else if(!buffer)
  109. buffer = load_bitmap("dessin.bmp", NULL);
  110. else if(!buffer)
  111. buffer = load_bitmap("dessin.lbm", NULL);
  112. else if(!buffer)
  113. {
  114. set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);
  115. allegro_message("Erreur chargement image inexistante\nVerifier que le nom de l'image soit bien:\ndessin.pcx/bmp/lbm/tga\
  116. \n%s", allegro_error);
  117. return -1;
  118. }
  119. break;
  120.  
  121. case KEY_1_PAD:
  122. taille = tres_petit;
  123. break;
  124.  
  125. case KEY_2_PAD:
  126. taille = petit;
  127. break;
  128.  
  129. case KEY_3_PAD:
  130. taille = moyen;
  131. break;
  132.  
  133. case KEY_4_PAD:
  134. taille = moyen_grand;
  135. break;
  136.  
  137. case KEY_5_PAD:
  138. taille = grand;
  139. break;
  140.  
  141. case KEY_6_PAD:
  142. taille = grand_moyen;
  143. break;
  144.  
  145. case KEY_7_PAD:
  146. taille = tres_grand;
  147. break;
  148.  
  149. }
  150. }
  151. blit(souris, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);
  152. blit(buffer, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);
  153. clear_bitmap(souris);
  154.  
  155. }
  156. }
  157.  
  158. #endif // LOOP_C_INCLUDED

Merci.
Contenus similaires
  • Autres pages sur : blit multiple allegro
Meilleure solution
partage
|
Tes sprites font la bonnes tailles et la transparence est bien gérée ?

As-tu un screenshot de ton problème?
  • Commenter cette solution |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par alex331501.
  • Commenter cette réponse |
Score
0
òh
òi
|
Probleme regler merci.
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS