1

私の質問は、最初は読むのが非常に混乱する可能性があるので、我慢してください。まず、コンテキストの簡単な序文から始めます。

序文:

地図からパスを見つけるために配列を使用するアプリがあります。

^それは非常に曖昧です。壁や階段などを表す文字の配列があり、最適なパスを見つける関数があります。

Androidの画面にパスを表示したい。

生成されたパス(おそらく「x」など)を表す配列関数によって生成された文字があります。


わかりやすくするために、配列には「x」の「パス」があります。これらの「x」は、Android画面に表示されるパスを表します。


私の実際の質問:

配列の「x」を画面に行を表示するように変換するにはどうすればよいですか?'x'があるかどうかをチェックするforループ/ifステートメントを使用し、ある場合は、実際の画面を表す2番目の配列に小さな赤い点/線を表示するというアイデアがありました。

私はこれを見つけようとしていましたが、グーグルに入力するのはとても厄介なことなので、何もせずに研究を終えました。

さまざまな座標にさまざまな色を割り当てることができる、ある種の組み込みのAndroid関数はありますか?


これは私が画面に表示したいものの一種です。これがアプリの場合、青は最初の配列の「x」で表されます。

4

1 に答える 1

1

パスを記述するマトリックスに座標系をマッピングするというこの効果を実現するには、いくつかの方法があります。

配列のサイズと更新呼び出しの頻度によっては(パスファインディングは1回のレンダリングで1回実行されるように聞こえます)、ループするだけでもそれほど費用はかかりません。私が個人的に行うことは、キャンバスに描画する方法を調べ、画面サイズを取得し、それに応じて境界を調整することです。

画面サイズをピクセル単位で取得する-画面サイズを取得する方法 http://danielnadeau.blogspot.com/2012/01/android-canvas-beginners-tutorial.html-キャンバスに関する優れたチュートリアル

スケーリングされたキャンバスに描画できるようになったら、次のようなループを実行するだけです。

float scale_x = screen_width/columns;
float scale_y = screen_height/rows; //pixels per grid square
for( int x = 0; x < columns; x++)
for( int y = 0; y < rows; y++)
if( data[x][y] == 'x') drawRect(x*scale_x, y*scale_y, scale_x,scale_y) //if something found, draw a colored square
于 2013-03-19T01:00:04.967 に答える