J'ai créé un labyrinthe 2D composé de 2 ensembles de tableaux booléens, se référant à la verticale et aux murs horizontaux de mon labyrinthe. Ce labyrinthe est actuellement de 12 x 12, mais je veux seulement montrer 5 x 5.Android/Java - Zoom sur ma toile dessinée
Existe-t-il un moyen de zoomer le labyrinthe à une circonférence 5 x 5 de l'endroit où se trouve l'utilisateur et ensuite montrer simplement le bloc suivant le temps qu'ils bougent, donc ne montrant jamais que 5 x 5.
Idéalement, je tiens à tirer le dessin tout en ayant simplement une sorte de zoom birdseye vue (cela permettra d'améliorer la convivialité et généralement accélérer l'application).
EDIT est Ci-dessous le code que je suis actuellement en utilisant pour dessiner le labyrinthe. Toutefois, le code ci-dessous ne semble pas dessiner les lignes v et hLines correctes lorsque je déplace le cercle utilisateur.
public void onDraw(Canvas canvas)
{
canvas.drawRect(0, 0, width, height, background);
mazeSizeX = 5 + maze.getCurrentX();
mazeSizeY = 5 + maze.getCurrentY();
for(int i = maze.getCurrentX(); i < mazeSizeX; i++)
{
for(int j = maze.getCurrentY(); j < mazeSizeY; j++){
float x = j * totalCellWidth;
float y = i * totalCellHeight;
if(j < mazeSizeX -1 && vLines[i][j]) {
//we'll draw a vertical line
canvas.drawLine(x + cellWidth, //start X
y, //start Y
x + cellWidth, //stop X
y + cellHeight, //stop Y
line);
}
if(i < mazeSizeY -1 && hLines[i][j]) {
//we'll draw a horizontal line
canvas.drawLine(x, //startX
y + cellHeight, //startY
x + cellWidth, //stopX
y + cellHeight, //stopY
line);
}
}
}
}
NOTE - mazeSizeX et Y sont intially mis sur 5. Toute guidenece plus que là où je me trompe serait très apprécié.
EDIT 2: Veuillez voir l'image ci-dessous pour indiquer 3 étapes différentes qu'un utilisateur a pu suivre pour vous aider à mieux comprendre le problème que je rencontre. La première image est le point de départ et a été tracée comme il se doit, mais lorsque j'ai commencé à déplacer le cercle de l'utilisateur autour des lignes ne sont pas dessinés correctement.
Enfin, s'il vous plaît voir ci-dessous le tableau booléen actuel que je utilise pour dessiner les murs de Waze:
boolean[][] vLines = new boolean[][]{
{true ,false,false,false,true ,false,false},
{true ,false,false,true ,false,true ,true },
{false,true ,false,false,true ,false,false},
{false,true ,true ,false,false,false,true },
{true ,false,false,false,true ,true ,false},
{false,true ,false,false,true ,false,false},
{false,true ,true ,true ,true ,true ,false},
{false,false,false,true ,false,false,false}
};
boolean[][] hLines = new boolean[][]{
{false,false,true ,true ,false,false,true ,false},
{false,false,true ,true ,false,true ,false,false},
{true ,true ,false,true ,true ,false,true ,true },
{false,false,true ,false,true ,true ,false,false},
{false,true ,true ,true ,true ,false,true ,true },
{true ,false,false,true ,false,false,true ,false},
{false,true ,false,false,false,true ,false,true }
};
Merci à l'avance
Il est très difficile de répondre à cela sans en savoir plus sur la façon dont vous faites aujourd'hui .. Je –
essentiellement un tableau de booléens par exemple vrai, vrai, faux etc, le vrai va dessiner une ligne solide faux rien. Ceux-ci seront utilisés comme labyrinthe de mur. Ensuite, je lance un onDraw pour créer tout le labyrinthe à la fois, puis il y a 2 autres points qui sont dessinés, 1 pour la position de départ définie avec cordinaltion (x, y) et la même chose pour le point finsih. J'espère que ce qui précède est clair, s'il y a quelque chose de spécifique s'il vous plaît faites le moi savoir et je vais essayer d'être plus spefic. Merci –