2017-04-21 6 views
-2

私はシンプルな2Dゲーム用のコードを書いていますが、私はアクセスしてスプライトを表示しようとしています。スプライトは、このような単純な2次元アレイである:上の画素について2D配列に複数のスプライトを保存するにはどうすればよいですか?

static int nl[8][8] = {0,0,0,0,0,0,0,0, 
         0,0,0,0,0,0,0,0, 
         0,0,1,1,1,1,0,0, 
         1,1,1,1,0,1,0,0, 
         1,1,1,1,0,1,0,0, 
         0,0,1,1,0,1,0,0, 
         0,0,1,0,0,1,0,0, 
         0,0,1,1,1,1,0,0 }; 

1での、0のピクセルオフ(ゲームが84x48 LCDスクリーンのためのものである)のために。 私はこれらのスプライトの12を持っており、このような別の2次元配列に保存する必要があります。

double tank_sprites[4][3] = {nl,el,sl,wl, 
           nf,ef,sf,wf, 
           nr,er,sr,wr}; 

スプライトは、この配列から、後に呼び出されます。私は多くの間違いを抱えています。これについては間違った方法ですか?

+3

どのようなエラーが表示されますか? – aschepler

+1

より多くのお手伝いをさせていただくために直面​​している間違いについて、より正確にお答えください。 – Dracke

+1

'tank_sprites [4] [3]'または 'tank_sprites [3] [4]'? – Aryan

答えて

0
double tank_sprites[4][3] = {nl,el,sl,wl, 
           nf,ef,sf,wf, 
           nr,er,sr,wr}; 

二重の配列ですが、二重を入れていないとします。 array of static int[8][8]

あなたのスプライトを表すクラスを作成する必要があります。

class Sprite 
{ 
    int * m_data; 

    // Some Interface 
}; 

好きなようにスプライトのデータを内部的に保存します。次に、スプ​​ライトのコレクションを作成します。

std::vector<Sprite> sprites; 
1

浮動小数点数の配列にポインタを格納しようとしています。 int[8][8]は、int(*)[8]に崩壊し、8つの配列のポインタintです。
これはおそらく動作しません。

正しいタイプを使用する必要があります。
「配列へのポインタの配列の配列」を宣言する方法を考えるのは面白くないので、型エイリアスをお勧めします。 tank_spritesは、私はあなたの改行と命名に基づいて、推測

{{nl,el,sl}, 
{wl,nf,ef}, 
{sf,wf,nr}, 
{er,sr,wr}} 

であることを

using sprite = int(*)[8]; 
sprite tank_sprites[4][3] = {nl,el,sl,wl, 
           nf,ef,sf,wf, 
           nr,er,sr,wr}; 

注意、おそらくあなたが期待するものではありません。
ブラケットを使用して、意図を明確にし、コンパイラに可能な限り多くの問題をキャッチする機会を与えます。

関連する問題