Accueil > Forum > > > > [SDL] Affichage + Timer
[SDL] Affichage + Timer
vendredi 24 août 2012 à 13:24:11 |
[SDL] Affichage + Timer

adel1433
|
bonjour
je suis débutant au domaine de programmation
et je doit réaliser un projet d'été constitué de 3 partie
1-afficher l'heure dans une fenêtre graphique
2-crée une zone de texte qui permet a l'utilisateur de faire entrer un temps pour l'alarme
3-bip sonore qui se déclenche au temps entrée par l'utilisateur
j'ai arrivé a réaliser la première partie en utilisant la bibliothèque SDL
Code c :
#include <stdlib.h>
#include <stdio.h>
#include <SDL.h>
#include <SDL_ttf.h>
#include <time.h>
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL;
SDL_Surface *texte = NULL;
SDL_Rect position;
SDL_Event event;
TTF_Font *police = NULL;
SDL_Color ecranCouleur = {0, 0, 0}, fontColor = {0, 255, 0};
int continuer = 1;
int tempsActuel = 0, tempsPrecedent = 0, compteur = 0;
char temps[20] ;
SDL_Init(SDL_INIT_VIDEO);
TTF_Init();
ecran = SDL_SetVideoMode(160, 80, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
SDL_WM_SetCaption("timer", NULL);
// Chargement de la police
police = TTF_OpenFont("font.ttf", 23);
// Initialisation du temps et du texte
tempsActuel = SDL_GetTicks();
time_t timestamp = time(NULL);
strftime(temps, sizeof(temps), "%X", localtime(×tamp));
texte = TTF_RenderText_Shaded(police, temps, fontColor, ecranCouleur);
while (continuer)
{
SDL_PollEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
}
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
tempsActuel = SDL_GetTicks();
if (tempsActuel - tempsPrecedent >= 1000) // Si 1000ms au moins se sont écoulées
{
compteur += 1000; // On rajoute 1000ms au compteur
time_t timestamp = time(NULL);
strftime(temps, sizeof(temps), "%X", localtime(×tamp)); // On écrit dans la chaîne "temps" le nouveau temps
SDL_FreeSurface(texte); // On supprime la surface précédente de la mémoire avant d'en charger une nouvelle (IMPORTANT)
texte = TTF_RenderText_Shaded(police, temps, fontColor, ecranCouleur); // On écrit la chaine temps dans la SDL_Surface
tempsPrecedent = tempsActuel; // On met à jour le tempsPrecedent
}
position.x = 40;
position.y = 10;
SDL_BlitSurface(texte, NULL, ecran, &position); // Blit du texte contenant le temps
SDL_Flip(ecran);
}
TTF_CloseFont(police);
TTF_Quit();
SDL_FreeSurface(texte);
SDL_Quit();
return 1 ;
}
et j'ai trouver des problème dans la deuxième partie
Code c :
#include <stdlib.h>
#include <stdio.h>
#include <SDL.h>
#include <SDL_ttf.h>
#include <time.h>
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL;
SDL_Surface *texte = NULL;
SDL_Surface *reveille =NULL;
SDL_Rect position;
SDL_Rect position1;
SDL_Event event;
TTF_Font *police = NULL;
SDL_Color ecranCouleur = {0, 0, 0}, fontColor = {0, 255, 0};
int continuer = 1;
int tempsActuel = 0, tempsPrecedent = 0, compteur = 0;
char temps[20] ;
int i ;
char y1 [20];
char indice[5];
SDL_Init(SDL_INIT_VIDEO);
TTF_Init();
ecran = SDL_SetVideoMode(160, 80, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
SDL_WM_SetCaption("timer", NULL);
// Chargement de la police
police = TTF_OpenFont("font.ttf", 23);
// Initialisation du temps et du texte
tempsActuel = SDL_GetTicks();
time_t timestamp = time(NULL);
strftime(temps, sizeof(temps), "%X", localtime(×tamp));
texte = TTF_RenderText_Shaded(police, temps, fontColor, ecranCouleur);
while (continuer)
{
SDL_PollEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYDOWN :
for(i=1;i<7;i++){
if (event.key.keysym.sym==SDLK_0){
indice[i]=0;
}
if (event.key.keysym.sym==SDLK_1){
indice[i]=1;
}
if (event.key.keysym.sym==SDLK_2){
indice[i]=2;
}
if (event.key.keysym.sym==SDLK_3){
indice[i]=3;
}
if (event.key.keysym.sym==SDLK_4){
indice[i]=4;
}
if (event.key.keysym.sym==SDLK_5){
indice[i]=5;
}
if (event.key.keysym.sym==SDLK_6){
indice[i]=6;
}
if (event.key.keysym.sym==SDLK_7){
indice[i]=7;
}
if (event.key.keysym.sym==SDLK_8){
indice[i]=8;
}
if (event.key.keysym.sym==SDLK_9){
indice[i]=9;
}
position1.x += 5 ;
sprintf (y1,"%d", indice[i]);
reveille = TTF_RenderText_Shaded(police, y1, fontColor, ecranCouleur);
}
}
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
tempsActuel = SDL_GetTicks();
if (tempsActuel - tempsPrecedent >= 1000) // Si 1000ms au moins se sont écoulées
{
compteur += 1000; // On rajoute 1000ms au compteur
time_t timestamp = time(NULL);
strftime(temps, sizeof(temps), "%X", localtime(×tamp)); // On écrit dans la chaîne "temps" le nouveau temps
SDL_FreeSurface(texte); // On supprime la surface précédente de la mémoire avant d'en charger une nouvelle (IMPORTANT)
texte = TTF_RenderText_Shaded(police, temps, fontColor, ecranCouleur); // On écrit la chaine temps dans la SDL_Surface
tempsPrecedent = tempsActuel; // On met à jour le tempsPrecedent
}
position.x = 40;
position.y = 10;
position1.x = 40;
position1.y = 40;
SDL_BlitSurface(reveille, NULL, ecran, &position1);
SDL_BlitSurface(texte, NULL, ecran, &position); // Blit du texte contenant le temps
SDL_Flip(ecran);
}
TTF_CloseFont(police);
TTF_Quit();
SDL_FreeSurface(reveille);
SDL_FreeSurface(texte);
SDL_Quit();
return 1 ;
}
j ai besoin d'aide et merci
|
|
vendredi 24 août 2012 à 15:14:13 |
Re : [SDL] Affichage + Timer

