Учим языки программирования, Помогаем друг-другу, делимся опытом. |
Здравствуйте, гость ( Авторизация | Регистрация )
Учим языки программирования, Помогаем друг-другу, делимся опытом. |
02.09.2012, 20:45
Сообщение
#481
|
|
Опытный Геймер Репутация: 45 Группа: Участник Сообщений: 152 Награды: 3 Регистрация: 14.02.2011 |
Shoкer
Дай-ка и я напишу пару недостатков 1. Не знаю как тебя, а меня утомляет дописывать всегда "\n" в конце сообщения. Забудешь - и в консольке "вырвиглаз" 3. Нет вывода функции, файла и строки, откуда было послано сообщение (погугли по словам __FILE__, __FUNCTION__, __LINE__) 4. Нет возможности прервать программу после вывода в лог У меня есть файлик (старый уже), где в отдельном пространстве имен debug есть 3 функции - msg(file,function,line,format,...), warming(file,function,line,format,...),error(file,function,line,format,...), а также макрос, который автоматом меняет функцию Msg("some message"); в функцию Msg("some_file.cpp","some_function",999,"some message"); Получается очень удобно А вообще код хороший. Если нечем будет заняться, то приглашаю порешать олимпиадные задачки на каком-нибудь сайте типа acmp Сообщение отредактировал _призрак_ - 02.09.2012, 20:54 |
 
|
|
|
|
02.09.2012, 23:10
Сообщение
#482
|
|
Кандидат Игровых Наук Репутация: 2153 Группа: Участник Сообщений: 3488 Награды: 4 Регистрация: 27.07.2009 |
верно а еще логичнее было бы вызывать эти ф-ии однократно, перед выводом данных в консоль и после. Не, так не сработает, FreeConsole() закрывает консоль. Получается что я вывожу сообщение, и тут же его закрываю. Да и вообще имеет ли смысл эту функцию вызывать? Консоль закрывается вместе с закрытием приложения, есть разве что шанс что память утекает от этого, но вроде ничего подобного не обнаружил. ___ По поводу точки входа вариант, но просто хочется сделать переносную функцию, которую можно будет "брать с собой", и применять в других проектах на других компьютерах. Это быстрее чем под каждый проект переписывать настройки. Neo][ Не получилось нагуглить достаточно информации, но я так понял это как раз строка для вывода сообщения в отладочное окно Visual Studio? Если да, то тоже вариант, но вдруг понадобиться отладить уже собранную программу, тогда без Visual Stuido не обойтись, а так включил галочку в собранной программе и сразу сообщения в консоль посыпались. _призрак_ Не, до задач мне далековато. Я знаю основы, а дальше просто делаю что то, сталкиваюсь с незнанием, гуглю и иду дальше. Эт далеко не самый лучший метод изучения, но по крайнем мере самый быстрый для достижения простенькой цели. 1) Я не стал это делать на случаи если мне понадобиться вывести несколько коротких сообщений в строку. 2) Спс. за наводку, у мну пока программы маленькие, но в будущем пригодиться. 3) Пока не было необходимости, я на столько глубоко с этим не заморачивался ни разу. PS: Кстати если не сложно, то можешь показать свои отладочные функции для изучения? Сообщение отредактировал Shoкer - 02.09.2012, 23:13 -------------------- Мне просто нравятся синие буквы под сообщением.
|
 
|
|
03.09.2012, 09:20
Сообщение
#483
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
Не, так не сработает > myprogram.exe >> output.txt либо надо сделать задержку перед закрытием консоли. Да и вообще имеет ли смысл эту функцию вызывать? это хороший тон. По поводу точки входа вариант, но просто хочется сделать переносную функцию, которую можно будет "брать с собой", и применять в других проектах на других компьютерах. хозяин-барин, конечно, но этот вариант избавляет от необходимости таскать за собой платформ-специфик код и дает возможность пользоваться стандартными потоками ввода/вывода, которые в любой момент можно перенаправить хоть в файл, хоть куда угодно. -------------------- nop
|
 
|
|
03.09.2012, 16:20
Сообщение
#484
|
|
Игровой Эксперт Репутация: 407 Группа: Участник Сообщений: 2394 Награды: 5 Регистрация: 19.01.2009 |
Цитата У меня есть файлик (старый уже), где в отдельном пространстве имен debug есть 3 функции - msg(file,function,line,format,...), warming(file,function,line,format,...),error(file,function,line,format,...), а также макрос, который автоматом меняет функцию Msg("some message"); в функцию Msg("some_file.cpp","some_function",999,"some message"); Получается очень удобно Зачем такие сложности?-почему бы не сделать так Код void Error(const TCHAR*t,const char*_file/*Тут именно чар,можно сделать перевод*/,int line,...) #define LogWrite(a) Error(a,_FILE_,_LINE_) void Error(const TCHAR*t,const char*_file/*Тут именно чар,можно сделать перевод*/,int line,...) { //Обрабатываем все аргументы-на выходе str-содержимое t и дополнительных аргументов("...") .... str+=_T("In:")_file; str+=_T("Line %d:")line; LogMessage(str); } Писал по памяти,но принцип работает и используется в реальном проекте Сообщение отредактировал Tron - 03.09.2012, 16:22 |
 
