begin process at 2012 02 08 08:48:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

OpenGL

 > HORLOGE NUMÉRIQUE EN SDL

HORLOGE NUMÉRIQUE EN SDL


 Information sur la source

Note :
Aucune note
Catégorie :OpenGL Classé sous :horloge, numérique, digit SDL Niveau :Débutant Date de création :04/02/2008 Date de mise à jour :04/02/2008 18:09:13 Vu / téléchargé :7 988 / 362

Auteur : Dorn17

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

 Description

Cliquez pour voir la capture en taille normale
Salut! Ben voila mon premier code posté :-)
L'idée de base était de faire une horloge numérique avec la bibliothèque SDL.h
Toute critique sera la bienvenue.
Merci d'avance
Ah le tout a été réalisé avec DEV-C++

Source

  • #include <stdlib.h>
  • #include <stdio.h>
  • #include <windows.h>
  • #include <SDL\SDL.h>
  • int main(int argc, char *argv[])
  • {
  • SDL_Event event;
  • SDL_Surface *ecran = NULL, *num[10],*point = NULL;
  • SDL_Rect position[8]; int i=0,j=0,k=0,l=0,m=0,n=0,a=1;
  • position[0].x = 200;
  • position[0].y = 100;
  • SDL_Init(SDL_INIT_VIDEO);
  • ecran = SDL_SetVideoMode(800, 300, 32, SDL_HWSURFACE);
  • SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
  • num[0]=SDL_LoadBMP("digit-0.bmp");
  • num[1]=SDL_LoadBMP("digit-1.bmp");
  • num[2]=SDL_LoadBMP("digit-2.bmp");
  • num[3]=SDL_LoadBMP("digit-3.bmp");
  • num[4]=SDL_LoadBMP("digit-4.bmp");
  • num[5]=SDL_LoadBMP("digit-5.bmp");
  • num[6]=SDL_LoadBMP("digit-6.bmp");
  • num[7]=SDL_LoadBMP("digit-7.bmp");
  • num[8]=SDL_LoadBMP("digit-8.bmp");
  • num[9]=SDL_LoadBMP("digit-9.bmp");
  • point=SDL_LoadBMP("Deux_points.bmp");
  • /*Blitte les zéros de départ*/
  • SDL_BlitSurface(num[0],NULL,ecran,&position[0]);
  • position[1].x = 262 ; position[1].y = 100;
  • SDL_BlitSurface(num[0],NULL,ecran,&position[1]);
  • position[2].x = 339 ; position[2].y = 100;
  • SDL_BlitSurface(point,NULL,ecran,&position[2]);
  • position[3].x = 371 ; position[3].y = 100;
  • SDL_BlitSurface(num[0],NULL,ecran,&position[3]);
  • position[4].x = 433 ; position[4].y = 100;
  • SDL_BlitSurface(num[0],NULL,ecran,&position[4]);
  • position[5].x = 510 ; position[5].y = 100;
  • SDL_BlitSurface(point,NULL,ecran,&position[5]);
  • position[6].x = 542 ; position[6].y = 100;
  • SDL_BlitSurface(num[0],NULL,ecran,&position[6]);
  • position[7].x = 604 ; position[7].y = 100;
  • SDL_BlitSurface(num[0],NULL,ecran,&position[7]);
  • SDL_Flip(ecran);
  • while(i<2 && j<4)
  • {
  • if(i<1)
  • {SDL_BlitSurface(num[i],NULL,ecran,&position[0]);SDL_BlitSurface(num[j],NULL,ecran,&position[1]);SDL_Flip(ecran);}
  • else
  • {SDL_BlitSurface(num[i],NULL,ecran,&position[0]);SDL_BlitSurface(num[j],NULL,ecran,&position[1]);SDL_Flip(ecran);}
  • if(k<1)
  • {SDL_BlitSurface(num[k],NULL,ecran,&position[3]);SDL_BlitSurface(num[l],NULL,ecran,&position[4]);SDL_Flip(ecran);}
  • else
  • {SDL_BlitSurface(num[k],NULL,ecran,&position[3]);SDL_BlitSurface(num[l],NULL,ecran,&position[4]);SDL_Flip(ecran);}
  • if(m<1)
  • {SDL_BlitSurface(num[m],NULL,ecran,&position[6]);SDL_BlitSurface(num[n],NULL,ecran,&position[7]);SDL_Flip(ecran);}
  • else
  • {SDL_BlitSurface(num[m],NULL,ecran,&position[6]);SDL_BlitSurface(num[n],NULL,ecran,&position[7]);SDL_Flip(ecran);}
  • n++;Sleep(1000);
  • if(n==10)
  • {n=0; m++;}
  • if(m==6)
  • {m=0;n=0; l++;}
  • if(l==10)
  • {l=0;k++;}
  • if(k==6)
  • {k=0;l=0;j++;}
  • if(j==10)
  • {j=0;i++;}
  • }
  • while(a==1)
  • {SDL_WaitEvent(&event);
  • switch(event.type)
  • {case SDL_QUIT: a=0;break;}
  • }
  • for(i=0;i<10;i++)
  • {SDL_FreeSurface(num[i]);}
  • SDL_FreeSurface(point);
  • SDL_Quit();
  • return EXIT_SUCCESS;
  • }
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include <SDL\SDL.h>

  
int main(int argc, char *argv[])
{
    SDL_Event event;
    SDL_Surface *ecran = NULL, *num[10],*point = NULL;
    SDL_Rect position[8]; int i=0,j=0,k=0,l=0,m=0,n=0,a=1;

    position[0].x = 200;
    position[0].y = 100;

    SDL_Init(SDL_INIT_VIDEO);
    
     ecran = SDL_SetVideoMode(800, 300, 32, SDL_HWSURFACE);
    SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
    
    num[0]=SDL_LoadBMP("digit-0.bmp");
    num[1]=SDL_LoadBMP("digit-1.bmp");
    num[2]=SDL_LoadBMP("digit-2.bmp");
    num[3]=SDL_LoadBMP("digit-3.bmp");
    num[4]=SDL_LoadBMP("digit-4.bmp");
    num[5]=SDL_LoadBMP("digit-5.bmp");
    num[6]=SDL_LoadBMP("digit-6.bmp");
    num[7]=SDL_LoadBMP("digit-7.bmp");
    num[8]=SDL_LoadBMP("digit-8.bmp");
    num[9]=SDL_LoadBMP("digit-9.bmp");
    point=SDL_LoadBMP("Deux_points.bmp");

/*Blitte les zéros de départ*/
SDL_BlitSurface(num[0],NULL,ecran,&position[0]);
position[1].x = 262 ; position[1].y = 100;
SDL_BlitSurface(num[0],NULL,ecran,&position[1]);
position[2].x = 339 ; position[2].y = 100;
SDL_BlitSurface(point,NULL,ecran,&position[2]);
position[3].x = 371 ; position[3].y = 100;
SDL_BlitSurface(num[0],NULL,ecran,&position[3]);
position[4].x = 433 ; position[4].y = 100;
SDL_BlitSurface(num[0],NULL,ecran,&position[4]);
position[5].x = 510 ; position[5].y = 100;
SDL_BlitSurface(point,NULL,ecran,&position[5]);
position[6].x = 542 ; position[6].y = 100;
SDL_BlitSurface(num[0],NULL,ecran,&position[6]);
position[7].x = 604 ; position[7].y = 100;
SDL_BlitSurface(num[0],NULL,ecran,&position[7]);

SDL_Flip(ecran);

while(i<2 && j<4)
{
  if(i<1)
  {SDL_BlitSurface(num[i],NULL,ecran,&position[0]);SDL_BlitSurface(num[j],NULL,ecran,&position[1]);SDL_Flip(ecran);}
  else
  {SDL_BlitSurface(num[i],NULL,ecran,&position[0]);SDL_BlitSurface(num[j],NULL,ecran,&position[1]);SDL_Flip(ecran);}
    
  if(k<1)
  {SDL_BlitSurface(num[k],NULL,ecran,&position[3]);SDL_BlitSurface(num[l],NULL,ecran,&position[4]);SDL_Flip(ecran);}
  else
  {SDL_BlitSurface(num[k],NULL,ecran,&position[3]);SDL_BlitSurface(num[l],NULL,ecran,&position[4]);SDL_Flip(ecran);}
  
  if(m<1)
  {SDL_BlitSurface(num[m],NULL,ecran,&position[6]);SDL_BlitSurface(num[n],NULL,ecran,&position[7]);SDL_Flip(ecran);}
  else
  {SDL_BlitSurface(num[m],NULL,ecran,&position[6]);SDL_BlitSurface(num[n],NULL,ecran,&position[7]);SDL_Flip(ecran);}
       

n++;Sleep(1000);
if(n==10)
{n=0; m++;}
if(m==6)
{m=0;n=0; l++;}
if(l==10)
{l=0;k++;}
if(k==6)
{k=0;l=0;j++;}
if(j==10)
{j=0;i++;}

}      
       
       
  while(a==1)
    {SDL_WaitEvent(&event);
     switch(event.type)
     {case SDL_QUIT: a=0;break;}
    }
   
   for(i=0;i<10;i++)
   {SDL_FreeSurface(num[i]);}
    SDL_FreeSurface(point); 
    
    SDL_Quit();

    return EXIT_SUCCESS;
}


	




 Conclusion

