DXライブラリを使っています。
現在、以下のように構造体にデータを代入しています。
#include "DxLib.h"
#define FAILURE -1
#define IMAGE_LENGTH 6
#define POP_LENGTH 7
#define CHARACTER_LENGTH 5
#define EFFECT_LENGTH 4
#define MUSIC_LENGTH 1
struct DATA {
int image[IMAGE_LENGTH], pop[POP_LENGTH], character[CHARACTER_LENGTH], effect[EFFECT_LENGTH], music[MUSIC_LENGTH];
} data;
bool titleの関数(void){
imageを使う。
return false;
}
bool 他の関数(void){
imageを使う。
return false;
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
if(DxLib_Init()==FAILURE){
return FAILURE;
}
data.image[0]=LoadGraph("a.png");
data.image[1]=LoadGraph("b.png");
data.image[2]=LoadGraph("c.png");
data.image[3]=LoadGraph("d.png");
data.image[4]=LoadGraph("e.png");
data.image[5]=LoadGraph("f.png");
//省略
data.music[0]=LoadSoundMem("title.ogg");
for(int i=0;i<IMAGE_LENGTH;i++){
if(data.image[i]==FAILURE){
DxLib_End();
return FAILURE;
}
}
//省略
for(int i=0;i<MUSIC_LENGTH;i++){
if(data.music[i]==FAILURE){
DxLib_End();
return FAILURE;
}
}
bool end=false;
while(略){
switch(モード){
case titleモード:
end=titleの関数();
break;
case 他のモード:
end=他の関数();
break;
default:
end=true;
break;
}
if(end){
break;
}
}
return DxLib_End();
}
構造体でなければ、 と出来るのですが、構造体だと出来ません。
②data.image[0]=...;data.image[1]=...; と長々書くのが嫌だったので、DxLib_Init()を呼んだ後、whileの前に、
const struct{
const int image[IMAGE_LENGTH],pop[POP_LENGTH],character[CHARACTER_LENGTH],effect[EFFECT_LENGTH],music[MUSIC_LENGTH]
}data={
{
LoadGraph("a.png"),
LoadGraph("b.png")
//略
},
{},{},{},
//略
{
LoadSoundMem("title.ogg");
}
};
希望の形は次のような感じです。(①+②+変更不可)
const struct{
const int image[]={
LoadGraph("a.png"),
LoadGraph("b.png"),
//略
},
//略
music[]={
LoadSoundMem("title.ogg");
}
}data;
このような楽な書き方ができ、 data.image[0] という感じで使用できるものはないでしょうか。