Pull to refresh
0
0
Send message

Microsoft XNA: Арканоид шаг за шагом

Reading time9 min
Views28K
Несколько дней назад, бороздя просторы великого и могучего Интернета, наткнулся на Microsoft XNA Studio. Не то чтобы услышал об этом фреймворке в первый раз, но все предыдущие разы как-то проходил мимо, времени разбираться не было совершенно.
В этот раз что-то меня дернуло покопаться поглубже. Справедливо рассудив что для знакомства с библиотекой лучшего метода чем реализовать что нибудь на нем нет, а также имея в распоряжении свободный вечер, решил написать что нибудь простенькое, например любимый мною с детства Arkanoid (Brick Out), не корысти ради, а ознакомления для.

Это моя первая статья на хабре, убедительно прошу ногами не пинать

Смысл данной статьи показать как легко можно начать создавать свои игры при помощи XNA и, собственно, дать стимул для дальнейшего изучения этой платформы. Посему, на полноценную игру не претендует, графика — никакая, как и художник из меня. Да и физика могла бы быть пореалистичнее, но это уже выходит за рамки данной статьи, уверен что интересующиеся разработкой игр найдут немало достойных (и не очень) материалов в сети.

Исходники можно скачать тут


read more
Total votes 112: ↑91 and ↓21+70
Comments53

Как распознать кракозябры?

Reading time1 min
Views429K
В комментариях к предыдущему посту про иероглифы сказали, что хорошо бы иметь такую же блок-схему для кракозябр.

Итак, вуаля!


За источник информации была взята статья из вики. В блок-схеме «UTF-16 → CP 866» означает, что исходная кодировка была «UTF-16», а распозналась она как «CP 866».

Как всегда — кликабельно. Исходник в .docx: здесь.
Total votes 429: ↑418 and ↓11+407
Comments64

Как определить язык по виду иероглифов/закорючек?

Reading time1 min
Views192K
Вот, задался таким вопросом… С помощью гугл транслейта и такой-то матери, родилась такая блок-схемка:



картинка кликабельна

Кому нужен сорец (в .docx): тут
Total votes 341: ↑329 and ↓12+317
Comments185

Работа с изометрическими матрицами. Часть 1

Reading time4 min
Views21K
Изометрия — вещь, стара как компьютерные игры.
Сейчас пришло время, когда интернет и игры стали совмещаться в браузере (flash не в счет).
Примеров браузерных игр много, большая часть из них казуалки, но для гиков более интересны жанры action, RTS и RPG, а для разработчиков — их реализация.



Для жанра RTS, RPG и пошаговых стратегий матрица является основным механизмом для движения юнитов, рисования текстур и многое другое. Но когда Вы попробуете объединить матрицу и изометрические текстуры, Вы попадете в ад, с которого вы не вылезете, пока не напишете прослойку для управления и воздействия на эту матрицу.

Под катом я расскажу:
  1. Как рисовать изометрическую матрицу
  2. Как нарисовать fullscreen изометрическую матрицу

Читать дальше →
Total votes 34: ↑31 and ↓3+28
Comments32

О прямоугольных координатах и гексагональных сетках

Reading time4 min
Views28K
Думаю, никому не нужно объяснять, насколько широко в играх (и не только) используются гексагональные сетки. Как для заданной шестиугольной ячейки найти координаты ее центра и вершин — достаточно очевидно. Обратное же преобразование (т.е. поиск ячейки, в которую попала данная точка с координатами x и y) уже не столь тривиально. О нём и пойдет речь в данном топике.
Читать дальше →
Total votes 72: ↑67 and ↓5+62
Comments51

Эффектная анимация разрушения (Pixel Dust) на JavaScript

Reading time5 min
Views43K
В процессе развития нашей игры на HTML5, мы столкнулись с дилеммой: рисовать для каждого элемента эффект разрушения или попробовать сделать это программно на JavaScript (canvas). Если с первым способом всё понятно (проверенно работает, но много работы художнику), то со вторым у нас были сомнения относительно скорости рендера, ведь это 60FPS x 64 x 4 байта ~ 1 МБ/сек. на один элемент, а если их 40 на одном экране?