|
|
03.09.2012, 19:35
Сообщение
#485
|
|
The One Репутация: 744 Группа: Участник Сообщений: 2715 Награды: 5 Регистрация: 05.12.2005 |
Neo][ Не получилось нагуглить достаточно информации, но я так понял это как раз строка для вывода сообщения в отладочное окно Visual Studio? Если да, то тоже вариант, но вдруг понадобиться отладить уже собранную программу, тогда без Visual Stuido не обойтись, а так включил галочку в собранной программе и сразу сообщения в консоль посыпались. Shoкer, можно и обойтись А вообще, обычно, пишут лог в файл, тогда можно и у пользователя этот файлик потом попросить Сообщение отредактировал Neo][ - 03.09.2012, 19:51 -------------------- |
 
|
|
03.09.2012, 20:29
Сообщение
#486
|
|
The One Репутация: 744 Группа: Участник Сообщений: 2715 Награды: 5 Регистрация: 05.12.2005 |
Shoкer, кстати по поводу отладки. Логирование в файл и "диалог ассёртов" можно утянуть из старого сталкер проекта,
Диалог этот можно было видеть, например, в плагине ипорта геометрии. -------------------- |
 
|
|
03.09.2012, 21:09
Сообщение
#487
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
Neo][, а зачем это все, просто assert'a недостаточно разве?
-------------------- nop
|
 
|
|
03.09.2012, 21:30
Сообщение
#488
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
сам ассерт написать достаточно тривиальная задача
а уж какаим образом будет выведено сообщение, хоть в файл, хоть в консоль, хоть в 3д-вьюпорт, это дело десятое, не ассертово это дело -------------------- nop
|
 
|
|
03.09.2012, 22:31
Сообщение
#489
|
|
Игровой Эксперт Репутация: 407 Группа: Участник Сообщений: 2394 Награды: 5 Регистрация: 19.01.2009 |
Цитата У меня есть файлик (старый уже), где в отдельном пространстве имен debug есть 3 функции - msg(file,function,line,format,...), warming(file,function,line,format,...),error(file,function,line,format,...), а также макрос, который автоматом меняет функцию Msg("some message"); в функцию Msg("some_file.cpp","some_function",999,"some message"); Получается очень удобно Зачем такие сложности?-почему бы не сделать так Код void Error(const TCHAR*t,const char*_file/*Тут именно чар,можно сделать перевод*/,int line,...) #define LogWrite(a) Error(a,_FILE_,_LINE_) void Error(const TCHAR*t,const char*_file/*Тут именно чар,можно сделать перевод*/,int line,...) { //Обрабатываем все аргументы-на выходе str-содержимое t и дополнительных аргументов("...") .... str+=_T("In:")_file; str+=_T("Line %d:")line; LogMessage(str); } Писал по памяти,но принцип работает и используется в реальном проекте Перечитал текст,пардон,сделал тоже самое. Извини,я был после ВМ |
 
|
|
12.09.2012, 08:09
Сообщение
#490
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
всех с праздником )
-------------------- nop
|
 
|
|
22.09.2012, 15:44
Сообщение
#491
|
|
Кандидат Игровых Наук Репутация: 2153 Группа: Участник Сообщений: 3488 Награды: 4 Регистрация: 27.07.2009 |
Не совсем по теме, но вдруг повезёт.
Есть вектор V(x,y,z) Есть поворот вида R(1.0,0.5,-0.7) Как правильно повернуть вектор V на поворот R? Наиболее быстрым способом. Рыскаю по интернету но с переменным результатом, а у самого что то пока полный швах с пониманием... Может кто то подкинет ссылку на хороший пошаговый пример? Сообщение отредактировал Shoкer - 22.09.2012, 15:46 -------------------- Мне просто нравятся синие буквы под сообщением.
|
 
|
|
22.09.2012, 21:20
Сообщение
#492
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
если R - это углы поворота вокруг осей x, y, z, соответственно, тогда тебе исходя из этих условий нужно найти матрицу поворота, соответствующую заданной системе координат, и умножить вектор на эту матрицу. это можно осуществить двумя способами:
способ 1, хардкорный результирующую матрицу можно найти как произведение трех матриц поворота вокруг осей x,y,z, важно только соблюдать порядок перемножения. о том что такое матрица поворота можно почитать на способ 2 можно, вооружившись гуглом, посмотреть как реализована математика в различных трехмерных движках. вот пример кода из огра (не самый лучший пример, да, но зато доступный) -------------------- nop
|
 