Un des gros problèmes que j'ai eu est relatif à la gestion d'évènements par la SDL. En effet la condition  d'arrêt que j'ai mise entre les lignes 85 et 89 :
                 while(a==1)
                   {SDL_WaitEvent(&event);
                        switch(event.type)
                        {case SDL_QUIT: a=0;break;}
                   }
ne marche pas correctement. A chaque fois le système n'arrive pas à terminer correctement l'application.


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

04 février 2008 18:09:13 :
.

 Sources de la même categorie

Source avec Zip Source avec une capture AFFICHER DES COURBES DE BEZIER par shorzy
Source avec Zip Source avec une capture BASE/MOTEUR 3D EN QT/OPENGL (COMPLET ET FONCTIONNEL!) POUR U... par envi33
Source avec Zip Source avec une capture CLASSE AVEC OPENGL - OBJETS 3D ET ANIMATIONS par rasta63
Source avec Zip Source avec une capture LETTRES 3D AVEC OPENGL ET QT par opossum_farceur
Source avec Zip CUBE 3D GLUT32 VC++ ET DEVC++ par bobby03

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture RÉSOLUTION NUMERIQUE par skone007
Source avec Zip TIMER par tibur
Source avec Zip Source avec une capture ACTIVEX OLE HORLOGE GRAPHIQUE par yann_lo_san
Source avec Zip HORLOGE EN SDL par PLA
Source avec Zip Source avec une capture Source .NET (Dotnet) HORLOGE GRAPHIQUE par florian15