buno
|
Yop,
J'ai renommé ta demande de manière plus explicite.
Je ne connais pas SDL, mais j'ai trouvé ceci pour jouer avec les TTF
@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
vendredi 24 août 2012 à 15:17:28 |
Re : [SDL] Affichage + Timer

buno
|
Pour la zone de texte, SDL n'étant pas fait pour ça, il faut plutôt chercher du côté de la communauté, genre ici par exemple
@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
vendredi 24 août 2012 à 16:11:51 |
Re : [SDL] Affichage + Timer

adel1433
|
en utilisant gtk j'ai rencontré un problème dans la 1er partie:
j'ai réussi a afficher le temps mais il reste constant (le temps qui s'affiche est le temps de l’exécution du programme)
et en utilisant la fonction g_timeout_add_seconds() voila mon code
le temps s'actualise mais j'avais un problème que le temps ne s'affiche pas dans la fenêtre
Code c :
#include <stdlib.h>
#include <gtk/gtk.h>
#include <time.h>
void affiche( GtkWidget* Fenetre ,GtkWidget* Label){
char temps[256];
gchar* TexteConverti = NULL;
time_t timestamp = time(NULL);
strftime(temps, sizeof(temps), "%X", localtime(×tamp));
printf(temps);//pour vérifier si le temps s'actualise
TexteConverti = g_locale_to_utf8(temps,-1, NULL, NULL, NULL); //Convertion du texte avec les balises
Label=gtk_label_new(TexteConverti); // Application de la convertion à notre label
g_free(TexteConverti); // Libération de la mémoire
gtk_container_add(GTK_CONTAINER(Fenetre), Label);//je crois que c'est ici le problème:quand j’exécute il s'affiche en ecran noir le message:gtk_container_add: assertion 'gtk_is_container' <container> ' failed
gtk_widget_show(Label); // On affiche 'Fenetre' et tout ce qu'il contient
}
int main(int argc,char **argv)
{
GtkWidget* Fenetre = NULL;
GtkWidget* Label = NULL;
gtk_init(&argc, &argv);
Fenetre = gtk_window_new(GTK_WINDOW_TOPLEVEL); // Définition de la fenêtre
gtk_window_set_title(GTK_WINDOW(Fenetre), "Le texte avec les labels"); // Titre de la fenêtre
gtk_window_set_default_size(GTK_WINDOW(Fenetre), 300, 100); // Taille de la fenêtre
gtk_widget_show(Fenetre); // On affiche 'Fenetre' et tout ce qu'il contient
g_timeout_add_seconds (1,affiche,Label);
gtk_main();
return EXIT_SUCCESS;
}
|
|
dimanche 26 août 2012 à 04:54:46 |
Re : [SDL] Affichage + Timer