Как оказалось, наши сомнения были напрасны...
Total votes 105: ↑104 and ↓1+103
Comments55

Шпаргалка по MV-паттернам для проектирования веб-приложений

Reading time7 min
Views69K
mv-patterns
В Интернет можно найти множество различающихся реализаций и схем, уже набившего оскомину, паттерна MVC. В разных книгах я также встречал разные схемы. Это порождает некоторую путаницу и комментарии к моей предыдущей статье: "Реализация MVC паттерна на примере создания сайта-визитки на PHP" тому подтверждение. В поисках истины, я попытался расставить все по местам… перечитал некоторую литературу и статьи по паттернам проектирования и написал дополнение к упомянутой статье. Но решил запостить это дополнение, как отдельный топик в надежде на фидбэк. Под катом вы найдете несколько часто встречающихся схем MVC и MVP с описанием жизненного цикла приложения, а также описание менее популярных паттернов HMVC и MVVM. Разумеется, некоторые из перечисленных паттернов применимы не только к веб-приложениям, но в статье они рассматриваются именно в этом контексте.
Читать дальше →
Total votes 69: ↑66 and ↓3+63
Comments22

Кнопка Судного Дня или аппаратная горячая клавиша

Reading time5 min
Views73K

Наверное, каждый из читателей сталкивался с тем, что ему не хватает горячих клавиш. Наиболее ходовые и простые комбинации оказываются занятыми, а оставшиеся требуют ловкости рук баяниста. Особенно это актуально для ноутбуков, где клавиш уменьшенное количество. В частности, для макбука, где ряд мультимедийных клавиш совмещен с функциональными.
Таким образом, для действия “Make Project”, мне захотелось иметь отдельную кнопку. Эта идея жила где-то в подсознании довольно долгое время, пока однажды мне на глаза не попалась пусковая кнопка станка на 660В 10А. Подробности, как удалось ее подключить к ноутбуку через блюутуз, читайте под катом.
Читать дальше →
Total votes 90: ↑88 and ↓2+86
Comments46

Я не знаю ООП

Reading time12 min
Views550K
Я не умею программировать на объектно-ориентированных языках. Не научился. После 5 лет промышленного программирования на Java я всё ещё не знаю, как создать хорошую систему в объектно-ориентированном стиле. Просто не понимаю.

Я пытался научиться, честно. Я изучал паттерны, читал код open source проектов, пытался строить в голове стройные концепции, но так и не понял принципы создания качественных объектно-ориентированных программ. Возможно кто-то другой их понял, но не я.

И вот несколько вещей, которые вызывают у меня непонимание.
Читать дальше →
Total votes 412: ↑309 and ↓103+206
Comments870

Многопоточный сервер на C# за 15 минут

Reading time11 min
Views333K
C# довольно простой и гибкий язык. Вместе с .NET поставляется довольно много уже готовых классов, что делает его еще проще. Настолько, что вполне можно написать простой многопоточный HTTP-сервер для отдачи статического содержимого всего за 15 минут. Можно было бы использовать уже готовый класс HttpListener и управиться еще быстрее, но цель этой статьи — показать, как вообще можно сделать нечто подобное в C#.
Читать дальше →
Total votes 94: ↑77 and ↓17+60
Comments72

Прагматичный подход к производительности

Reading time7 min
Views2.3K
Является преждевременная оптимизация дорогой в ад? Или подход «потом исправим» превращает программистов из «специалистов» в презираемую всеми «школоту»?

Эти вопросы не имеют четких ответов, тем не менее, в этой статье я постараюсь описать мой собственный подход к производительности. Что я делаю для того, чтобы мои системы работали с приличной скоростью, но не нарушали прочих требований, таких как модульность, сопровождаемость и гибкость.
Читать дальше →
Total votes 81: ↑70 and ↓11+59
Comments26

Верни мои деньги, банкомат

