Snake 2D GDI

Тема в разделе "WASM.GRAPHICS", создана пользователем mantissa, 29 июн 2023.

  1. mantissa

    mantissa Active Member

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    100
    Так как никто ничего не выкладывает, то выложу я, написал по приколу Snake2D с помощью GDI, текстуры можно поменять на свои, заменив bmp файлы.
    • grid - текстура земли, задается константой GRID_SIZE
    • seg - сегмент змеи
    • head - головешка змеи
    • apple - еда
    Еда спавнится в случайном месте, изначально змея по середине, отрисовка змеи происходит в DrawSnake, еды в DrawFood, сетки в DrawGrid. CheckCollision проверяет, чтобы змея не столкнулась с границей или собой, AddSegment добавляет сегмент к змее при подборе яблока, DeleteSegment удаляет (при передвижении). Может подскажет кто, как улучшить можно! (Пока сама не ползает, для удобства отладки!:crazy:)
    Управление на стрелки (VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT).
    [​IMG]
    [​IMG]
     

    Вложения:

    • Snake.zip
      Размер файла:
      93,4 КБ
      Просмотров:
      72
    Последнее редактирование: 29 июн 2023
    M0rg0t и Mikl___ нравится это.
  2. MaKsIm

    MaKsIm Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    40
    CreatePatternBrush можно сделать один раз в WMCreate и высвободить соответствующие изображения. Тоже можно сделать и с Pen + SolidBrush для Grid. Но это уже не такие большие объекты как PatternBrush
     
    Mikl___ и mantissa нравится это.
  3. mantissa

    mantissa Active Member

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    100
    Точно! Спасибо за совет
     
  4. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    464
    Игра не динамичная как в оригинале, надо апдейт сделать через таймер. И ещё, я для таких задач win32 использую чтобы работало на старых ПК.
     
    mantissa нравится это.
  5. mantissa

    mantissa Active Member

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    100
    Сделал динамическое передвижение, скорость задается константой GAME_SPEED (чем меньше, тем змея быстрее). Теперь кисти создаются в WMCreate и соответствующие им битмапы сразу удаляются из памяти.
     

    Вложения:

    • Snake.zip
      Размер файла:
      94,3 КБ
      Просмотров:
      74
    Mikl___ нравится это.
  6. Application

    Application Member

    Публикаций:
    1
    Регистрация:
    15 окт 2022
    Сообщения:
    90
    Добрый день, не могли бы вы выложить сборку Masm для x64 если не сложно, заранее спасибо
     
  7. mantissa

    mantissa Active Member

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    100
    Здравствуйте, пользуюсь ml64.exe + link.exe (идут в комплекте с Windows SDK) для компиляции и линковки, инклюды и библиотечные файлы получаю с помощью своего скрипта, который выкладывал в эту тему. Также пользуюсь temphls.inc для "высокоуровневых" конструкций типа invoke, .if, .while (лично пользуюсь только invoke).
     
  8. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.573
    mantissa, спасибо, интересный проект. Напомните, что значат цифры в скобках?
    Код (Text):
    1. DrawFood proc <12, 8> hdc:HDC
    Никогда не использовал в масме такое.

    Надо выкинуть уже все 32 бит, увы, но негрософт больше не поддерживает такие ОС.
     
    mantissa нравится это.
  9. MaKsIm

    MaKsIm Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    40
    Заразил mantissa меня идеей создания змейки и на выходных я взял fasm1 и набросал с нуля змейку. Стандартные include ей не нужно. Все файлы в архиве. Нужен только сам fasm.exe или fasmw.exe Как собирать смотрите в Makefile

    ADD: Пока не сделал rand для выбора случайной позиции. Но это поправимо. Как будет еще свободное время - доделаю.
     

    Вложения:

    • Snake2D.zip
      Размер файла:
      19,3 КБ
      Просмотров:
      65
    mantissa нравится это.
  10. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    464
    M0rg0t, почему win32 надо выкинуть, по мне, если программа не требует мощных ресурсов, то х86-32 всё ещё рулит, и будет рулить. Это же не игровой 3д движок с уровнями на десятки км. Да и х86-32 проще, не важно что регистров маловато, и ещё на х86-64 некоторые инструкции не работают.
     
  11. mantissa

    mantissa Active Member

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    100
    Это макросы из temphls.inc, отсюда
     
  12. KPG

    KPG Member

    Публикаций:
    0
    Регистрация:
    13 янв 2021
    Сообщения:
    120