begin process at 2012 05 27 14:22:34
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > CHRONO EN IMAGE (AVEC ALLEGRO SOUS DEV CPP)

CHRONO EN IMAGE (AVEC ALLEGRO SOUS DEV CPP)


 Information sur la source

Note :
Aucune note
Catégorie :Astuces Niveau :Débutant Date de création :29/10/2003 Vu / téléchargé :4 533 / 581

Auteur : Dri

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

 Description

Cliquez pour voir la capture en taille normale
Le code est simple, il crée un compteur qu'on peut réinitialiser avec la touche ESPACE et pour quitter il suffit d'appuyer sur ECHAP, c'est mon premier programme avec allegro

Source

  • #include <allegro.h>
  • /* handler du chrono */
  • volatile unsigned long timer;
  • void chrono()
  • {
  • timer++;
  • }
  • END_OF_FUNCTION(chrono);
  • /* fonction main... */
  • int main()
  • {
  • allegro_init();
  • install_timer();
  • install_keyboard();
  • set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 320, 240, 0, 0);
  • set_color_depth(24);
  • LOCK_VARIABLE(timer);
  • LOCK_FUNCTION(chrono);
  • install_int(chrono, 10);
  • PALETTE pal;
  • BITMAP *buffer = create_bitmap(320, 240);
  • BITMAP *chrono = load_bmp("timer.bmp", pal);
  • BITMAP *number[10]; /* les nombres */
  • BITMAP *dp = create_bitmap(8, 16); /* les deux-points */
  • for(int i=0; i<10; i++)
  • {
  • number[i] = create_bitmap(8, 16);
  • blit(chrono, number[i], i*8, 0, 0, 0, 8, 16);
  • }
  • blit(chrono, dp, 80, 0, 0, 0, 8, 16);
  • char min, sec, cen; /* minutes secondes centièmes */
  • int x=0;
  • while(! key[KEY_ESC])
  • {
  • poll_keyboard();
  • clear_to_color(buffer, makecol(0, 0, 255));
  • if(key[KEY_SPACE]) timer = 0;
  • cen = timer % 100;
  • sec = (timer / 100) % 60;
  • min = (timer / 6000) % 60;
  • x=132;
  • masked_blit(number[min/10], buffer, 0, 0, x, SCREEN_H/3, 8, 16); x += 8;
  • masked_blit(number[min%10], buffer, 0, 0, x, SCREEN_H/3, 8, 16); x += 8;
  • masked_blit(dp, buffer, 0, 0, x, SCREEN_H/3, 8, 16); x += 8;
  • masked_blit(number[sec/10], buffer, 0, 0, x, SCREEN_H/3, 8, 16); x += 8;
  • masked_blit(number[sec%10], buffer, 0, 0, x, SCREEN_H/3, 8, 16); x += 8;
  • masked_blit(dp, buffer, 0, 0, x, SCREEN_H/3, 8, 16); x += 8;
  • masked_blit(number[cen/10], buffer, 0, 0, x, SCREEN_H/3, 8, 16); x += 8;
  • masked_blit(number[cen%10], buffer, 0, 0, x, SCREEN_H/3, 8, 16); x += 8;
  • blit(buffer, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);
  • }
  • allegro_exit();
  • return 0;
  • }
  • END_OF_MAIN();
#include <allegro.h>

/* handler du chrono */
volatile unsigned long timer;
void chrono()
{
  timer++;
}
END_OF_FUNCTION(chrono);

/* fonction main... */
int main() 
{       
  allegro_init();

  install_timer();
  install_keyboard();

  set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 320, 240, 0, 0);
  set_color_depth(24);

  LOCK_VARIABLE(timer);
  LOCK_FUNCTION(chrono);
  
  install_int(chrono, 10);
  
  PALETTE pal;
  
  BITMAP *buffer = create_bitmap(320, 240);
  BITMAP *chrono = load_bmp("timer.bmp", pal);
  BITMAP *number[10]; /* les nombres */
  BITMAP *dp = create_bitmap(8, 16); /* les deux-points */
  
  for(int i=0; i<10; i++)
  {
    number[i] = create_bitmap(8, 16);
    blit(chrono, number[i], i*8, 0, 0, 0, 8, 16);
  }
  blit(chrono, dp, 80, 0, 0, 0, 8, 16);

  char min, sec, cen; /* minutes secondes centièmes */
  int x=0;
  while(! key[KEY_ESC])
  {
    poll_keyboard();
    clear_to_color(buffer, makecol(0, 0, 255));
    
    if(key[KEY_SPACE]) timer = 0;
    cen = timer % 100;
    sec = (timer / 100) % 60;
    min = (timer / 6000) % 60;
    
    x=132;
    masked_blit(number[min/10], buffer, 0, 0, x, SCREEN_H/3, 8, 16); x += 8;
    masked_blit(number[min%10], buffer, 0, 0, x, SCREEN_H/3, 8, 16); x += 8;
    masked_blit(dp, buffer, 0, 0, x, SCREEN_H/3, 8, 16); x += 8;
    masked_blit(number[sec/10], buffer, 0, 0, x, SCREEN_H/3, 8, 16); x += 8;
    masked_blit(number[sec%10], buffer, 0, 0, x, SCREEN_H/3, 8, 16); x += 8;
    masked_blit(dp, buffer, 0, 0, x, SCREEN_H/3, 8, 16); x += 8;
    masked_blit(number[cen/10], buffer, 0, 0, x, SCREEN_H/3, 8, 16); x += 8;
    masked_blit(number[cen%10], buffer, 0, 0, x, SCREEN_H/3, 8, 16); x += 8;
    
    blit(buffer, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);
  }

  allegro_exit();
  return 0;     
}     

END_OF_MAIN();


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • alleg41.dllTélécharger ce fichier [Réservé aux membres club]502 580 octets
  • chrono.devTélécharger ce fichier [Réservé aux membres club]754 octets
  • chrono.exeTélécharger ce fichier [Réservé aux membres club]17 770 octets
  • main.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 865 octets
  • timer.bmpTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 278 octets

Télécharger le zip


 Sources du même auteur

[C] LE TRI, L'ÉCHANGE ET LES POINTEURS
PLUS GRAND DÉNOMINATEUR COMMUN

 Sources de la même categorie

Source avec Zip SCHEDULER RR FIFO par yvesB87
Source avec Zip ALGORITHMES RÉCURSIFS VS ALGORITHMES ITÉRATIFS par yvesB87
Source avec Zip Source avec une capture C++ FORMAT D'IMAGE AVEC QT par pop70
Source avec une capture EXEMPLE DE POINTEURS DE FONCTION par pop70
Source avec Zip Source avec une capture [C++] CLASS REGISTER par Miwik

Commentaires et avis

Commentaire de Dri le 30/10/2003 08:56:43

Si vous avez des commentaires, n'hésitez pas à poster. Pour info ce code je l'avai fait en basic et en installant allegro j'ai voulu comprendre comment fonctionnent les timer...

Dri

Commentaire de GoldenEye le 30/10/2003 19:11:04

set_color_depth est à mettre avant le set_gfx_mode
tu peux factoriser le code d'affichage en mettant cen min sec dans un tableau de 3 valeurs et coller un for() pour l'affichage
Utilise draw_sprite plutot que masked_blit
Ok pour le reste, le design des chiffres est drôle

Commentaire de Dri le 01/11/2003 18:02:45

Merci pour les conseils, je vais le faire dès que possible :)

Dri

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,671 sec (3)

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