Я сейчас Maing игры RTS и я загружаю единицу из текстовых файлов Int так:Ошибки при загрузке из текстового файла
/блочный// плеер// х со-ог// у со-ог// здоровье/
Я использую вектор отстойника (только единица я в настоящее время) ОБЪЕКТЫ (не указатели), чтобы сохранить все блоки
Когда я загружаю единицы, и я попробуйте нарисовать их на экране, их просто нет. Я сделал несколько тестов, и это встречается, что вектор «Поселенцы» является пустым, даже после того, как я загружаю из текстового файла
Код main.cpp:
vector<Settler> settlers;
...
void load_units(string filename)
{
settlers.clear();
ifstream unit_file(filename.c_str());
string line;
vector<vector<int> > ww;
while(unit_file.eof())
{
while(getline(unit_file, line))
{
stringstream ss(line);
int i;
vector<int> w;
while(ss >> i)
{
w.push_back(i);
}
ww.push_back(w);
}
}
for(int i = 0; i < ww.size(); i++)
{
int type = ww[i][0];
int player = ww[i][1];
int x = ww[i][2];
int y = ww[i][3];
int hp = ww[i][4];
if(type == 1)//settler
{
Settler settler(x, y, hp, player);
settlers.push_back(settler);
}
}
unit_file.close();}
...
void init() {
SDL_Init(SDL_INIT_EVERYTHING);
TTF_Init();
Mix_OpenAudio(22050, MIX_DEFAULT_FORMAT, 2, 4096);
SDL_WM_SetIcon(IMG_Load("icon.png"), NULL);
screen = SDL_SetVideoMode(1600, 900, 32, SDL_FULLSCREEN);
map = IMG_Load("tlo.png");
bar = IMG_Load("bar.png");
pause_menu = IMG_Load("menu.png");
save_game_menu = IMG_Load("save_game_menu.png");
save_prompt = IMG_Load("saved_prompt.png");
load_game_menu = IMG_Load("load_game_menu.png");
load_prompt = IMG_Load("loaded_prompt.png");
intro_control = true;
menu = true;
running = false;
paused = false;
saving = false;
loading = false;
mapX = 0;
mapY = 0;
Xoffset = 0;
Yoffset = 0;
load_map("mapa1.txt");
load_units("units1.txt");
for(int i = 0; i < 60; i++)
{
string file_frame;
stringstream ss;
ss << i + 1;
if(i < 9)
{
file_frame = ("intro/000");
}else
{
file_frame = ("intro/00");
}
file_frame.append(ss.str());
file_frame.append(".png");
intro[i] = IMG_Load(file_frame.c_str());
}}
...
int main(int argc, char* args[]) {
int frame = 0;
Timer fps;
init();
Player p1(0, player_1_colour, "player 1");
int frame_control = 0;
while(intro_control)
{
.....
PS: Я подозреваю, что может произойти ошибка в инструкции while (unit_file.eof()) {". Но это только предположение
, так что у меня уже есть класс Settler, но я добавлю структуру поселенца в main.cpp, правильно? – user2466076
Нет, я просто определил Settler здесь, потому что вы не дали определение своего класса, и я хотел сделать этот пример полным примером. Конечно, вы можете использовать свой собственный сеттер, но тогда вам, возможно, придется сменить оператор >> перегрузка. – bennofs
Огромное спасибо, Я проверяю его и отвечаю в секундах – user2466076