Je suis toujours sur mon petit rpg 2d, et j'en suis venu a devoir crée un système de scrolling pour qu'on puisse tout de même admirer ma carte
J'ai réussi pour le moment a faire en sorte que seul les sprites qui sont dans le champ de vision du joueur soit chargé (et comme je l'ai fait tout seul, j'en suis assez fier ).
Par contre, je n'arrive pas a faire en sorte que le joueur soit "centré" au milieu de l'écran, et que seul le terrain "bouge".
Pourriez vous m'indiquez comment faire s'il vous plait ?
void scrolling(SDL_Surface *ecran,int infoCarte[][NB_BLOCS_LARGEUR],int carte[][NB_BLOCS_LARGEUR]) { long i=0,j=0;
SDL_Rect position;
SDL_Surface *montagne=NULL,*eau=NULL,*herbe=NULL; int a=0,b=0,c=0; int *p_a=&a,*p_b=&b; /*création des pointeurs pour rechercheJoueur */
if(b-8>=0 && a-4>=0)/*Si le joueur est situé a bonne distance des bords de la carte */ { for(i=a-4;i<a+5;i++) { for(j=b-7;j<b+8;j++) { /*c'est surement ici que je dois intervenir mais je sais pas trop comment */
position.x=j*TAILLE_BLOC;
position.y=i*TAILLE_BLOC; switch(carte[i][j]) { case MONTAGNE:
SDL_BlitSurface(montagne,NULL,ecran, &position); break;
case EAU:
SDL_BlitSurface(eau,NULL,ecran, &position); break;
case HERBE:
SDL_BlitSurface(herbe,NULL,ecran,&position); break; } } } } elseif(b-8<0)/*Si le joueur est trop près du bord gauche ou droit de la carte*/ { for(c=8;b-c<0;c--);
case EAU:
SDL_BlitSurface(eau,NULL,ecran, &position); break;
case HERBE:
SDL_BlitSurface(herbe,NULL,ecran,&position); break; } } }
}
elseif(a-4<0)/*si le joueur est trop près du bord haut ou bas de la carte */ { for(c=4;b-c<0;c--); for(i=a-c;i<a+6;i++) { for(j=b-8;j<b+8;j++) {
position.x=j*TAILLE_BLOC;
position.y=i*TAILLE_BLOC; switch(carte[i][j]) { case MONTAGNE:
SDL_BlitSurface(montagne,NULL,ecran, &position); break;
case EAU:
SDL_BlitSurface(eau,NULL,ecran, &position); break;
/*Fonction servant a trouver la position du joueur, qu'il soit selectionnee ou non*/ /*Cette fonction modifie la valeur de deux int grace au pointeurs*/ /*Ces valeurs servirons a positionner le joueur dans infoCarte*/
int rechercheJoueur(int *i,int *j,int infoCarte[][NB_BLOCS_LARGEUR]) { int h=0,k=0; int marqueur=0;
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.