Reading time13 min
Views72K
Бывает такое, что привычная, казалось бы, вещь, встречается с такой изюминкой, после которой начинаешь смотреть на эту вещь совершенно иначе. Так случилось и у меня… пару лет снимал деньги с карточки в сотне мест и бед не знал… а тут приехал в один городок и в первом же банкомате мне повстречалась эта самая изюминка. Причем место и обстоятельство были такими, что за пару мгновений пищи для размышления и впечатлений накопилось недели на две вперед.


Читать дальше →
Total votes 459: ↑435 and ↓24+411
Comments250

Восстановление расфокусированных и смазанных изображений. Практика

Reading time10 min
Views353K
Не так давно я опубликовал на хабре первую часть статьи по восстановлению расфокусированных и смазанных изображений, где описывалась теоретическая часть. Эта тема, судя по комментариям, вызвала немало интереса и я решил продолжить это направление и показать вам какие же проблемы появляются при практической реализации казалось бы простых формул.

В дополнение к этому я написал демонстрационную программу, в которой реализованы основные алгоритмы по устранению расфокусировки и смаза. Программа выложена на GitHub вместе с исходниками и дистрибутивами.

Ниже показан результат обработки реального размытого изображения (не с синтетическим размытием). Исходное изображение было получено камерой Canon 500D с объективом EF 85mm/1.8. Фокусировка была выставлена вручную, чтобы получить размытие. Как видно, текст совершенно не читается, лишь угадывается диалоговое окно Windows 7.



И вот результат обработки:



Практически весь текст читается достаточно хорошо, хотя и появились некоторые характерные искажения.

Под катом подробное описание проблем деконволюции, способов их решения, а также множество примеров и сравнений. Осторожно, много картинок!
Читать дальше →
Total votes 459: ↑456 and ↓3+453
Comments141

Велосипеды на Javascript и jQuery

Reading time4 min
Views76K
В очередной раз открыв код коллег и ужаснувшись, я решил написать эту статью. Надеюсь для кого-нибудь это будет полезным, заодно и мне будет проще новичкам объяснять что у них в коде не так, просто кинув ссылку на эту статью.
Безусловно количество таких вещей очень и очень велико, поэтому в статье ограничусь лишь некоторыми.
Читать дальше →
Total votes 258: ↑246 and ↓12+234
Comments189

Может ли ваш язык программирования делать такое?

Reading time6 min
Views6.5K
Недавно я прочитал статью Джоэла Спольски “Can your programming language do this?”и она настолько сильно пришлась мне по душе, что я решил перевести ее. Но не просто так, а добавить немного от себя. А именно, вместо примеров на JavaScript (использованных Джоэлем в оригинале), я решил написать примеры на С#, который мне на сегодняшний день ближе. Собственно результат и представляю на суд сообществу под катом.

Читать дальше →
Total votes 116: ↑74 and ↓42+32
Comments244

«Живые графы» — выращивание графов на клеточных автоматах с примерами на Silverlight

Reading time15 min
Views15K
Введение


Пожалуй, ничто так долго, на протяжении многих веков, не интересовало учёных, как вопросы о происхождении жизни и разума. Как природа догадалась сотворить человеческий мозг? Чем определяется структура нейронной сети в нашей голове и как работает автосборка многоклеточного организма из единственной клетки? Почему при развитии зародыша человека на определённой стадии можно наблюдать нечто похожее на рыбьи жабры?

Да и простого любопытствующего обывателя, не отягощённого подробностями органической химии, подобные вопросы не обходят стороной.

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

живой граф

Такой предельно упрощённой и наглядной моделью могут оказаться «Живые графы» — конечные автоматы на графе, каждый узел которого содержит некое исполняющее устройство (автомат) с конечным числом состояний и с набором примитивных правил, управляющих созданием или изменением новых связей между узлами.

Читать дальше →
Total votes 96: ↑86 and ↓10+76
Comments49

Сохраняем видео из Flash Player 10.2 или unlink нам не помеха

Reading time5 min
Views39K
Я, как, вероятно, и многие другие пользователи Linux, привык сохранять видео с сайтов вроде YouTube, копируя временные файлы, создаваемые Adobe Flash. Примерно так:
$ cp /tmp/FlashIBmQCU video.flv

