01:53 

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

ТёмныйЭльфНавостриэль2010
Здравствуйте дорогие товарищи!
Поделюсь с вами, пмаешь, очередными успехами на ниве программирования. Если это можно назвать успехами.

Когда я начал писать, то знал, что некоторые функции требуют инфу в классах CRect и CPoint. И создал соотвецтвующие массивы. Но на этом - всё. Инициализировал я их поэлементно, в результате чего получилось дофига строк когда и прога стала выглядеть угрожающе. Примерно так:
m_ScrCoord[0][0].x=INITX;
m_ScrCoord[0][0].y=INITY;
m_ScrCoord[0][1].x=(long)(INITX+CELLSIZE*k);
m_ScrCoord[0][1].y=INITY+CELLSIZE;

m_FlatCoord[12][0].top=INITY2;
m_FlatCoord[12][0].left=INITX2;
m_FlatCoord[12][0].bottom=INITY2+FLATSIZE*2;
m_FlatCoord[12][0].right=INITX2+FLATSIZE*12;

m_FlatCoord[i][0].top-=FLATSIZE*2;
m_FlatCoord[i][0].left-=FLATSIZE*6;
m_FlatCoord[i][0].bottom-=FLATSIZE*2;
m_FlatCoord[i][0].right-=FLATSIZE*6;

И так много раз. При этом я плевался, матерился и думал, что же это за ООП такое, что писать так неудобно. Потом почитал специальную литературку. Оказывается, в этих классах есть специальные функции, которые, скажем так, сильно упрощают чтение кода. Насчёт ускоряют не знаю, но как бы там ни было, они всё равно есть - прикомпилируются к коду. Поэтому стоит их использовать. После оптимизации тот же кусок кода выглядит так:
m_ScrCoord[0][0]=CPoint( INITX, INITY);
m_ScrCoord[0][1]=CPoint( (long)(INITX+CELLSIZE*k), INITY+CELLSIZE );

m_FlatCoord[12][0]=CRect( INITX2, INITY2, INITX2+FLATSIZE*12, INITY2+FLATSIZE*2 );

m_FlatCoord[ i ][0].OffsetRect( -FLATSIZE*6, -FLATSIZE*2 );

Щитаю, эта прарыф!

Ещё при отладке там надо нажимать клавишу F11. Сначала она у меня работала, потом хуяк, чо-то случилось - перестала. Пришлось использовать экранные кнопки (с панели инструментов). А это офигенно неудобно - пока мышью прицелишься, пока нажмёшь. Ещё перестали работать F9, F10. Я поискал в тырнете - нет ничо похожего. Ну, думаю - клавиатура накрывается. Сегодня даже нашёл в сети тест клавиатуры. Запустил - ни одна F не работает. Оказалось, у меня в конце F-ряда есть клавиша F-lock. Видимо, я её по ошибке нажал и всё вырубилось. Вот же ж нахуевертили хз чего, нормальному человеку не разобраться. Нажал, теперь опять работает, ура товарищи! Слава мне! :cool:

Ещё сегодня впервые в жизни перегрузил оператор присваивания! Звучит круто, но на самом деле херня, конечно. Вот есть у вас структура данных некоего класса: два числа и строка. Надо вам её скопировать в такую же.
Традиционный способ:
структ1.число1=структ2.число1; структ1.число2=структ2.число2; структ1.строка=структ2.строка;

Но эт всё долго и теряется весь смысл упаковки в структуры. В С++ можно такую херню делать - переопределяешь оператор присваивания для класса. В нём пишешь, чего присваивать - то есть: структ1.число1=структ2.число1; структ1.число2=структ2.число2; структ1.строка=структ2.строка;
А в тексте программы пишешь просто структ1=структ2; Компилятор когда это встречает, делает то, что было описано выше, но тебе об этом теперь знать необязательно.

Ещё проблема обнаружилась - клинит её, падлу, периодически. Бывает, нажимаешь "build", он пишет "Linking..." и тишина, на Ctrl+C не реагирует, приходится снимать задачу и среду перезапускать. Иногда на компиляции тоже клинит. Нечасто, один раз из десяти, но потихоньку заёбывает.

А что же программа? - спросит догадливый четатель. Добавился ли к ней какой-то функционал за это время?
Увы, вынужден разочаровать. Ничего не добавилось. С другой стороны, ничего и не убавилось :D Кубик можно крутить и сбрасывать в начальное состояние. Но в самом ближайшем будущем мы чо-нибудь к нему прикрутим.

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

URL
Комментарии
2016-01-28 в 07:20 

В программе нужно сделать возможность сохранять расклад на любом этапе и возвращаться к сохранённому и назад-вперёд пошагово, как в Exсel. В общем, я вчера подумал, короче, я согласен на 50% от прибыли будущей программы.

2016-01-28 в 11:11 

ТёмныйЭльфНавостриэль2010
назад-вперёд пошагово, как в Excel это ваще мысль интересная. Надо подумать. Интересно токо на скоко ходов максимум надо сохранять. В Excel поди тоже предел есть.

Нащот прибыли дело такое. Программу планируется распространять среди четателей diary.ru по платной подписке. Так что можешь перечислить мне за программу некую сумму и взять с неё 50% :D.

URL
2016-01-28 в 11:22 

Если ограничений нет, то хоть на сколько, а если есть, то 10-20 достаточно. Ну и чтобы к ранее сохранённому вернуться можно было.

     

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

главная