Так как никто ничего не выкладывает, то выложу я, написал по приколу Snake2D с помощью GDI, текстуры можно поменять на свои, заменив bmp файлы. grid - текстура земли, задается константой GRID_SIZE seg - сегмент змеи head - головешка змеи apple - еда Еда спавнится в случайном месте, изначально змея по середине, отрисовка змеи происходит в DrawSnake, еды в DrawFood, сетки в DrawGrid. CheckCollision проверяет, чтобы змея не столкнулась с границей или собой, AddSegment добавляет сегмент к змее при подборе яблока, DeleteSegment удаляет (при передвижении). Может подскажет кто, как улучшить можно! (Пока сама не ползает, для удобства отладки!) Управление на стрелки (VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT).
CreatePatternBrush можно сделать один раз в WMCreate и высвободить соответствующие изображения. Тоже можно сделать и с Pen + SolidBrush для Grid. Но это уже не такие большие объекты как PatternBrush
Игра не динамичная как в оригинале, надо апдейт сделать через таймер. И ещё, я для таких задач win32 использую чтобы работало на старых ПК.
Сделал динамическое передвижение, скорость задается константой GAME_SPEED (чем меньше, тем змея быстрее). Теперь кисти создаются в WMCreate и соответствующие им битмапы сразу удаляются из памяти.
Здравствуйте, пользуюсь ml64.exe + link.exe (идут в комплекте с Windows SDK) для компиляции и линковки, инклюды и библиотечные файлы получаю с помощью своего скрипта, который выкладывал в эту тему. Также пользуюсь temphls.inc для "высокоуровневых" конструкций типа invoke, .if, .while (лично пользуюсь только invoke).
mantissa, спасибо, интересный проект. Напомните, что значат цифры в скобках? Код (Text): DrawFood proc <12, 8> hdc:HDC Никогда не использовал в масме такое. Надо выкинуть уже все 32 бит, увы, но негрософт больше не поддерживает такие ОС.
Заразил mantissa меня идеей создания змейки и на выходных я взял fasm1 и набросал с нуля змейку. Стандартные include ей не нужно. Все файлы в архиве. Нужен только сам fasm.exe или fasmw.exe Как собирать смотрите в Makefile ADD: Пока не сделал rand для выбора случайной позиции. Но это поправимо. Как будет еще свободное время - доделаю.
M0rg0t, почему win32 надо выкинуть, по мне, если программа не требует мощных ресурсов, то х86-32 всё ещё рулит, и будет рулить. Это же не игровой 3д движок с уровнями на десятки км. Да и х86-32 проще, не важно что регистров маловато, и ещё на х86-64 некоторые инструкции не работают.
Змейка есть и на дискетке KolibriOS в исходниках на Fasm P.S. Поиграть в неё в браузере можно при запуске KolibriOS в эмуляторе