0

27*27 グリッドの周りでブロックを動かす小さなミニゲームを作成しています。

グリッドの各正方形は 16*16 ピクセルです。

awt Graphics の「drawLine」関数を使用してグリッドを作成しました。JFrame ウィンドウ/キャンバスにまたがるグリッドを作成する多くの行を作成しました。グリッド内の各正方形を一種の座標に割り当てる必要があります。

たとえば、Minecraft のテクスチャを調べたり、テクスチャ パックを作成したことがある場合は、icons.png または texture.png に気付いているでしょう。それはすべて、それぞれに画像がある 16*16 の正方形の 256*256 グリッドです。Notch (または現時点では Jens) が画像からコードに画像を参照する必要がある場合。彼は基本的に次のように考えています。

「まあ、icons.png の座標 (1, 3) から画像を見つける必要があります。」

1 は、最初の水平ブロックの右側に 1 マスある 16*16 マスを表します。3 は 16*16 の正方形を表し、そこから垂直方向に 3 つの正方形が下ります。

このチャートのドットは、私が話していることを表しています。右に 1 ブロック、下に 3 ブロックです。

|1|2|3|4|5|6|

|2|3|4|5|6|7|

|3|•|5|6|7|8|

16 ピクセルの数を数えようとする代わりに、すべての "1" 座標を 16 ピクセルと同じ値にする方法をご覧ください。

(1, 3) 16*16 の正方形は、ピクセル単位で (16, 48) にする必要があります。

ああ、私は物事を説明するのがとても下手です。


これは基本的に、グラフを作成するために行ったすべてです。

    for (int i = 16; i <= 432; i += 16){

        /* Vertical Chart Lines: */ g.drawLine(i, 0, i, HEIGHT*2);
        /* Horizontal Chart Lines: */ g.drawLine(0, i, WIDTH*2, i);

    }

私は Java Canvas で作業しており、推奨サイズを HEIGHT*2/WIDTH*2 に設定しています。

HEIGHT*2 または WIDTH*2 は、ウィンドウ/キャンバスの最後までのピクセルベースの座標を表します。

これらの新しい座標を割り当てるにはどうすればよいですか? 新しいチャートを作成する必要がありますか?

あ、助けてください。

4

1 に答える 1

0

27*27 の寸法と 16x の倍率ですべてを整理することから始めます。

したがって、コードを次のように変更します。

const int scale = 16;
for (int i = 0; i < 27; i++){

    /* Vertical Chart Lines: */ g.drawLine(scale*i, 0, scale*i, HEIGHT*2);
    /* Horizontal Chart Lines: */ g.drawLine(0, scale*i, WIDTH*2, scale*i);

}

そして、「チャート」座標から「ピクセル」座標に変換するには、次のようにします。

int row = getRow(...); /* your code here */
int col = getCol(...); /* your code here */
int x = col * 16;
int y = row * 16;

それが役立つことを願っています。

于 2013-03-23T22:30:13.847 に答える