Commentaires et avis

Commentaire de acx01b le 04/02/2008 18:40:32

salut

j'ai un peu bidouillé ton code:


#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include <SDL\SDL.h>


int main(int argc, char *argv[])
{
    SDL_Event event;
    SDL_Surface *ecran = NULL, *num[10],*point = NULL;
    SDL_Rect position[8]; int i=0,j=0,k=0,l=0,m=0,n=0,a=1;

    SDL_Init(SDL_INIT_VIDEO);

    ecran = SDL_SetVideoMode(800, 300, 32, SDL_HWSURFACE);

    SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));

    num[0]=SDL_LoadBMP("digit-0.bmp");
    num[1]=SDL_LoadBMP("digit-1.bmp");
    num[2]=SDL_LoadBMP("digit-2.bmp");
    num[3]=SDL_LoadBMP("digit-3.bmp");
    num[4]=SDL_LoadBMP("digit-4.bmp");
    num[5]=SDL_LoadBMP("digit-5.bmp");
    num[6]=SDL_LoadBMP("digit-6.bmp");
    num[7]=SDL_LoadBMP("digit-7.bmp");
    num[8]=SDL_LoadBMP("digit-8.bmp");
    num[9]=SDL_LoadBMP("digit-9.bmp");
    point=SDL_LoadBMP("Deux_points.bmp");



    Uint32 t0 = 0;
    while(1) {
        Uint32 t = SDL_GetTicks() / 1000;
        int dif = t - t0;

        int dif_sec = dif%60;
        int dif_min = (dif/60)%60;
        int dif_hour = dif/60/60;

        int dif_sec_0 = dif_sec % 10;
        int dif_sec_1 = dif_sec / 10;
        int dif_min_0 = dif_min % 10;
        int dif_min_1 = dif_min / 10;
        int dif_hour_0 = dif_hour % 10;
        int dif_hour_1 = dif_hour / 10;

        position[0].x = 200; position[0].y = 100;
        SDL_BlitSurface(num[dif_hour_1],NULL,ecran,&position[0]);
        position[1].x = 262 ; position[1].y = 100;
        SDL_BlitSurface(num[dif_hour_0],NULL,ecran,&position[1]);
        position[2].x = 339 ; position[2].y = 100;
        SDL_BlitSurface(point,NULL,ecran,&position[2]);
        position[3].x = 371 ; position[3].y = 100;
        SDL_BlitSurface(num[dif_min_1],NULL,ecran,&position[3]);
        position[4].x = 433 ; position[4].y = 100;
        SDL_BlitSurface(num[dif_min_0],NULL,ecran,&position[4]);
        position[5].x = 510 ; position[5].y = 100;
        SDL_BlitSurface(point,NULL,ecran,&position[5]);
        position[6].x = 542 ; position[6].y = 100;
        SDL_BlitSurface(num[dif_sec_1],NULL,ecran,&position[6]);
        position[7].x = 604 ; position[7].y = 100;
        SDL_BlitSurface(num[dif_sec_0],NULL,ecran,&position[7]);


        while (SDL_PollEvent(&event)) {
            switch(event.type) {
                case SDL_QUIT: goto fin;
            }
        }
        SDL_Flip(ecran);
    }

   fin:
    for(i=0;i<10;i++) {
        SDL_FreeSurface(num[i]);
    }

    SDL_FreeSurface(point);

    SDL_Quit();
    return EXIT_SUCCESS;
}

