Так-с ну я пока сидел и страдал фигней решал задачу, я подумал, а создам-ка я функцию, которая будет сама мне выделать память под двумерный массив:
Code
//Функция создания двумерного массива char** createArr(char** arr, int x) { arr = new char*[x]; for (int i = 0; i<sizeX; i++) arr[i] = new char[x]; }
Но потом я столкнулся с тем, а как же мне быть в этой ситуации с работой над копиями данных))) Просто на обычные значения или простой массив есть простая штука взятие адреса или параметр как указатель, а как можно будет сделать что-то на вроде этой функции, чтобы она под него выделила память) Тут смысл не в том, что я хочу облегчить себе жизнь не выделяя память самому в будущем, а просто вдруг мне такое понадобится где-то еще =) В общем что-то делаю, но пока не пойму ни как :) Тень - выражение основной сущности человека.
Эээ)) Да я просто хочу чтобы функция мне заполнила массив указателей на указатели указателями и чтобы это не осталось бесследным для программы) а то я подозреваю, что эта фича работает, но с копиями данных, да и не подозреваю, а уверен уже пробовал)
Добавлено (27.07.2012, 05:21) --------------------------------------------- Нохчи, Для создания такого рода функции я нашел другой выход, создал макрос)))
В общем что-то делаю, но пока не пойму ни как :) Тень - выражение основной сущности человека.
Да уж, таки мощно вышло, я ни в #601, ни в #603 нефига не понял
Gavolot Можешь выложить сюда код, что вообще там у тебя происходит? Даже если уже разобрался(в таком случаем - просто из любопытства) C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Я хотел в тот момент функцию при вызове, которой, создавался бы двумерный массив, которым я мог бы потом легко пользоваться. Т.е. мне просто было любопытно сделать функцию, в которой я как бы и не вижу, как этот массив создается) Но вместо функции я решил сделать макрос, результаты были даже лучше:
Code
#define createArr(ARR, y, x, type) type** ARR = new type*[y]; for (int t = 0; t<y; t++) ARR[t] = new type[x];
Получилось очень даже интересно =) В общем что-то делаю, но пока не пойму ни как :) Тень - выражение основной сущности человека.
Archido, Но макрос тоже свое отрабатывает))) Но за вариант +, потому-что макрос не всегда удобно. В общем что-то делаю, но пока не пойму ни как :) Тень - выражение основной сущности человека.
Уважаемые знатоки си-подобных языков. Проблема.. хотя назвать это проблемой тоже нельзя. Прошу объяснить, каким образом происходит следующее. Для начала код:
Code
class Game { public : // бла бла бла ненужный код
bool running;
void start() { // еще чуток кода ненужного тут было
Все работает и счетчик тоже. В чем проблема: на моем основном компе (работаю на две машины) стоит win7 professional x32, а железо и дрова не важны. Фпс - 60. Ровно 60. Ни больше ни меньше. Ровно 60. На моем нетбуке стоит win7 начальная x32. Запускаю, фпс - от 600 до 800. Скачками. Код один, библиотеки одинаковые (переносил с основного на бук). Комп мощнее бука раз в 3-5. Но на компе 60, а на буке 600-800. Может кто нибудь объяснит, каким образом такое происходит?
Сообщение отредактировал MrAkakuy - Пятница, 27 Июля 2012, 18:36
Это VSync. Попробуй после инициализации OpenGL (лучше перед главным циклом) сделать "glfwSwapInterval(0);" C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Archido, спасибо огромное лови + . Раз уж на то пошло, может подскажите, как сделать контроль фпс? Я юзал гугль, пробовал писать сам, но никак не могу написать код, вычисляющий нужное время для glfwSleep().
Ну, Sleep обычно не для этого используют. Вот тут есть код как примерно ограничитель делается, так и ты попробуй над своим циклом поработать. C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Недавно начал учить C++ и столкнулся с проблемой. Хочу сделать консольную версию морского боя. Вот код:
Code
char field[9][9]; //двумерный массив поля int x,y; // переменная столбика и строки int new_i=0; //переменная-счетчик для однопалубных кораблей srand(time(NULL)); for (x=0;x<=9;x++) { for (y=0;y<=9;y++) { field[x][y]='.';
for (new_i=0;new_i<=3;new_i++) { field[rand()%9][rand()%9]='$'; //тут должны отображаться однопалубные корабли } cout<<"[ "<<field[x][y]<<" ] "; //вывод сетки поля на экран } cout<<"\n"; }
Проблема заключается в том, что постоянно генерируется разное количество кораблей, хотя переменная new_i приняла значение, при котором цикл не выполняется.
justfoler Ну, мне сразу бросается в глаза выход за границы массива. Т.е. у тебя два цикла проходят от 0 до 9, по 10 элементов, а у тебя массив 9х9. C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
justfoler, Потому что у тебя цикл генерации однопалубных кораблей вложен в цикл отрисовки карты, каждый цикл по x, y рисуется карта, и также генерируются корабли, так как цикл сокращается, уже в сгенерированных местах карты появляются корабли, и они не могут быть перезаписаны. Иначе говоря цикл создания кораблей проходит каждый раз как рисуется часть карты, всего получается 400 раз.
Сообщение отредактировал Lord_Zeon - Понедельник, 30 Июля 2012, 17:38
goldsphere, три раза запускал программу. Вот результат:
Добавлено (30.07.2012, 17:41) --------------------------------------------- Lord_Zeon, но во вложеном цыкле всего 4 повтора. Переменная new_i достигает значения 3 и в следующий раз цикл не должен выполняться. Разве не так?