Результаты поиска
Alkosha Дата: Воскресенье, 03 Августа 2014, 00:55 | Сообщение # 161 | Тема: Вопрос-Ответ (C++)
участник
Сейчас нет на сайте
Цитата RUNGOGET2THECHOPAH (
)
У тебя тут вектор пустой
а как и чем его заполнить ?
Alkosha Дата: Суббота, 02 Августа 2014, 23:21 | Сообщение # 162 | Тема: Вопрос-Ответ (C++)
участник
Сейчас нет на сайте
Цитата wcpt (
)
что, от одного объявления вылетает?
Одно объявление - полёт нормальный. А вот стоит мне только занести данные в какое-либо поле класса (vector <myEnemy> bird; bird[0].x = 100;) -- вылет из программы. Цитата Snake174 (
)
Пример кода бы хоть привёл.
Боюсь засмеёте.
Сообщение отредактировал Alkosha - Суббота, 02 Августа 2014, 23:22
Alkosha Дата: Четверг, 31 Июля 2014, 23:58 | Сообщение # 163 | Тема: Вопрос-Ответ (C++)
участник
Сейчас нет на сайте
Пробую объявить векторами. Код
vector <myEnemy> bird; vector <myEnemy> turtle; vector <myEnemy>spider;
Вылет из программы происходит. Ставлю обратно стандартным массивом - не вылетает.
Alkosha Дата: Среда, 30 Июля 2014, 16:51 | Сообщение # 164 | Тема: Вопрос-Ответ (C++)
участник
Сейчас нет на сайте
Есть класс условного противника myEnemy За счёт которого объявленны разные типы противников myEnemy enemyType1[256]; myEnemy enemyType2[256]; myEnemy enemyType3[256]; Для каждого типа инициализируется разное кол-во противников. Где лучше хранить значение количества ? Создать отдельную структуру ? И ещё, на следующем уровне будет уже другое количество этих противников. Как обнулить массивы enemyType[...] для повторного использования ?
Alkosha Дата: Среда, 16 Июля 2014, 21:08 | Сообщение # 165 | Тема: Вопрос-Ответ (C++)
участник
Сейчас нет на сайте
Цитата Storm54 (
)
Прочитай про модульное программирование.
дело в том, что у меня почти каждый класс завязан за функцией рендеринга , объявленной в main.cpp. Поэтому не знаю, как раскидать по файлам.Добавлено (16.07.2014, 21:08) ---------------------------------------------
Цитата OpenGOO (
)
Судя по увиденному ты ни одной книги по с++ не прочитал Читай книги, там на многие твои нубские вопросы уже даны ответы.
когда-то пытался прочесть Шилдта. Начало там действительно для нубов. Но затем с каждой страницей сложность понимания возрастает по экспоненте. Не осилил, короче.
Alkosha Дата: Понедельник, 14 Июля 2014, 14:43 | Сообщение # 166 | Тема: Вопрос-Ответ (C++)
участник
Сейчас нет на сайте
Цитата Alkosha (
)
В твоем конкретном случае (пустой класс),
он пустой , потому-что это лишь пример. На самом деле мой класс таков. Код
class myPers { private: int ft;//frametime int idletime=0; int jumptime=0; public: bool onGround; float x; float y; int frameNum; float dx; float dy; int damage=0; int power = 80; void frameMove() { ft++; int t=7;//время кадра for(int i=0;i<7;i++) { if(ft>(0+(i*t))&&ft<=(t+(i*t)))frameNum=i+1; } if(ft>7*t)ft=0; } void idle() { idletime++; if(idletime<20)frameNum=0; if(idletime>=20&&idletime<30)frameNum=12; if(idletime>=30&&idletime<40)frameNum=13; if(idletime>=40&&idletime<50)frameNum=12; if (idletime>=50) {idletime=0;} } void movePers(int fb) { if(fb==1&&onGround&&jumptime==0) { mitalizd.mirror=true; frameMove(); dx=-4; } if(fb==2&&onGround) { mitalizd.mirror=false; frameMove(); dx=4; } if(fb==3&&onGround)// джамп { dy=-14; } } }; myPers pers;
Alkosha Дата: Понедельник, 14 Июля 2014, 13:51 | Сообщение # 167 | Тема: Вопрос-Ответ (C++)
участник
Сейчас нет на сайте
это выходит, что в той структуре (vec2d) вовсе нет нужды? Так ведь ? Раз установка координат происходит за счёт отдельных ф-ций.
Сообщение отредактировал Alkosha - Понедельник, 14 Июля 2014, 13:51
Alkosha Дата: Воскресенье, 13 Июля 2014, 22:58 | Сообщение # 168 | Тема: Вопрос-Ответ (C++)
участник
Сейчас нет на сайте
чёт не видно выгоды в такой структуре. во всяком случае придётся объявлять отдельно x и y. Ровно как и производить операции. Код
class mySprite { vec2d coord; }; mySprite sprite sprite.coord.x=100; sprite.coord.y=100;
Просто лишнее слово приходится ещё дописывать. Или я не совсем догоняю в чём вся суть...
Alkosha Дата: Воскресенье, 13 Июля 2014, 00:46 | Сообщение # 169 | Тема: Вопрос-Ответ (C++)
участник
Сейчас нет на сайте
Ещё мне как-то сделали замечание, что в каждом игровом объекте координаты отдельные Код
class sprite { public: float x; float y; }
И предложили сделать вектором. Только вот я не знаю как. Покажите, пожалуйста, на примере того же класса sprite , как объединить x и y в единый вектор. (как в irrlicht'e , например, есть тип переменной vector3df. Но в моём случае этот вектор должен быть двумерный).
Alkosha Дата: Суббота, 12 Июля 2014, 10:20 | Сообщение # 170 | Тема: Вопрос-Ответ (C++)
участник
Сейчас нет на сайте
Код
strcpy(btmap[mapln],input[j].c_str());
выбивает из программы. j = 1 (вторая строка файла с информацией карты коллизии) mapln = 0.
Alkosha Дата: Пятница, 11 Июля 2014, 22:07 | Сообщение # 171 | Тема: Вопрос-Ответ (C++)
участник
Сейчас нет на сайте
Цитата OpenGOO (
)
ведь функция вообще кроме вывода строк ничего не делает.
А должна. Вывести строки я и так без проблем могу. Ф-ция void collis() должна занести эти строки в char *btmap[64]; Короче, вот внутри программы сейчас такая штука.
Код
static const int maplen = 20; char *bitmap[maplen]= { "BBBBBBBBBBBBBBBBBB ", "B ", "B B", "B B", "B B", "B B", "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBB B", "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BB BB BBBBBBBBB B", "B BB BB BB B", "B BB BB BB B", "B BB BBBBBBBB BBBBBBBBB B", "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BB B", "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBB B", "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBB B B", "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBB BB B B", "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBB BB B B", "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBB BB B B", "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", };
Мне надо то же самое, считанное с файла поместить в подобный массив. Так как я файл уже начал считывать построчно, то и эти строки соответственно нужно каким-то образом впихнуть в область, куда ссылаются указатели.
Сообщение отредактировал Alkosha - Пятница, 11 Июля 2014, 22:08
Alkosha Дата: Четверг, 10 Июля 2014, 13:06 | Сообщение # 172 | Тема: Вопрос-Ответ (C++)
участник
Сейчас нет на сайте
Так-с. Ресурсы и координаты удалось загрузить. теперь карту коллизии бы туда же. А то она до сих пор в исполняемой программе находится. В следующем виде: Код
static const int maplen = 20; char *bitmap[maplen]= { //и тут фиксированное кол-во строк через запятую "....", }
Когда построчно то же самое считываю из файла, всё ок. Затем пытаюсь сконвертить в char* - происходит какая-то ерунда. В консоли cout отображает всякие кракозябры, после чего выбивает из программы. Код
void collis() { int mapln=0; char *btmap[64]; j+=1; while(input[j]!="endcollis") { btmap[mapln]=(char*)input[j].c_str(); mapln++; j++; cout<<mapln<<" "<<btmap[mapln]<<endl; } } void deshifrator() { for(int j=0;j<i;j++) { if(input[j]=="res") { priemResursov(); } if(input[j]=="l1") { koordTilesL1(); } if(input[j]=="l2") { koordTilesL2(); } if(input[j]=="collis") { collis(); }
Конкретно вот в этой штуке загвоздка. Код
btmap[mapln]=(char*)input[j].c_str();
Добавлено (10.07.2014, 11:57) --------------------------------------------- Содержимое считываемого файла
Цитата
collis BBBBBBBBBBBBBBBBBB_____________________________________________________________________________________________________ B______________________________________________________________________________________________________________________ B_____________________________________________________________________________________________________________________B B_____________________________________________________________________________________________________________________B B_____________________________________________________________________________________________________________________B B_____________________________________________________________________________________________________________________B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB________________________BBBBBBBBBBBBB___________________________________B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB______________________BB___________BB_____________BBBBBBBBB____________B B_____________________________________________BB____________________BB_____________BB_________________________________B B______________________________________________BB__________________BB_______________BB________________________________B B_______________________________________________BB__________BBBBBBBB_________________BBBBBBBBB________________________B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB_________BB___________________________________________________________________B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB__________BBBBBBBB____________________________________________________________B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB____________BBBBBBB____________________B______________________________________B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB____________BBBBB_BB___________________B______________________________________B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB____________BBBBB__BB__________________B______________________________________B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB____________BBBBB___BB_________________B_____________B________________________B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB____________BBBBB___BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB____________BBBBB___BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB____________BBBBB____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB endcollis res 0 img//home2.png 1 img//ground1.png 2 img//zabor1.png 3 img//home1.png 4 img//bus.png 5 img//platform1.png 6 img//tree.png 7 img//gorka.png 8 img//ground2.png 9 img//truba.png 10 img//junk.png endres l1 0,50,30 1,-500,285 1,100,285 1,700,285 5,1298,285 7,1495,293 5,1660,455 7,1860,455 5,2000,625 8,2200,625 5,2490,625 9,2520,490 1,2685,630 1,3280,630 endl1 l2 3,10,30 2,750,158 4,2500,315 endl2
Добавлено (10.07.2014, 13:06) --------------------------------------------- input[j] -- массив считанных строк.
Alkosha Дата: Понедельник, 07 Июля 2014, 00:03 | Сообщение # 173 | Тема: Градиент
участник
Сейчас нет на сайте
странно... так работает. Но не вижу где разница с моим листингом (за исключением названий переменных)...
Alkosha Дата: Воскресенье, 06 Июля 2014, 19:20 | Сообщение # 174 | Тема: Градиент
участник
Сейчас нет на сайте
Цитата wcpt (
)
а потом результаты (которые, по идее, будут в пределах байта, почему я уже написал)
не важно, будет там инт или байт, так как там интенсивность возрастает от 0 до 255-ти, затем от 256 до 511-ти и так далее. так же с минусовым знаком. Я к тому, что while(!0) { SDL_Color rgb; rgb++; render(); } Будет постоянно мигать (постепенно возрастать яркость , затем резко гаснуть, и опять постепенно возрастать по яркости).
Alkosha Дата: Воскресенье, 06 Июля 2014, 17:24 | Сообщение # 175 | Тема: Градиент
участник
Сейчас нет на сайте
Даже если и так, я пробовал так же (Uint8) __dr , ещё когда skyColorTop был SDL_Color'ом. Тот же результат
Alkosha Дата: Воскресенье, 06 Июля 2014, 16:53 | Сообщение # 176 | Тема: Градиент
участник
Сейчас нет на сайте
Цитата wcpt (
)
я написал, что проблемы, вероятно, из-за того, что у SDL_Color r g b a задаются как uint8, т.е. как беззнаковые числа. То есть,
В приведённом мною листинге уже нет SDL_Color . Тут же своя структура с интами Код
struct mycolor { int r; int g; int b; } ;
Добавлено (06.07.2014, 16:53) --------------------------------------------- То есть тут -- int + int Код
skyColorTop.r +(int) __dr
Сообщение отредактировал Alkosha - Воскресенье, 06 Июля 2014, 16:54
Alkosha Дата: Воскресенье, 06 Июля 2014, 16:31 | Сообщение # 177 | Тема: Градиент
участник
Сейчас нет на сайте
Код
struct mycolor { int r; int g; int b; } ; public: void sky() { mycolor skyColorTop={255,0,0}; mycolor skyColorBottom={0,0,255}; float _dr; float _db; float _dg; float __dr; float __db; float __dg; _dr = skyColorBottom.r-skyColorTop.r; _dg = skyColorBottom.g-skyColorTop.g; _db = skyColorBottom.b-skyColorTop.b; _dr /= 600; _dg /= 600; _db /= 600; for(int a=0;a<600;a+=1) { __dr += _dr; __dg += _dg; __db += _db; SDL_SetRenderDrawColor(renderer, skyColorTop.r +(int) __dr, skyColorTop.g +(int) __dg, skyColorTop.b +(int) __db, 255); SDL_RenderDrawLine(renderer,0,a,800,a); } }
Alkosha Дата: Воскресенье, 06 Июля 2014, 15:54 | Сообщение # 178 | Тема: Градиент
участник
Сейчас нет на сайте
Даже когда создал структуру, результат всё тот же - сплошной цвет, который указан в skyColorTop (он же clr1 ) Код
struct mycolor { int r; int g; int b; } ;
Alkosha Дата: Воскресенье, 06 Июля 2014, 00:58 | Сообщение # 179 | Тема: Градиент
участник
Сейчас нет на сайте
Цитата
ну и конечно, если захочется линиями, то внутренний цикл убирай, ставь вместо него что-то типа 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 Код
SDL_Color skyColorTop={255,0,0,0}; SDL_Color skyColorBottom={0,0,255,255}; SDL_RenderSetScale(renderer,1,1); SDL_SetRenderDrawBlendMode( renderer, SDL_BLENDMODE_BLEND); float _dr; float _db; float _dg; float __dr; float __db; float __dg; _dr = skyColorBottom.r-skyColorTop.r; _dg = skyColorBottom.g-skyColorTop.g; _db = skyColorBottom.b-skyColorTop.b; _dr /= 600; _dg /= 600; _db /= 600; for(int a=0;a<600;a+=1) { __dr += _dr; __dg += _dg; __db += _db; SDL_SetRenderDrawColor(renderer, skyColorTop.r + (int)__dr, skyColorTop.g + (int)__dg, skyColorTop.b + (int)__db, 255); SDL_RenderDrawLine(renderer,0,a,800,a); } }
рисует сплошняком цветом skyColorTop (он же clr1). Как будто к нему прибавляются нули по rgb-каналам. И даже если бы и прибавлялось что-то, ведь тут вполне возможно переполнение за значение 255 (допустим clr1.r=250, то в установке цвета к нему ещё бы прибавилось сего-нибудь (допустим единицу), то есть он бы резко спал в значение 0)
Сообщение отредактировал Alkosha - Воскресенье, 06 Июля 2014, 00:59
Alkosha Дата: Суббота, 05 Июля 2014, 08:08 | Сообщение # 180 | Тема: Градиент
участник
Сейчас нет на сайте
Но тут же в теле цикла не происходит никакого изменения _clr остаётся постоянным. Код
color _clr = RGB(clr1.R+dr,clr1.G+dg,clr1.B+db)
Вот например сие даёт сплошной ярко-красный цвет. Код
SDL_Color skyColorTop={255,100,100,255}; SDL_Color skyColorBottom={255,10,10,255}; int dr = skyColorBottom.r-skyColorTop.r; int dg = skyColorBottom.g-skyColorTop.g; int db = skyColorBottom.b-skyColorTop.b; dr /= stepnum; dg /= stepnum; db /= stepnum; for(int a=0;a<600;a+=1) { SDL_SetRenderDrawColor(renderer, skyColorBottom.r+dr,skyColorBottom.g+dg, skyColorBottom.b+db, 255); SDL_RenderDrawLine(renderer,0,a,800,a); }
Сообщение отредактировал Alkosha - Суббота, 05 Июля 2014, 08:09