2010-04-12 3 views
0

Contexte:Dessiner une position à partir d'un tableau 2d sur place de toile respecté

J'ai deux tableaux 2d. Chaque index dans chaque tableau 2d représente une tuile qui est dessinée sur une toile carrée appropriée pour 8 x 8 tuiles.

Le premier tableau 2D représente les carreaux de sol et est mis en boucle et dessiné sur la toile en utilisant le code suivant:

    //Draw the map from the land 2d array 
    map = new Canvas(mainFrame, 20, 260, 281, 281); 
     for(int i=0; i < world.length; i++){ 
      for(int j=0; j < world[i].length; j++){ 
       for(int x=0; x < 280; x=x+35){ 
        for(int y=0; y < 280; y=y+35){ 
         Point p = new Point(x,y); 
         map.add(new RectangleObject(p,35,35,Colour.green)); 
        } 
       } 
      } 
     } 

Cela crée une grille de carreaux verts 8 x 8 à travers comme prévu.

Le deuxième tableau 2d représente la position au sol. Ce tableau 2d a tous ses index comme null en dehors de celui qui est composé d'une classe Person.

Problème

Je ne suis pas sûr de la façon dont je peux tirer la position sur la grille. Je pensais à une boucle similaire, donc elle dessine sur le précédent tableau 2d un autre ensemble de 64 tuiles. Seulement cette fois ils sont tous transparents mais le seul carreau qui n'est pas nul. En d'autres termes, la tuile où la personne est située.

Je voulais utiliser une recherche dans toute la boucle en utilisant une comparaison instruction if le long des lignes de

if(!(world[] == null)){ 
map.add(new RectangleObject(p,35,35,Colour.red));} 

Cependant ma connaissance est limitée et je suis confus sur la façon de le mettre en œuvre.

Répondre

0

N'utilisez pas du tout un second tableau. Créez simplement un RectangleObject nommé, par exemple, currentPosition ou activeTile ou personPosition. Cependant, vous n'avez pas vraiment besoin de stocker le point dans le RectangleObject. Soit utiliser un tableau 2D RectangleObject pour que (pour que vous puissiez utiliser les index pour y accéder) et d'exclure les informations de point dans le RectangleObject,

ou

créer un List de RectangleObjects et ajoutez les informations Point - mais ne pas incrémenter de 35, mais plutôt de 1. Lorsque vous dessinez les tuiles, vous pouvez toujours (en connaissant l'index) déterminer où placer la tuile (par exemple indexX*tileWidth, indexY*tileHeight).

(Il n'est pas très clair d'après ce que vous avez écrit pour quel monde et quelle carte sont utilisés, veuillez m'expliquer pour que je puisse donner une meilleure réponse)