61

Re: Life_of_ANTS

koala написав:

Щойно залив ще трохи оновлень - я там забув знищити Surface, тому пам'ять протікала дай Боже, ну і всього потроху...
Перевірте, в якій саме теці знаходиться times.ttf і з якої запускається ваша програма. У мене робочою текою встановлена тека проекту, а не тека з .exe-файлом.

Все вирішив не туди запхав

62

Re: Life_of_ANTS

Наступні завдання, як я бачу:
- Зробити food багаторазовим, наприклад, 100 життів, і мураха тягне кожного разу потроху. Коли життів 0, "перезавантаження".
- Оптимізувати вибір напрямку руху мурахи, зараз він переважно вертикальний.
- Додати в idle рандомну зміну напрямку час від часу.
- Створити клас для написів, що дозволяє додавати що завгодно (по типу pLabel->add("Ants: ")->add(20); чи *pLabel<<"Ants"<<20;).
- Створити клас "гра", що містить основний цикл (наразі в main), обробку подій (наразі в scene) та меню.
- Дозволити мурашникам накопичувати ресурси і перетворювати їх на мурах.
- Зробити в мурах різні швидкості.
- Зробити бій між мурахами.
- Додати кросплатформене підвантаження шрифтів (натяки тут).
- Інкапсулювати різні змінні, а то знову все в public.

63

Re: Life_of_ANTS

Ще в мене є пропозиція сітку зробити 6-ти кутну типу Hex grid.

64

Re: Life_of_ANTS

А може, взагалі від сітки відмовитися і хай по діагоналях як завгодно ходять? Бо наразі ефективна відстань по діагоналі дорівнює x+y, а не sqrt(x^2+y^2). А досяжність їжі визначається довжиною лап (типу 0.3 чи щось таке).

65

Re: Life_of_ANTS

А, ну і клас "Спрайт" потрібен теж, але ж не крадений :)

66

Re: Life_of_ANTS

- Додати кросплатформене підвантаження шрифтів

А зараз на якій платформі не працює?

67

Re: Life_of_ANTS

Ну, тягати шрифти із собою - теж, звісно, варіант... Бо кросплатформенні ресурси - той ще геморой.

68

Re: Life_of_ANTS

koala написав:

Наступні завдання, як я бачу:
- Зробити food багаторазовим, наприклад, 100 життів, і мураха тягне кожного разу потроху. Коли життів 0, "перезавантаження".

Я за це візьмусь

Подякували: koala1

69

Re: Life_of_ANTS

Є якісь причини робити

getColony()->ants.push_back( this );

в класі Ant, а не в класі Colony? Я думаю трохи переробити все, щоб тільки клас Colony відповідав за керування мурахами (власне, я хотів зробити клас AntManager, але побачив, що в Colony частково реалізовано те, що я хотів від цього класу).

Подякували: koala1

70

Re: Life_of_ANTS

quez написав:

Є якісь причини робити

Жодних, крім того, що мені було ліньки. Звісно, треба зробити Colony::addAnt( Ant * ) - чи навіть краще просто Colony::addAnt(), який буде створювати нову мураху, а то зараз трохи незручний формат (new Ant(...) сам себе запам'ятовує, але це може заплутати людей).

71

Re: Life_of_ANTS

А ще контейнери треба з векторів переробити, але ще подивитися, на що саме... поки хай буде як є, а далі або List, або Set, або ще щось зробимо.
І ще раз питаю: чи є заперечення стосовно переходу на C++11? Чи вже одразу на C++14?

72 Востаннє редагувалося koala (23.11.2014 13:29:20)

Re: Life_of_ANTS

А, іще питання геометрії: наразі мурахи бігають по тору із манхеттенською метрикою, а відстань обчислюють так, ніби це прямокутник в евклідовому просторі. Треба обговорити, що ми хочемо зробити.

73

Re: Life_of_ANTS

І ще раз питаю: чи є заперечення стосовно переходу на C++11? Чи вже одразу на C++14?

Немає. Давайте зразу на 14-й.

74

Re: Life_of_ANTS

Поясніть ось цей шматок коду

void Scene::allFoods()
{
    for ( unsigned int i = 0; i < food.size(); ++i )
    {
        delete food[0];
    }

}

Назва явно не відповідає тому, що робить цей метод, а що він має робити, з назви незрозуміло.

75 Востаннє редагувалося koala (23.11.2014 14:12:04)

Re: Life_of_ANTS

Назва лишилася стара. Має бути щось типу resetAllFoods() (з урахуванням перестворення їжі в forgetFood - якщо сцена втрачає їжу, виникає нова).
Про C++14 - його ще не всі компілятори підтримують (та й з C++11 подекуди проблеми).
http://en.cppreference.com/w/cpp/compiler_support

Але цикли по контейнерах дуже б хотілося мати... Що скаже StoBF?

76 Востаннє редагувалося StoBF (23.11.2014 15:55:59)

Re: Life_of_ANTS

Немаю жодних заперечень) От тільки треба буде вікі поюзати щоб знати по більше про С++14. Ну це вже мої проблеми.
І ще можна розписати в вікі що за що відповідає. Бо реально тяжкувато вїхати що де. Зокрема не вдається знати функцію яка респавнить їжу коли мураха її забрала. Точніше перевірку чи чи координати мурахи збіглись із їжею.

77

Re: Life_of_ANTS

Додав лейбли. Там є куди оптимізувати, але поки хай так буде.

78 Востаннє редагувалося quez (23.11.2014 18:34:44)

Re: Life_of_ANTS

Як ловити сегфолт? При запуску програма падає з

Program received signal SIGSEGV, Segmentation fault.
0x0000000000407607 in __gnu_cxx::new_allocator<Food*>::construct(Food**, Food* const&) ()

Food створюється тільки в одному місці:

void FoodManager::createFood()
{
    food.push_back(new Food());
}

79

Re: Life_of_ANTS

Дебагером, звісно.
А ви, швидше за все, або не створили вектор food, або щось не те робите в конструкторі Food - часом, не двічі додаєте?

80

Re: Life_of_ANTS

Схоже, що причиною були два вектора з назвою food, один в FoodManager, інший в Scene. В один писав, а другий використовував.
Є спосіб перетворити vector<Food*> в vector<Block*>?