adel1433
|
ya t'il quelqu'un qui peut m'aider a corriger le dernier code ou j'ai utiliser la bibliothèque GTK
|
|
Cette discussion est classée dans : texte, temps, police, sdl, ttf
Répondre à ce message
Sujets en rapport avec ce message
Affichage de texte avec OpenGL et SDL sans SDL_ttf [ par asmanur ]
Voilà je cherche à faire un code le plus portable possible e j'aimerais afficher du texte dans une fenetre SDL & OpenGL seulement voila SD_ttf ne fonc
PB de pointeur et SDL et TTF [ par blinix123 ]
Hello all,Voilou le sujet, un jeu de tir, quand la souris se trouve en haut a gauche et que l'on tire(clic gauche), c'est a dire if (event.motion.x <
problème avec SDL_ttf [ par fivel ]
Bonjour, Je dois réaliser un mini jeu du bataille navale avec la SDL. J'ai installé la bibliothèque SDL_ttf, afin d'écrire du texte à l'écran .ex: "V
Afficher du Texte avec SDL [ par Arnauti ]
Bonjour a tous,Je voudrais savoir comment faire pour afficher du texte en SDL.Pouvez vous m'aider ?A++Si un des membres a posté une r
Fichier Texte, Affichage et TEMPS RÉEL [ par proggen ]
Bonjour, je veut coder un prog en temps réel. Celui-ci doit traiter des informations arrivant à chaque 0.25 secondes dans un fichier texte et ensuite
Bibliothèque SDL [ par haarp6 ]
Bonsoir à tous, je bosse en ce moment sur un petit démineur en SDL, donc je viens de commencer dessus, et mon code me génère une exception non gérée.
choix de la taille de la police [ par mogwai93 ]
Bonjour J'ai un static d'une largeur définie A l'intérieur de celui-ci, je place un texte dans une police de mon choix (on va faire simple, on va dir
Affichage du texte avec SDL [ par thomas3347 ]
Bonjour,Je cherche à afficher un nombre (à l'aide de SDL) à chaque fois qu'une condition est vérifiée : dans mon programme :1) J'affiche la fenêtre et
comment recuperer et afficher d'un texte lu en sdl [ par cherif2009 ]
bonsoir je developpe actuellement une application en sdl et j'ai besoin d'aide à propos de comment recuperer et afficher un texte en sdl. merci pour v
Taille de la Police [ par victorcoasne ]
Bonjour,Je veux écrire sur une image un texte.Je me sert de la librairie GD.J'ai par exemple un carré de 50px sur 100px et je veux écrire un texte ("L
Livres en rapport
|
Derniers Blogs
ETENDRE LE TEAM WEB ACCESS DE TFS 2012 - STEP 0ETENDRE LE TEAM WEB ACCESS DE TFS 2012 - STEP 0 par Philess
L'extensibilité du Team Web Access
Le Web Access (site d'équipe) de Team Foundation Server a été complètement réécrit dans la version 2012 avec pas moins de 400.000 lignes de JavaScript. Ce nouveau modèle a été pensé pour offrir de grandes...
Cliquez pour lire la suite de l'article par Philess SIMULER FACILEMENT L'ENVOI DE MAILSIMULER FACILEMENT L'ENVOI DE MAIL par JeremyJeanson
il m'a été demandé, à plusieurs reprises, comment je faisais pour simuler l'envoi de mail lors de mes démos de Workflow Foundation. Ma solution est plutôt simple : j'utilise la configuration par défaut du SmtpClient et j'oriente les mails vers un dossier ...
Cliquez pour lire la suite de l'article par JeremyJeanson VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES !VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES ! par Patrick Guimonet
Si ce n'est déjà fait (comme plus de 600 personnes déjà), il est encore temps de voter pour le concours TOP 10 des influenceurs SharePoint francophones ! Il est organisé par harmon.ie et accessible ici : http://harmon.ie/top-...
Cliquez pour lire la suite de l'article par Patrick Guimonet [CONF'SHAREPOINT] DERNIER RAPPEL ! :-)[CONF'SHAREPOINT] DERNIER RAPPEL ! :-) par Patrick Guimonet
La Conf'SharePoint en chiffres c'est : 3 jours de SharePoint ! 4 parcours et 60 sessions 17 partenaires représentant toutes les fac...
Cliquez pour lire la suite de l'article par Patrick Guimonet
Forum
PB PACMAN C++PB PACMAN C++ par garfield95
Cliquez pour lire la suite par garfield95
Logiciels
Easy-Planning (4.5.0.11)EASY-PLANNING (4.5.0.11)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté a... Cliquez pour télécharger Easy-Planning CVEasy (3.1.0.51)CVEASY (3.1.0.51)PHMSD-CVEasy est un logiciel d'aide à la rédaction de CV d'une simplicité déconcertante.
PHMSD-C... Cliquez pour télécharger CVEasy LettresFaciles 2011 (8.6.0.31)LETTRESFACILES 2011 (8.6.0.31)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011 sDEVIS-FACTURES vlPRO (8.4.2.62)SDEVIS-FACTURES VLPRO (8.4.2.62)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO Devis-Factures PHMSD (2.1.0.11)DEVIS-FACTURES PHMSD (2.1.0.11)Configuration minimale
Nécessite Windows™ 2000, XP, Windows 7, 8, Vista (Service Pack à... Cliquez pour télécharger Devis-Factures PHMSD
|