Commentaire de max12 le 04/02/2008 19:08:52 administrateur CS

Ça serait drôle si tu ajoutais le son que l'ont entend dans la série "twenty four hour" lorsqu'une seconde s'écoule :P

Commentaire de isohelix le 04/02/2008 20:22:18

Perso je ne mets pas de note car chez moi il ne fonctionna pas ton programme, enfin pas totalement. J'ai wxDevc++ et j'ai une fenêtre dos qui apparaît puis la fenêtre SDL et qui noire avec rien dedans... donc je peux pas jugé, désolé.

Commentaire de Monyisageek le 05/02/2008 18:06:34

T'as pensé a ajouter des images ?

Commentaire de Monyisageek le 05/02/2008 18:11:55

Ma question s'adressait a ISOHELIX, comme celle-ci:
Peut être tu n'es pas sous le bon OS, t'as quel windows ?

Effectivement acx01b, ton code est plus stable ;)

@++

Commentaire de Dorn17 le 06/02/2008 13:50:17

ACXO1B c'est génial. Effectivement c'est bien plus stable.
Mais c'est quoi la différence fondamentale entre PollEvent et Waitevent?

Pour le son c'est vrai ce serait plus cool, je m'y mets le plus tôt possible

Merci

Commentaire de cheikhouna le 08/02/2008 10:46:32

j'aurai preferé que tu mettes les digits en jaune et mets le son d jack bauer: ces evenements se deroulent entre 25h et 26h.....

Commentaire de TURNZ le 12/09/2008 18:09:31

Osef que tu préfère le jaune, les gouts et les couleurs ne se discute pas ici, c'est surtout le code qui dois être jugé..

Puis le vert est la couleur qui fait référence aux radio-réveil dont l'affichage est généralement de cette couleur là, alors pour ton histoire de jaune....

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Horloge numérique sous LINUX Fedora [ par diablo31170 ] Salutations, j'essaye de faire une horloge sous Fedora avec Kdevelopp en C++ (bien s&#251;r :) ), mais je n'arrive pas &#224; trouver des sources qui Thread [ par diablo31170 ] Salut&nbsp;&#224; tous,Comme le titre l'indique, je vais parler de Thread sous Linux en C++.Mon probl&#232;me est de permettre l'affichage de l'horlog FTP transfert de fichier [ par deck_bsd ] Bonjour a tous,Alors voila j'expose mon problème . J'ai crée un programme qui cherche sur le disque dur toute les photos numérique et les envoie sur u Cycle d'horloge [ par xkamen ] Bonjour,Est ce que vous connaissez un site sur les nombres de cycles d'horloge nécessaires pour effectuer des opérations du style (modulo, multiplicat Besoin urgent d'aide pour appli console (horloge) [ par dalma101 ] IMPORTANT ET URGENT. MERCI D'AVANCE Bonjour, mon amie a un projet console d'horloge + réveil à faire pour ses cours en c++ horloge [ par dj_ludo ] Bonjour, Je voudrais faire un programme en C pour faire tourner un servo moteur sur le port //. Pour faire mon programme j'utilise Devcpp, et mon prob Calcul numérique avec Dev cpp [ par ffnajia ] Bonjour à tous,Est ce que c'est possible de faire du calcul numérique avec dev cpp? on peut trouver des solveur pour résoudre des équations différenti Remise à l'heure [ par XaThom ] bonjour,Sous windows XP, je réalise une acquisition de données avec une carte au format  PCI, le logiciel est développé avec c++ Builder 6. Lorsque le Horloge C++.net [ par Geoffrai02 ] Bonjour j'aurai besoin d' une Horloge dans un composant utilisateur.Sur celle-ci les 3 aiguilles (heure,minute,seconde) et  les graduations de chaques Evènements clavier [ par RoulianRoss ] Bonjour,J'aimerais pouvoir piloter un bras articulé à l'aide d'un pavé numérique.Pour cela, j'aimerais savoir comment récupérer les événements clavier


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,778 sec (3)

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