Bonjour a tous,

Voila en fait je suis en train de faire une petite application en C++, a laquelle on peut passer un nombre de ligne (nbline)et de colonne (nbcol) en parametre, a partir de ces parametres je dois dessiner a l'ecran des case de 80*80 pixels autant de fois sur l'abscisse que nbcol et pareil sur l'axe des ordonnees pour nbline.

Bien evidemment la taille de l'ecran etabli et recuperer grace a la fonction "SDL_SetVideoMode" est de taille fixe soit 800*600.

Ce que j'aimerai faire, c'est de dessiner en fait les cases, et si le nombre est superieur a l'ecran, pouvoir avec les fleches me deplacer sur le reste de ma map.

Pour arriver a ceci, j'ai tout dabord suivi ce tutorial : http://lazyfooproductions.com/SDL_tu...18/preview.php

Mais la ou j'ai un probleme c'est que je n'ai pas un seul background de type SDL_Surface, mais une multitude de SDL_Surface egale au nombre de case a dessiner dans mon ecran principal.

Bien evidemment il est inconcevable que decale une a une chaque case pour etablir un effet de scrolling alors j'ai essayer differente methodes notamment deux que j'explique :

La premiere etait de dessiner toutes mes case dans la SDL_Surface recuperer avec la fonction SDL_SetVideoMode (Mon ecran).
Une fois ceci d'effectuer je me deplacais dans mon ecran comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
SDL_Rect    dest;
 
    dest.h = HEIGHT_SCR;
    dest.w = WIDTH_SCR + (avancement);
    dest.x = 10;
    dest.y = 0;
    SDL_BlitSurface(gl_screen, NULL, gl_screen, &dest);
Soit recuperer mon ecran de taille 800*600 et l'afficher dans lui meme avec un decalage en X de 10, ce qui fonctionne certes mais l'ecran n'est pas rafraichit meme apres un SDL_Flip ca laisse des traces degueu.


La deuxieme methodes a ete de BLITER toutes mes cases dans un SDL_Surface different de l'ecran, appeler map.
Cette map a ete etabli avec la fonction SDL_SetVideoMode de largeur egale au nombre de colonne*largeur d'une case et de taille ligne*largeur d'une case.

ensuite je blittait cette map dans l'ecran, mais le resultat etait le mm que pour la premiere methodes, le rafraichissement ne se faisait pas ou se faisait mal...

POUR TERMINER.

Ce que j'aimerai faire :

Avoir un conteneur de case et ne faire QUE deplacer, soit l'ecran, soit la map et pas chaque case...

MERCI