Поставив свежий пре-релиз флэш-плеера, который на днях обсуждали на хабре (у меня 64-битная система), я с удивлением обнаружил, что этот способ больше не работает, так как никакие файлы во временном каталоге не создаются. Рассудив, однако, что едва ли плеер хранит видео целиком в памяти, и куда-то он его всё-таки должен писать, я приступил к расследованию.
Читать дальше →
Total votes 135: ↑130 and ↓5+125
Comments53

Полнофункциональный RDP клиент — FreeRDP

Reading time3 min
Views423K
Не секрет, что в современном мире без продуктов Microsoft практически не обойтись. Однако во многих случаях получается так, что гораздо эффективней использовать на рабочих компьютерах системы на базе GNU/Linux, а не Windows. Это значительно упрощает администрирование и сокращает расходы, предоставляя при этом пользователям гораздо больше легкодоступного функционала. Но что делать с теми приложениями, которые работают только под Windows и которым нет подходящего аналога в мире Linux? Поскольку обычно таких приложений единицы (иначе просто нету смысла ставить Linux на рабочий компьютер), то разумным выбором может стать использование терминальных серверов, работающих под серверными ОС от Microsoft. Кроме того, Linux лучше всего подходит для любых тонких клиентов, поскольку адекватных версий Windows для них просто не существует.

В любом случае необходимо уметь подключаться к терминальным серверам Windows. Для этого в MS был разработан свой протокол удалённого рабочего стола — RDP. Однако до недавнего времени для Linux существовал единственный открытый клиент для работы с этим протоколом — rdesktop. К сожалению, его развитие давно остановилось, и он испытывает огромные трудности при взаимодействии с современными версиями Windows.

Но недавно тихо и незаметно проект rdesktop был форкнут, в результате чего на свет появился новый открытый RDP клиент — FreeRDP. Первый же релиз этой программы разом исправил большинство известных проблем rdesktop, и проект продолжает активно развиваться. Почему-то появление столь полезного приложение обошли вниманием, поэтому я и решил опубликовать этот пост, чтобы хоть как-то исправить эту ситуацию и рассказать всем о существовании нормального RDP клиента для Linux. Под катом — описание возможностей FreeRDP и немного про отличную графическую оболочку Remmina для него.

Читать дальше →
Total votes 93: ↑87 and ↓6+81
Comments75

В помощь любителям fullscreen

Reading time1 min
Views11K
fullScreener
Всем хороши нетбуки, но вот разрешение экрана не позволяет в полной мере насладится серфингом. Конечно с появлением хрома стало проще, но всегда хочется большего. Но по умолчанию хром совершенно не приспособлен для работы в fullscreen, переключение по табам ctrl+tab|ctrl+shift+tab радости не доставляет если табов больше 5 и нет строки ввода адреса.
Именно поэтому я и решил наконец взять и написать этот плагин.
Что же он умеет?
Total votes 60: ↑58 and ↓2+56
Comments58

Дрессируем box-shadow

Reading time6 min
Views98K
Простой пример box-shadow Разработчики W3C сделали box-shadow очень гибким свойством. Благодаря этому можно получать весьма интересные результаты, если использовать это свойство нетривиальным образом. В этой статье я напишу о некоторых эффектах, которые мне удалось получить при помощи «теневых технологий».

Пока я составлял примеры, я неожиданно обнаружил, что браузеры отображают их совсем неодинаково. В итоге, помимо простой демонстрации возможностей box-shadow, получился еще и маленький браузерный тест на поддержку CSS 3. Все примеры снабжены CSS-кодом и картинкой (общий объем всех PNG: 161 КБ). В статье я не стал прописывать свойства с вендорными префиксами -moz- и -webkit-, чтобы не ухудшать читабельность. В суммарной странице со всеми примерами эти префиксы есть (предупреждаю, что у Оперы есть баг с прорисовкой внешних box-shadow при прокрутке).
Читать дальше →
Total votes 132: ↑128 and ↓4+124
Comments56

Information

Rating
Does not participate
Registered
Activity