|
|
22.09.2012, 21:42
Сообщение
#493
|
|
Игровое Воплощение Репутация: 384 Группа: Участник Сообщений: 4718 Награды: 9 Регистрация: 21.05.2008 |
Shoкer есть отличная
А пока искал... Немного ошибся в гугле и вот результат: |
 
|
|
23.09.2012, 00:07
Сообщение
#494
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
я тут набросал на скорую руку примерчик на сишечке:
-------------------- nop
|
 
|
|
25.11.2012, 13:31
Сообщение
#495
|
|
Der Metzgermeister Репутация: 1153 Группа: Участник Сообщений: 4669 Награды: 11 Регистрация: 06.01.2008 |
Камрады! Нужна помощь! На С++ нужно написать калькулятор, который считает десятичные числа. Как сделать проверку для окна, чтобы можно было ввести цифры и точку? Есть там параметр у поля Только цифры, но тогда точка не ставится. Помогите плз)
-------------------- Моя конфа: Intel Core 2 Duo E8500 (3.16x2); 4Gb Ram;
"Перемен требуют наши сердца."© В.Цой "Die Liebe ist ein wildes Tier, sie ahnt dich, sie sucht nach dir."© Rammstein - Amour Ничто не истинно, все дозволено. Мой Twitter - Чемпион по Assassin's Creed: Brotherhood по версии ИгроМир 2010. |
 
|
|
25.11.2012, 13:51
Сообщение
#496
|
|
Продвинутый геймер Репутация: 74 Группа: Забанен Сообщений: 359 Награды: 2 Регистрация: 24.08.2007 |
Камрады! Нужна помощь! На С++ нужно написать калькулятор, который считает десятичные числа. Как сделать проверку для окна, чтобы можно было ввести цифры и точку? Есть там параметр у поля Только цифры, но тогда точка не ставится. Помогите плз) Используй вместо Edit MaskEdit с необходимой маской. Сообщение отредактировал Son1c - 25.11.2012, 13:52 |
 
|
|
25.11.2012, 14:21
Сообщение
#497
|
|
Der Metzgermeister Репутация: 1153 Группа: Участник Сообщений: 4669 Награды: 11 Регистрация: 06.01.2008 |
Не могу найти что то. Не подскажешь где искать?
-------------------- Моя конфа: Intel Core 2 Duo E8500 (3.16x2); 4Gb Ram;
"Перемен требуют наши сердца."© В.Цой "Die Liebe ist ein wildes Tier, sie ahnt dich, sie sucht nach dir."© Rammstein - Amour Ничто не истинно, все дозволено. Мой Twitter - Чемпион по Assassin's Creed: Brotherhood по версии ИгроМир 2010. |
 
|
|
25.11.2012, 14:59
Сообщение
#498
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
-------------------- nop
|
 
|
|
25.11.2012, 15:01
Сообщение
#499
|
|
Мастер Игры Репутация: 188 Группа: Участник Сообщений: 1287 Награды: 2 Регистрация: 28.02.2009 |
Shoкer есть отличная А пока искал... Немного ошибся в гугле и вот результат: Ухахахаха чем она отличная? Тем, что большая и с картинками? Или ты это над ним так издеваешься? xDDDD Автор написал свой графический API, и учит как им пользоваться для создание графической игры. Да, в книге хорошо изложенна теория, но она устарела уже лет как 6 назад. Книга даже не стоит внимания. Сообщение отредактировал mendoza - 25.11.2012, 15:02 -------------------- yeah
|
 
|
|
25.11.2012, 15:09
Сообщение
#500
|
|
Кандидат Игровых Наук Репутация: 2153 Группа: Участник Сообщений: 3488 Награды: 4 Регистрация: 27.07.2009 |
Камрады! Нужна помощь! На С++ нужно написать калькулятор, который считает десятичные числа. Как сделать проверку для окна, чтобы можно было ввести цифры и точку? Есть там параметр у поля Только цифры, но тогда точка не ставится. Помогите плз) Если у элемента есть колбэк на введёный символ (короче функция, которая вызывается каждый раз для каждого символа при его вводе), то можешь просто сравнивать ASCII код символа и разрешать писать лишь только символы цифры\точки. Вообще с визуальной средой С++ я не работал так что это тока предложение. -------------------- Мне просто нравятся синие буквы под сообщением.
|
 
|
|
Текстовая версия | Сейчас: 17.05.2024, 07:36 |