|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
TEXT SDL
Description
Ceci vous permet d'afficher du text dans une fenètre SDL. La font est hardcoder en partie (carractère les plus courant), vous pouvez en rajoutez (et me les passer :p). On peut choisir la taille, la couleur du text et du font (font qui peut être transpartant). ça me rend bien des services, et c'est même pas lent.
Source
- void SDLText(SDL_Surface *pScreen, char *pText, rect rZone, float fSize, color cTop, color cBack)
- {
- int c, l, h, lm, hm, lp, hp;
- rect Zone;
-
- SDLTextInit();
-
- lp = (int)(TEXT_WIDTH * fSize);
- hp = (int)(TEXT_HEIGHT * fSize);
- lm = (int)(rZone.l / lp);
- hm = (int)(rZone.h / hp);
- l = -1;
- h = 0;
- Zone.x = rZone.x;
- Zone.y = rZone.y;
- Zone.l = rZone.l;
- Zone.h = rZone.h;
-
- for(c = 0; pText[c]; c++)
- {
- if(((l + 1) <= lm) && (pText[c] != '\n'))
- {
- l++;
- }
- else
- {
- if(pText[c] == '\n')
- c++;
-
- if((h + 1) <= hm)
- {
- l = 0;
- h++;
- }
- else
- return;
- }
-
- Zone.x = rZone.x + l * lp;
- Zone.y = rZone.y + h * hp;
- SDLTextCarac(pScreen, pText[c], Zone.x, Zone.y, fSize, cTop, cBack);
- }
- }
-
- void SDLTextCarac(SDL_Surface *pSpcreen, char cCar, int x, int y, float fSize, color cTop, color cBack)
- {
- int px, py;
-
- for(py = 0; py < (TEXT_HEIGHT * fSize); py++)
- {
- for(px = 0; px < (TEXT_WIDTH * fSize); px++)
- {
- if(TableCar[cCar][(int)(py / fSize)][(int)(px / fSize)] == 49)
- {
- SDLTextPoint(pSpcreen, x + px, y + py, cTop);
- }
- else
- {
- if((cBack.r != -1) && (cBack.g != -1) && (cBack.b != -1))
- SDLTextPoint(pSpcreen, x + px, y + py, cBack);
- }
- }
- }
- }
-
- void SDLTextPoint(SDL_Surface *pScreen, int x, int y, color cColor)
- {
- Uint16 *pPxl;
-
- if((x > 0) && (x < pScreen->w) && (y > 0) && (y < pScreen->h))
- {
- pPxl = (Uint16*)pScreen->pixels + ((pScreen->pitch / 2 * y) + x);
- *pPxl = SDL_MapRGB(pScreen->format, (Uint8)cColor.r, (Uint8)cColor.g, (Uint8)cColor.b);
- }
- }
-
- ...
void SDLText(SDL_Surface *pScreen, char *pText, rect rZone, float fSize, color cTop, color cBack)
{
int c, l, h, lm, hm, lp, hp;
rect Zone;
SDLTextInit();
lp = (int)(TEXT_WIDTH * fSize);
hp = (int)(TEXT_HEIGHT * fSize);
lm = (int)(rZone.l / lp);
hm = (int)(rZone.h / hp);
l = -1;
h = 0;
Zone.x = rZone.x;
Zone.y = rZone.y;
Zone.l = rZone.l;
Zone.h = rZone.h;
for(c = 0; pText[c]; c++)
{
if(((l + 1) <= lm) && (pText[c] != '\n'))
{
l++;
}
else
{
if(pText[c] == '\n')
c++;
if((h + 1) <= hm)
{
l = 0;
h++;
}
else
return;
}
Zone.x = rZone.x + l * lp;
Zone.y = rZone.y + h * hp;
SDLTextCarac(pScreen, pText[c], Zone.x, Zone.y, fSize, cTop, cBack);
}
}
void SDLTextCarac(SDL_Surface *pSpcreen, char cCar, int x, int y, float fSize, color cTop, color cBack)
{
int px, py;
for(py = 0; py < (TEXT_HEIGHT * fSize); py++)
{
for(px = 0; px < (TEXT_WIDTH * fSize); px++)
{
if(TableCar[cCar][(int)(py / fSize)][(int)(px / fSize)] == 49)
{
SDLTextPoint(pSpcreen, x + px, y + py, cTop);
}
else
{
if((cBack.r != -1) && (cBack.g != -1) && (cBack.b != -1))
SDLTextPoint(pSpcreen, x + px, y + py, cBack);
}
}
}
}
void SDLTextPoint(SDL_Surface *pScreen, int x, int y, color cColor)
{
Uint16 *pPxl;
if((x > 0) && (x < pScreen->w) && (y > 0) && (y < pScreen->h))
{
pPxl = (Uint16*)pScreen->pixels + ((pScreen->pitch / 2 * y) + x);
*pPxl = SDL_MapRGB(pScreen->format, (Uint8)cColor.r, (Uint8)cColor.g, (Uint8)cColor.b);
}
}
...
Conclusion
Il y a des exemples, c'est tres facile a utilisé et modifié une font (des 0 et 1) Les carractères sont en binaire, dans des grille 6*9 (du 5*7 étendu). /* 'A' */ strcpy(TableCar[65][0], "001000"); strcpy(TableCar[65][1], "010100"); strcpy(TableCar[65][2], "100010"); strcpy(TableCar[65][3], "100010"); strcpy(TableCar[65][4], "111110"); strcpy(TableCar[65][5], "100010"); strcpy(TableCar[65][6], "100010"); strcpy(TableCar[65][7], "000000"); strcpy(TableCar[65][8], "000000");
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Historique
- 13 mars 2006 17:38:52 :
- complement d'information
Sources du même auteur
SERVEUR METEO, IHM EVOLUEE (VC6, CONSOLE WINDOWS, SOCK, THREAD)Ceci est notre dernier projet de formation, on doit crée 4 applications, en 8*8h (64h pour faire ça).
Le serveur est a moitier fait, il manque la p... SERVEUR METEO, IHM EVOLUEE (VC6, CONSOLE WINDOWS, SOCK, THRE...
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
prob avec SDL [ par kuroro ]
alors voila , j'ai mis tous les fichiers .h dans le repertoire include ( de dev-c++ 4 ) et les fichier .a dans le repertoire lib , mais quand je veux
SDL et GLUT [ par Samaths ]
Bonjour à tous!J'ai un petit problème: Je voudrais utiliser OpenGL et la SDL en même temps. Je sais que c'est possible, j'ai trouvé plein de tutoriaux
keybd_event [ par beb_aij_hi ]
salut.j'essaye de simuler une frappe clavier avec keybd_event et il y a un truck qui m'echappe.voici un bout de code:#include <windows.h>#includ
mettre en pause SDL_GetTicks [ par djipey ]
Bonjour, voila je code un pong en SDL. Il contient plusieurs boucles, dont une trés grosse qui se répéte si l'utilisatuer perd et qu'il demande à rejo
Message d'erreur avec SL [ par Maximi ]
Bonjour je débute avec C++ et SDL, je travaille avec VC++ 6.J'ai fait un tout petit programme et mon problème, est le suivant :je compile le code et c
Probleme avec la SDL [ par neo1012 ]
Bonjour, Je suis entrain de faire un jeu en SDL, dedans il y a un personage(poulet) qui est censé avancé quand on appuie sur les fleches directionnel
tetris en SDL [ par fahdovski ]
Bonjour, je code tetris en C avec la SDL voici mon problemevoid creerlachute(tab t){int i,j;for (i=0;i<li;i++) for(j=0;j<co;j++){ if (t[
Installation de la SDL avec MVS standard 2005 [ par Hatchepsut ]
Bonjour. Comme l'indique le titre, je n'arrive pas à installer la SDL. J'ai lu, relu, et re-relu tous les tutoriaux de multiples forums, rien n'y fai
Probleme, creation d'une class traitant sur SDL [ par kickbar ]
Bonjour a tous, voila j'ai un petit souci, dans l'un de mes methodes, je charge la fenetre principale, je colle une image, et la mystere, a l'executio
{SDL} Copier et redimensionner une SDL_Surface [ par ndubien ]
Bonjour,Mon problème:SDL_Surface *img1 = SDL_LoadBMP( "image.bmp" );SDL_Surface *img2;Je souhaiterais que i
|
Téléchargements
Logiciels à télécharger sur le même thème :
|