Probleme de scrolling / tile

Résolu
hisoka56 Messages postés 17 Date d'inscription lundi 7 juillet 2003 Statut Membre Dernière intervention 22 juillet 2008 - 5 avril 2006 à 20:06
hisoka56 Messages postés 17 Date d'inscription lundi 7 juillet 2003 Statut Membre Dernière intervention 22 juillet 2008 - 5 avril 2006 à 23:12
Bonjour, je suis en train de realiser des tests pour l'affichage d'un jeu en 2d vue du dessus et je me cantonne a un probleme,

j'ai codé une méthode qui selon les coordonnées que l'on rentre (par exemple 1000, 1000)

nous affiche ce que l'on voit de 600, 700 a 1400, 1300 (si
la resolution est de 800x600cela semblait marcher mais si dans ma
boucle d'affichage j'augmente la coordonnée x, le scroll marcha mais
les tiles se changent, voila donc si quelqu'un peut m'expliquer
pourquoi, je vous remerci.



ca c'est ma fonction pour afficher un tile (je pense pas que le provienne de la mais pour comprendre le code c'est mieu



private void drawChip(String path ,int dx, int dy, int tile, Graphics g){

Image img;

int sx,sy;

img = new ImageIcon(path).getImage();

sx = (tile %8);//le fichier tile est composé de 8 colones de 32 cases chacunes

sy = ((int) (tile /8));


buffer.drawImage(img,dx,dy,dx+TILE,dy+TILE,sx*TILE,sy*TILE ,(sx+1)*
TILE,(sy+1)*TILE,null);

}



et ca la fonction qui est censé m'afficher ma carte:



private void afficheEcran(int x, int y, String chipset){

int tilecourante;

//coordonnées du coin sup gauche de l'ecran

int x1=x-(RESOX/2);int y1=y-(RESOY/2);

//coordonnées du coin inf droit de l'ecran

int x2=x1+RESOX;int y2=y1+RESOY;



//recupere les x,y de la matrice de la map

int tdebx = (int) (x1/TILE);//tile x du debut

int tfinx = (int) (x2/TILE)+1;//tile x de fin

int tdeby = (int) (y1/TILE);

int tfiny = (int) (y2/TILE)+1;



int debouclex (tdebx*TILE)-x1; int finbouclex (tfinx*TILE)-x1;

int deboucley (tdeby*TILE)-y1; int finboucley (tfiny*TILE)-y1;



for (int i=debouclex; i<finbouclex; i+=TILE)

for (int j=deboucley; j<finboucley; j+=TILE){


this.drawChip(chipset, i, j,
map[tdebx][tdeby],buffer);

tdebx++; tdeby++;



}



}



la map est contenu dans une matrice de 10000x10000 generée aleatoirement au debut de l'application



et ma boucle qui affiche la carte et rafraichi:



public void graphicalRender() {

//dessine la carte



this.afficheEcran(x,y,"chip.png");

//affiche un perso sur la carte

this.drawImage("perso.png", 400-11, 300-22, 21,45, buffer);

//augmente x, =>deplacement laterale de la carte vers la gauche

x++;



//on envoie toutes les données du
buffer mémoire vers le buffer d'affichage (équivalent d'un flush en
C/C++)

strategy.show();



}

2 réponses

hisoka56 Messages postés 17 Date d'inscription lundi 7 juillet 2003 Statut Membre Dernière intervention 22 juillet 2008 1
5 avril 2006 à 23:12
bon apres 2h la dessus, je viens de me rendre compte que mon probleme est tout con

j'oubliais juste de redefinir ma variable dans l'affichage de la map
3
hisoka56 Messages postés 17 Date d'inscription lundi 7 juillet 2003 Statut Membre Dernière intervention 22 juillet 2008 1
5 avril 2006 à 20:46
pour montrer mon probleme, j'ai fait une petite capture de mon ecran:

voila



c'est une petite video de - de 1mo, le fait que ca rame est du au
logiciel peut performant, en realité c'est fluide mais le probleme cité
reste present
0
Rejoignez-nous