2012-05-08 7 views
1

SFMLとベクターヘッダを使用してスプライトのベクトルを作成するにはどうすればよいですか? 私はベクトルを使用してsfmlにタイルのマップを作成しようとしています

vector<sf::Sprite> test; 

のようなベクトルを開始し、私は一back()をやろうとしているが、私は「()」内に置く必要があるのか​​分かりません。

とにかく、私のベクトルが41x31になりますので、tは

vector<vector<sf::Sprite> > test (41,vector<sf::Sprite>(31,??)) ような何かを行う方法はありますか?誰かが良いアイデアを持っている場合、私はタイルマップを作成するために、これを使用してい

、私は感謝します

EDIT:

私はまだエラーを得た、thatsの私のコード

vector<vector<int> > mapc (5,vector<int>(5,1)); 

sf::Sprite mapa[5][5]; 

void fmap() { 
    mapc[0][0] = 1; mapc[0][1] = 1; mapc[0][2] = 1; mapc[0][3] = 1; mapc[0][4] = 1; 
    mapc[1][0] = 1; mapc[1][1] = 0; mapc[1][2] = 0; mapc[1][3] = 0; mapc[1][4] = 1; 
    mapc[2][0] = 1; mapc[2][1] = 0; mapc[2][2] = 1; mapc[2][3] = 0; mapc[2][4] = 1; 
    mapc[3][0] = 1; mapc[3][1] = 0; mapc[3][2] = 0; mapc[3][3] = 0; mapc[3][4] = 1; 
    mapc[4][0] = 1; mapc[4][1] = 1; mapc[4][2] = 1; mapc[4][3] = 1; mapc[4][4] = 1; 

    sf::Image w; 
    w.LoadFromFile("w.png"); 
    sf::Image f; 
    f.LoadFromFile("f.png"); 
    unsigned int i,j; 
    for(i=0;i<mapc.size();i++) { 
     for(j=0;j<mapc[i].size();j++) { 
      if(mapc[i][j] == 1) { sf::Sprite teste(w); } 
      else { sf::Sprite teste(f); } 
      mapa[i][j] = teste; 
     } 
    } 
//  test.push_back(teste); 
} 

それは

答えて

2

編集:実は私は嘘をついた、あなたがマップの正確なサイズを知っていれば、あなたのマップは、あなただけの配列を作成する必要があり、実行時にそのサイズを変更しようとしている場合を除き、あなたはちょうど

sf::Sprite map[41][31]; 

を使用することができますスタック

次にマップをもう一度実行して初期化します。あなたがそれを行うことができない場合、あなたはベクトルを使用する必要がありますし、あなたはベクトルに似たようなことをすることができます。

sf::Sprite temp; //used to initialize the map 
vector<vector<sf::Sprite> > map; 
vector<sf::Sprite> row; 
map.resize(0); 
row.resize(0); 
for(int i = 0; i < num_cols; i++){ 
    row.push_back(temp); 
} 
for(int i = 0; i < num_rows; i++){ 
    map.push_back(row); 
} 

マップは、いずれの場合も、次いでアクセス
として地図[X] [Y]
あります。

希望これは答えのため

+0

おかげで役立ちますが、私はまだあなたが取得しているエラーはどのようなものがあり、この – Mete

+0

のエラーを得ましたか。 – JuJoDi

1

ヨ「『精巣』はこのスコープで宣言されていなかった」と述べていますあなたはただスプライトを作成し、それをベクトルに入れる必要があります。

sf::Sprite sprite; 
test.push_back(sprite); 

Easy peasy!

std::vectorはそれ自体でサイズが変更されるため、サイジングについて心配する必要はありません。

関連する問題