понедельник, 08 февраля 2016
В общем, короче, замутил я второй проект на С++! Кубик пока не закончен, ну и хуй с ним, логично же, не? Точнее, затык у меня пока возник с Кубиком, там осталось всего ничего - сохранение и Дерево. А второй проект я задумал давно - ещё неделю назад, если не две, и он привлекал своей простотой. Собсно, делать там было особо не хер, потому и решил отвлечься. Проект предназначен для эээ поиска спрайтовой графики в играх для БК.
читать дальше. Многа букаф
Всё проще, чем кажется. Значит, давно-давно, лет 25-30 назад был такой комп БК 0010-01. И у меня тоже он был. На ём были игры ну и проги всякие. Прошло время, людей пробила ностальгия, и они замутили аж несколько эмуляторов этого компа и образы игр залили в Тырнет. Теперь можно запустить под Виндой эмулятор и это буит, как если бы ты играл на том компе, токо тут возможностей даже больше - можно сохраниться в любой момент, запустить быстрее/медленнее. Ну и короче, года три назад я запилил для этого эмулятора редактор Пирамидок (игра там такая была). Грозился переписать и сами Пирамидки под Винду, но сдулся. А мечта осталась. Так вот, чтобы проще изучать код оригинальной игры, нужно знать, где собсно код, а где картинки. А для этого и пригодицца моя новая программа. Всего и делов-то - отобразить на экран содержимое двоичного файла!
И вот, в эту субботу меня прорвало. Сначала я изучал, как отобразить содержимое на битовый массив в памяти, потом создать контекст, совместимый с контекстом экрана, чтоб по-быстрому на экран вывести, чтоб не моргало. Потом, думаю - хер с ним. Чо нам этот массив - по экрану таскать штоле надо? Отобразил один раз и дело с концом. Не хочешь, чтоб моргало - окно по экрану не дёргай и всё пучком буит. Думаю, надо попытаться для начала хоть как-то отобразить, мож ни хрена и не выйдет. И вот, всю суббоу просидел. Замутил хитрую геометрию, там за один цикл вся эта херня подсчитывается и выводится. А там же надо добавлять постоянно новое и новое. И тут я завис, сидел, втыкал, как же оно у меня работает и как добавить, чтобы ничего не сломалось. Зря я так. Уже в метро потом понял, что можно было и попроще написать. Мож в будущем перепишу. Оно ж как - перед тем, как написать элегантно и кратко, нужно написать хоть как-то, и возможно не один раз, а потом ты конечно въедешь в тему и придут всякие идеи по оптимизации.
Ну вот, целый день в субботу потратил, вечером смотрю - хуйня какая-то получилась. Ни хера там не видно этих спрайтовых картинок, а если и видно, то нужно обладать недюжинной фантазией, чтобы это разглядеть в скопище точек или заранее знать, что оно там есть. Расстроился, думаю, бля, такая идея хорошая была, а в итоге говно получилось.
В воскресенье утром иду в расстроенных чувствах. На что задрачивать? В первой проге сложности, вторая говно. Занялся всё-таки второй. Решил уж - доведу хоть до какой=то кондиции, будет более менее законченный проект - там по мелочи надо было доделать. И вот, решил протестировать свою функцию, которая на экране рисовала. А функция-то глючная оказалась! Я её написал вчера и особо не проверял. Кажет и кажет. Так все крутые программисты делают
Ладно бы она ничего не рисовала, я бы конечно это заметил и полез чинить, а так она вроде бы рисовала, но коряво, с искажениями. А я чо, в курсе, как там эти спрайты должны выглядеть? Я их видел в последний раз лет 20 назад. В воскресенье я додумался написать простой тест.
Вот вам абстрактное искусство:
Видите? Битики не все прорисовались. Не видите? Ну, а если я вам скажу, шо это строка из 8 байтов, в каждом из которых пересчитываются целые числа: сверху вниз 0, 1, 2, 3 и так далее до 255. И видно, например, что "5" (6я линия сверху) должна состоять из двух битов, а он там куда-то пропал. То же и "9" и "13". Если проще - то картинку по горизонтали пересекают чёрные полосы. Их быть не должно, линии сверху вниз идут непрерывно; как только они кончаются, левее начинается новая. Стал ковыряться. Разобрался. Вот результат:
Уже лучше, но в нижней половине опять херня какая-то. Она должна быть ещё белее. Ещё поковырялся, ещё ошибку исправил. Вот результат:
А как функцию починил - сразу графика засверкала, всё чётко, красиво, видно и идея сразу заебательской показалась - какой я молодец, что до такого додумался - такую программу написать!
Примеры в студию. Вот символы. Слева выглядят, как будто их пытали. Пустое пространство слева - это должна быть карта пирамид, которая в нём угадывается с трудом. Справа всё чётко и карта отлично прорисована.
______________![](http://static.diary.ru/userdir/1/9/6/0/1960480/83834117.png)
|
![](http://static.diary.ru/userdir/1/9/6/0/1960480/83834115.png)
| Ключ было-стало. Я когда в первый раз увидел (слева), подумал, что он типа на чём-то висит, что ли. А справа уже понятно, что это разные картинки были.
|
![](http://static.diary.ru/userdir/1/9/6/0/1960480/83834116.png)
| А тут мы видим сверху вниз фрагмент кирпичной стены, алмаз, торчащий кинжал, кирка, блеск алмаза вверх, влево, вправо, лестница в одну и в другую сторону (по одной ступеньке), летящий кинжал в разных положениях.
|
А вот сама игра, чтоб было понятно, об чём речь. Там вы можете найти лестницы, кирки, алмазы и прочее "в действии". Белые цифры это не из игры, это я уже сам потом нарисовал.
![](http://static.diary.ru/userdir/1/9/6/0/1960480/75598765.png)
В итоге целый день дрючил вторую прогу, до первой руки не дошли. В субботу, кстати, открытие совершил. Оказывается, если на главную панель в программе добавить кнопку, и сделать у себя обработчик события, кнопка прекрасно работает! До этого я думал, что только с меню так можно, а обработчик стандартной панели где-то запрятан, а кнопки же не принято по одной обрабатывать, принято целой кучей сразу. В общем, сделал, и очень прекрасно всё получилось - с кнопками и обработчиками. Со всем остальным ещё предстоит поработать.
По каждой функции приходится инфу смотреть. Пока лазил по всяким тырнетам, наткнулся на кучу книжек про С++ и их обсуждение.
Вот, к примеру, один перец пишет
www.codenet.ru/progr/cpp/ccpp.phpНе так крут, говорит, этот ваш С++, как его пытаются изобразить. Серьёзные проекты лучше на С писать, потому что там ошибки легко выловить, а в С++ сам компилятор сложный. А чего я тогда тут дрочусь с С++, спрашивается? С другой стороны, у меня и проекты все - мои собственные, а их я могу на чём хошь писать. Почитал значит список книг про С++ и обсуждение. В общем, книжки 2006, 2002 и прочих лет уже устарели, как щитают тырнет-комментаторы, и надо учить новое. А новое это С++11 и С++14. Видимо С++11 уже тоже устарел, поэтому надо 14й, а скоро выйдет 17й. Это ж получается, надо не работать, а токо сидеть, про С++ читать - изучать новые компиляторы. А жить когда? Ну и собсно, когда писать под эти компиляторы, если всё время надо новые изучать?
Ну пару книжечек я раздобыл, почитаю всё ж - вдруг чо полезное попадётся?
@темы:
программирование
Ну ты мог бы заметить шо это - подготовка начиналась задолго до... а в этот раз никакой подготовки не было. Да и разочаровался я чо-то в этом мероприятии. Сил тратицца много, бабла тоже, а в итоге пшик. Ну, то есть фоточки и видео остаются, ну и всё, собсно.
В этот раз всё скромнее буит. Дома жахнем по стопке, да и всё. Хотел в ресторане отпраздновать, неск человек собрать, но у меня особо ни сил, ни желания, да и кого приглашать толком не знаю, со стороны остальных тоже горячего желания нет - если уж на клубную тусовку народ собирался с трудом, то каким-то рестораном никого не удивишь особо. Мож ещё и соберу конечно, посмотрим.
В общем, желаю тебе подарков сегодня и побольше, побольше. Надеюсь, ты себе всё-таки сделал подарок, если это была не шутка.
Пусть все складывается удачно и в жизни будет много интересного!
Нюмочка, Спасиба!
Ядрёны_пасатижи Во, спасибо! Жаль, не могу тебя пригласить побухать, но не уверен, что буду устраивать. А так - мож пересечёмся в Финляндии или в Питере или даже в Мааскве