10:05 

Программа Кубика Рубика

Ну, в общем, в эти выходные я по утрам посидел нескоко часов и продвинул свой мегапроект.
Теперь кубик можно крутить и сбрасывать в начальное состояние.
Можно делать его трёхцветным.
Пока нельзя самому устанавливать нужное состояние (окрашивать грани в выбранный цвет) и нельзя сохранить/загрузить результаты работы. Это мы скоро сделаем.
И конечно дерево решений - оно пока ещё даже не в проекте.

Были забавные затыки. Есть над чем поржать. Как вы знаете, в С и С++ индексы массива начинаются с 0. Поэтому, к примеру 12 элементов имеют номера от 0 до 11. Понадобился мне двумерный массив 12х2. Ну я и объявил его. Потом смотрю: что за говно? Пишу в этот массив в [0][1] или [1][0] - прога пишет одновременно в [0][1] и [1][0]. Ну и так далее - пишешь в какой-то один элемент, прога инициализирует два. Думал-думал, типы данных менял - ни хрена. Неужто ошибка обработки многомерных массивов. Я что-то об этом слышал для MS VC++. В тырнете ничего об этом нет. Потом дошло - объявил массив как [12][1] - то есть, он, по сути, одномерный получился.

Решил добавить пункты меню. Добавил, а они не работают - нету их в карте сообщений. Что за говно? Причём, помню, что делал такое. Излазил свой предыдущий проект - пирамидки. Вроде всё пучком. Дело оказалось в том, что если пункты меню добавляешь после Help, то в свойствах пункта нужное поле заблокировано, а если добавляешь в подменю Help (ну там после Help>About...) или ещё в какое подменю, а потом перетаскиваешь на уровень выше, то всё пучком, нужное поле открыто, вбиваешь туда ID и связываешь с обработчиком.

И постоянно такая херня, на неё основное время и уходит. Оно, если каждый день этим занимаешься, то, конечно, всё помнишь, а если от случая к случаю, то пока всё вспомнишь, кучу времени можно просрать. Нашёл вот себе пару ссылочек, почитаю мож на досуге.
rsdn.ru/article/mfc/maze.xml
www.firststeps.ru/mfc/steps/r.php?23
www.sources.ru/msdn/howto/q108587.shtml

Вот ещё чо забыл сказать. Использую библиотеку MFC. Почему именно её? Ну хрен знает, начинал с неё, а щас хочется ж быстрее писать, а не переучиваться на всякие библиотеки. В ней до хера классов, про которые я не знаю - знаю токо те, что в упоминались в книжках и в примерах в тырнете. Мало того, в тех двух-трёх классах, что я использую, знаю далеко не все функции, поэтому часто приходится изобретать велосипед с квадратными колёсами. Ну вот, к примеру, есть объект CPoint. Надо к нему чо-то прибавить или скопировать его куда - я так и писал: CPoint1.x=CPoint.x+x1;CPoint1.y=CPoint.y+y1. И с CRect похожие косяки. Постараюсь исправить теперь, гыгыгы.
И код выглядит громоздким. Но он хотя бы работает! По крайней мере я щас задумался о том, что многого не знаю и пишу не так, как следует писать под MFC. А раньше писал такую же хрень и щитал себя гением, мол, я научился! ;) Но всё-таки некоторые идиомы и прочие штуки я теперь уже пишу гораздо увереннее, чем поначалу. Практика лучший учитель. Ладно, потихоньку, глядишь, чо-то и усвоим.

Сам код кубика мне не особо нравится - какая-то помойка внутри получилась. Но, как ни странно, всё работает, ничего не падает и снаружи выглядит заебись. А как оно там внутри, никого не ебёт. Я ваще вынашивал мысль заняцца фрилансом - проги писать на заказ. Ща чо-то посидел, репу почесал - нее, за тыщу рублей я не готов так ебацца. Не зря программистам хорошо платят.

@темы: программирование

URL
   

Днивник Тёмнава Эльфа 80лвл

главная