Пытаюсь сделать редактор уровней, выбрал ГУЙ Builder'a XE (так как в оном, в отличии от борландовского, есть поддержка png-имэйджей) Сделал листбокс, в который добавляются файлы картинок через диалог открытия файлов. Теперь бы эти картинки разместить в виде массива на виртуальном игровом поле. И вот теперь не знаю как лучше. Мне кажется для каждой размещённой картинки создавать TImage достаточно ресурсоёмко. Каким образом оптимальнее всего разместить картинки на поле ?
Сообщение отредактировал Alkosha - Среда, 25 Июня 2014, 22:57
Есть функция, в качестве аргумента которой передаётся указатель типа char* ("путь к файлу") Но у меня в проге этот путь к файлу хранится в string'e. Как его преобразовать в нужный вид ?
Если функцию tileTex[int].load(char*) напрямую выполнить (безо всяких считываний из файла), то всё ок.
Добавлено (30.06.2014, 13:43) --------------------------------------------- Кстати, а в каждом элементе string-массива может ли быть символ конца строки в этом случае (\n)? Если да, то как его избежать. Ведь заношу инфу в стринги таким образом. file>>input[i];
Добавлено (30.06.2014, 14:55) --------------------------------------------- а не, всё-таки энд-лайна нет в стрингах. input[i].length() показывает в консольке ровно то же кол-во символов, сколько и видно их в той же самой консольке невооружённым глазом.
Сообщение отредактировал Alkosha - Понедельник, 30 Июня 2014, 22:19
первое что бросается в глаза, ты не предпринимаешь никаких действий, если файла такого нету, т.е считать ты его не смог, а что-то делать с пустой информацией пытаешься.
это второстепенное. Ибо до перехода в функцию deshifrator() все считанные строки отображаются в консоли.
Добавлено (30.06.2014, 22:35) --------------------------------------------- ага.... только щас дошло по скриншотам. Что в этом цикле он шпарит дальше, чем я расчитывал.
Изначально итерация индекса стрингов j происходила до вызова метода priemResursov(), но когда я j++ перенёс в этот самый priemResursov(), while перестал перескакивать. Теперь картинки грузит как и положено... но, теперь застопорился на установке координат этих картинок. Как теперь из стрингов убрать запятые(либо иные разделительные знаки) и разделить на отдельные числа... похоже, плохая затея со стрингами. Нужно наверное посимвольно считывать, и тут же на ходу интерпретировать. Но пока не знаю как.
Сообщение отредактировал Alkosha - Вторник, 01 Июля 2014, 22:09
int dr = skyColorBottom.r-skyColorTop.r; int dg = skyColorBottom.g-skyColorTop.g; int db = skyColorBottom.b-skyColorTop.b; dr /= stepnum; dg /= stepnum; db /= stepnum;
ну и конечно, если захочется линиями, то внутренний цикл убирай, ставь вместо него что-то типа line(i,0,i,height,clr_), если полоска градиента расположена в левом верхнем углу.
это и так понятно. Просто в Вашем первом варианте в теле цикла (не там где происходит попиксельное рисование линий), переменная остаётся без изменений.
Код
for (int i=0; i<width;i++) { color _clr = RGB(clr1.R+dr,clr1.G+dg,clr1.B+db)
/* для наглядности закомментируем
for (int j=0; j<height; j++) { image.putpixel(i,j,_clr) } */ }
А что касается Вашего последнего варианта, то даже не знаю, чё я делаю не так. Градиента никакого. Сплошной цвет получается Структура SDL_Color'a - r,g,b,a
рисует сплошняком цветом skyColorTop (он же clr1). Как будто к нему прибавляются нули по rgb-каналам.
И даже если бы и прибавлялось что-то, ведь тут вполне возможно переполнение за значение 255 (допустим clr1.r=250, то в установке цвета к нему ещё бы прибавилось сего-нибудь (допустим единицу), то есть он бы резко спал в значение 0)
Сообщение отредактировал Alkosha - Воскресенье, 06 Июля 2014, 00:59
Так-с. Ресурсы и координаты удалось загрузить. теперь карту коллизии бы туда же. А то она до сих пор в исполняемой программе находится. В следующем виде:
Код
static const int maplen = 20; char *bitmap[maplen]= {
//и тут фиксированное кол-во строк через запятую "....",
}
Когда построчно то же самое считываю из файла, всё ок. Затем пытаюсь сконвертить в char* - происходит какая-то ерунда. В консоли cout отображает всякие кракозябры, после чего выбивает из программы.
Мне надо то же самое, считанное с файла поместить в подобный массив. Так как я файл уже начал считывать построчно, то и эти строки соответственно нужно каким-то образом впихнуть в область, куда ссылаются указатели.
Сообщение отредактировал Alkosha - Пятница, 11 Июля 2014, 22:08