Так как никто ничего не выкладывает, то выложу я, написал по приколу 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 в эмуляторе
Еще исходники змейки есть в исходниках венды: https://github.com/tongzx/nt5src/tree/master/Source/XPSP1/NT/shell/osshell/ep/snake
Интересно, гляну ща Я так понимаю ее в релизе так и не было? XP застал, когда совсем мелкий был, не шарю! --- Сообщение объединено, 13 окт 2023 --- Посмотрел код, уж очень он старый видимо, C89 стиль + глобальные переменные везде, сами же нарушают свои рекомендации, в WM_PAINT отдельная функция рисует, хотя на MSDN написано, что лучше так не делать)) Двойной буферизации нет ни на уровне WM_PAINT, ни в дополнительных стилях окна. Там makefile есть, попробую собрать попозже --- Сообщение объединено, 13 окт 2023 --- В levels.bmp вот такое содержание видимо там не классическая змейка была а какая-то другая
прикольная игруха получилась, можно с помощью gdi и win api сделать думаю - не оч сложно, хотя бы половину функционала. попробую переписать и всем заинтересованным советую