2016-03-29 19 views
1

İçine bir yapılandırma i [karolar] bölümünden döngü onun çizgileri (I) saklamak için nasıl bir haritaAllegro 5 döngü

name=map1 
width=5 
height=5 
[tiles] 
    l=0,0,1,0,0 
    l=0,1,1,1,0 
    l=0,1,0,1,0 
    l=0,1,0,1,0 
    l=0,0,0,0,0 
[/tiles] 

depolamak dosyayı değerleri var benim vektör?

Not: allegro5 etiketini koydum, çünkü yapılandırma dosyaları için işlevlere sahip. Bir cevap benim kendi soru var bu yüzden

+0

Sanırım okumayı ne zaman keseceğimi belirlemeniz gerekir. '[/ Tiles]' ifadesinin döngünün sonu olduğunu ifade eder. Yani bir satır okuduğunuzda ve metni içerdiğinde, döngüden kopar. –

+0

Sorunuz, bir yapılandırma dosyasını ayrıştırmakla ilgili olduğunda, allegro5' etiketi ile ne ilgisi var? –

+0

@Thomas Matthews allegro5 etiketini koydum çünkü bu kütüphanede bir oyun yapıyorum ve allegro5 yük yapılandırma dosyaları için fonksiyonlar içeriyor, bu yüzden kendi kodumu yazmam ya da konfigürasyon dosyalarını ayrıştırmak için harici kütüphaneleri içe aktarmam gerekmiyor. –

cevap

1

Allegro sadece son alacaktır Aynı tuşla numaralı girişler. Eğer her satırı farklı anahtar verebilir ederken, yerine = atama isteğe olmasından yararlanmak:

[tiles] 
    0,0,1,0,0 
    0,1,1,1,0 
    0,1,0,1,0 
    0,1,0,1,0 
    0,0,0,0,0 
[/tiles] 

Şimdi her satır için veri 'anahtar' kendisinde bulunan ve 'değer' göz ardı edilir.

int main() { 
    ALLEGRO_CONFIG *cfg; 
    ALLEGRO_CONFIG_ENTRY *entry; 
    const char* row; 

    al_init(); 

    cfg = al_load_config_file("config.cfg"); 

    row = al_get_first_config_entry(cfg, "tiles", &entry); 
    while (entry) { 
     printf("%s\n", row); 
     row = al_get_next_config_entry(&entry); 
    } 

    return 0; 
} 
+0

Tanklar!, Bu çok daha kullanışlı ve yararlıdır, cevabım, allegro5 hakkında bildiğinizi görüyorum, ben allegro5 etiketi, Stack Overflow, Tankınız için çok aktif görünmüyor. –

+0

Gerçekten de, geçmişte olduğu gibi o kadar aktif değil. Orada [forum] (http://www.allegro.cc) biraz daha fazla etkinliğimiz var :) – rlam12

0

Bir allegro5 başvuru ve witing okuma ve çalışıyor ve tekrar denemeden bir süre sonra bunu yapmak için bulduk: [karolar] bölümünün

ilk entrys may bunun gibi, farklı adlara sahip:

[tiles] 
    a=0,0,1,0,0 
    b=0,1,1,1,0 
    c=0,1,0,1,0 
    d=0,1,0,1,0 
    e=0,0,0,0,0 
[/tiles] 

sonra kodunuz: keşfettik gibi

ALLEGRO_CONFIG*config_file=al_load_config_file("example.map"); 
vector<const char*>lines 
ALLEGRO_CONFIG_ENTRY** entry_iterator; 
const char* entry; 
entry=al_get_first_config_entry(config_file, "tiles", entry_iterator); 
while((entry=al_get_next_config_entry(entry_iterator))!=NULL){ 
     lines.push_back(al_get_config_value(config_file, "tiles", entry)); 
};