Игра «Поросенок Петр» на Delphi 7 без VCL

Тема в разделе "WASM.WIN32", создана пользователем Tech, 10 июн 2026.

  1. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.411
    Код (Text):
    1.  
    2. > strings ./mc | grep CFLAGS
    3. ... CFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security' 'LDFLAGS=-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed ...
    4.  
    Я не гарантирую, что это именно его CFLAGS, а не какой-то статически слинкованной с ним чуши, но всё же.

    Я тебе уже ни раз говорил, что не надо поддаваться предвзятости подтверждения. Ну и не надо пытаться многозначительно обобщать с одного примера.
     
  2. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    2.223
    Сколько примеров тебе надо?
     
  3. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.411
    Допустим существует всего X программ, сколько примеров "-О0" нужно, чтобы уверенно говорить, что большинство использует "-О0"? Для "доказательного обгуанивания" достаточно собрать выборку из парочки якобы подтверждающих утверждение примеров и игнорировать X-2 остальных.
     
  4. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    498
    Вовремя я успел скачать 2000 строк кода. Спасибо! :)
    Можно попробовать в x64-битном формате скомпилировать и ASM-code сгенерировать.

    P.S. Проверил EXE-файл, который прилагался к коду - он x64-битный.
     
    Последнее редактирование: 22 июн 2026 в 10:38
    Application нравится это.
  5. Application

    Application Active Member

    Публикаций:
    1
    Регистрация:
    15 окт 2022
    Сообщения:
    183
    GRAFik, вчера мысль возникла - сделать отдельный редактор уровней для игры как игру minecraft.

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

    unreal engine на минималках )
     
    Последнее редактирование: 22 июн 2026 в 10:47
  6. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    498
    Ну хорошая идея. А я ещё на Питоновском варианте обратил внимание, что будет много уровней (семь вроде). Блин, с кем поведешься... С вами точно геймером-программистом станешь. Мне уже понравилось... :)
     
  7. Application

    Application Active Member

    Публикаций:
    1
    Регистрация:
    15 окт 2022
    Сообщения:
    183
    Оказывается из кс 1.6 можно декомпилировать модели и потом загружать их с помощью python в 3d.
    Не нужно ничего рисовать. Модели это имхо самая сложная часть игры.
     
    Последнее редактирование: 22 июн 2026 в 12:03
  8. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    2.223
    Таким образом сколько бы примеров я ни привел, ты просто подставишь в формулу X-N их количество и заявишь, что X это большущий гориллиард, а N многократно меньше и ничего не доказывает. На -o0 я не настаиваю, вообще с легкостью готов признать, что в ряде случаев это -o2, просто хреновое -o2.
     
  9. Application

    Application Active Member

    Публикаций:
    1
    Регистрация:
    15 окт 2022
    Сообщения:
    183
    Загружаем модель из cs 1.6. Не думал что получится...
     

    Вложения:

    • load_model.rar
      Размер файла:
      325,2 КБ
      Просмотров:
      8
  10. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    498
    Не знаю у кого как, но у меня на Питоне, вроде, всё работает правильно.

    Когда ждать полную версию ? :)
     
  11. Application

    Application Active Member

    Публикаций:
    1
    Регистрация:
    15 окт 2022
    Сообщения:
    183
    Спасибо за тест. С этими моделями довольно сложная история.
    У них там вводится понятие скелета(кости) и все текстуры двигаются за костями.

    Даже у автоматов есть кости )



    Нужно собирать отдельный проект в нем тестировать бег, стрельбу и т.д.
    Вводить дополнительную структуру для бота и менять в ней состояние полей.

    Всему свое время. Скоро добавлю звуки в игру (самое легкое для добавления).
     
    Последнее редактирование: 23 июн 2026 в 02:02
  12. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    498
    Немного побаловался, поэксперементировал. :)
     

    Вложения:

    • Proba_1.zip
      Размер файла:
      47,3 КБ
      Просмотров:
      2
    Application нравится это.
  13. Application

    Application Active Member

    Публикаций:
    1
    Регистрация:
    15 окт 2022
    Сообщения:
    183
    # Углы вращения модели и дистанция камеры
    angle_y = 0.0
    angle_x = 0.0
    distance = 30.0 <--- збс

    А я чото такими вещами упоролся, можно в начале сделать бегающих по карте скелетов:
    Код (Python):
    1. import pygame, math, sys
    2.  
    3. # ---------- КЛАСС КОСТИ ----------
    4. class Bone:
    5.     def __init__(self, length, angle=0, parent=None):
    6.         self.length = length    # длина кости (в пикселях)
    7.         self.angle = angle      # угол относительно родителя (в радианах)
    8.         self.parent = parent    # ссылка на родительскую кость
    9.         self.x = self.y = 0     # позиция (будет вычислена)
    10.  
    11.     def get_endpoint(self):
    12.         """Возвращает (x, y) конечной точки кости"""
    13.         rad = self.get_global_angle()
    14.         return (self.x + self.length * math.cos(rad),
    15.                 self.y + self.length * math.sin(rad))
    16.  
    17.     def get_global_angle(self):
    18.         """Суммирует углы всех родителей (абсолютный угол)"""
    19.         if self.parent:
    20.             return self.parent.get_global_angle() + self.angle
    21.         return self.angle
    22.  
    23.     def update_position(self, start_x, start_y):
    24.         """Рекурсивно обновляет позиции всех дочерних костей"""
    25.         self.x, self.y = start_x, start_y
    26.         end_x, end_y = self.get_endpoint()
    27.         for child in children:  # упрощённо: ищем детей
    28.             if child.parent is self:
    29.                 child.update_position(end_x, end_y)
    30.  
    31. # ---------- СОЗДАЁМ СКЕЛЕТ ----------
    32. shoulder = Bone(100, 0)          # плечо (угол 0°)
    33. elbow = Bone(80, math.radians(45), shoulder)  # локоть (согнут на 45°)
    34. children = [shoulder, elbow]     # список всех костей
    35.  
    36. # ---------- ИНИЦИАЛИЗАЦИЯ PYGAME ----------
    37. pygame.init()
    38. screen = pygame.display.set_mode((600, 400))
    39. clock = pygame.time.Clock()
    40.  
    41. # ---------- ГЛАВНЫЙ ЦИКЛ ----------
    42. while True:
    43.     for event in pygame.event.get():
    44.         if event.type == pygame.QUIT: sys.exit()
    45.  
    46.     # Управление: вращаем плечо мышкой
    47.     mouse_x, mouse_y = pygame.mouse.get_pos()
    48.     shoulder.angle = math.atan2(mouse_y - 200, mouse_x - 100)  # отсчёт от базы
    49.  
    50.     # Обновляем позиции (база в точке (100, 200))
    51.     shoulder.update_position(100, 200)
    52.  
    53.     # Рисуем
    54.     screen.fill((30, 30, 30))
    55.  
    56.     # Рисуем все кости
    57.     for bone in children:
    58.         end = bone.get_endpoint()
    59.         pygame.draw.line(screen, (0, 255, 200), (bone.x, bone.y), end, 5)
    60.         pygame.draw.circle(screen, (255, 100, 100), (int(bone.x), int(bone.y)), 6)
    61.  
    62.     pygame.display.flip()
    63.     clock.tick(60)

    Мне иногда кажется все эти координаты точек можно из python конвертировать
    при помощи llm в какой-то свой более легкий и понятный формат =)

    2026-06-23_04-29-16.png
    --- Сообщение объединено, 23 июн 2026 в 05:36 ---
    *при помощи подсказок llm
     
    Последнее редактирование: 23 июн 2026 в 04:47
  14. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    498
    Продолжаем баловаться... :)

    Код (Python):
    1.  
    2. #  PYTHON 3.11  
    3. #  Skeletal Walking Leg Demo
    4.  
    5. import pygame
    6. import math
    7. import sys
    8.  
    9. # ---------- КЛАСС КОСТИ (Усовершенствованный) ----------
    10. class Bone:
    11.     def __init__(self, length, angle=0, parent=None):
    12.         self.length = length    # длина кости (в пикселях)
    13.         self.angle = angle      # угол относительно родителя (в радианах)
    14.         self.parent = parent    # ссылка на родительскую кость
    15.         self.x = self.y = 0     # позиция старта кости (вычисляется)
    16.     def get_endpoint(self):
    17.         """Возвращает (x, y) конечной точки кости"""
    18.         rad = self.get_global_angle()
    19.         return (self.x + self.length * math.cos(rad),
    20.                 self.y + self.length * math.sin(rad))
    21.     def get_global_angle(self):
    22.         """Суммирует углы всех родителей (абсолютный угол в пространстве)"""
    23.         if self.parent:
    24.             return self.parent.get_global_angle() + self.angle
    25.         return self.angle
    26.     def update_position(self, start_x, start_y, all_bones):
    27.         """ Рекурсивно обновляет позиции этой кости и всех её "детей" """
    28.         self.x, self.y = start_x, start_y
    29.         end_x, end_y = self.get_endpoint()
    30.        
    31.         # Ищем «детей» этой кости в общем списке и обновляем их
    32.         for child in all_bones:
    33.             if child.parent is self:
    34.                 child.update_position(end_x, end_y, all_bones)
    35.  
    36. # ---------- ИНИЦИАЛИЗАЦИЯ PYGAME ----------
    37. pygame.init()
    38. SCREEN_WIDTH = 800
    39. SCREEN_HEIGHT = 500
    40. screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
    41. pygame.display.set_caption("Skeletal Walking Leg Demo")
    42. clock = pygame.time.Clock()
    43. font = pygame.font.Font(None, 24)
    44.  
    45. # ---------- СОЗДАЁМ ИЕРАРХИЮ НОГИ ----------
    46. # Точка крепления (таз) будет находиться в центре экрана
    47. LEG_BASE_X = SCREEN_WIDTH // 2
    48. LEG_BASE_Y = SCREEN_HEIGHT // 2 - 50
    49.  
    50. # Создаем кости: Бедро -> Колено -> Стопа
    51. hip = Bone(length=90, angle=math.radians(90))  # Направлено изначально вниз
    52. knee = Bone(length=80, angle=math.radians(30), parent=hip)
    53. foot = Bone(length=40, angle=math.radians(-30), parent=knee)
    54.  
    55. # Общий список костей для удобного пересчета и отрисовки
    56. bones_list = [hip, knee, foot]
    57.  
    58. # ---------- ГЛАВНЫЙ ЦИКЛ ----------
    59. running = True
    60. while running:
    61.     for event in pygame.event.get():
    62.         if event.type == pygame.QUIT:
    63.             running = False
    64.             pygame.quit()
    65.             sys.exit()
    66.  
    67.     # ВРЕМЯ ДЛЯ АНИМАЦИИ (переводим миллисекунды в секунды для плавности)
    68.     time_seconds = pygame.time.get_ticks() / 1000.0
    69.    
    70.     # СКОРОСТЬ ХОДЬБЫ
    71.     walk_speed = 4.0
    72.    
    73.     # --- БИОМЕХАНИКА ШАГА (Формулы синуса) ---
    74.     # 1. Бедро качается вперед-назад вокруг центральной оси (90 градусов)
    75.     hip.angle = math.radians(90) + math.sin(time_seconds * walk_speed) * math.radians(25)
    76.    
    77.     # 2. Колено сгибается только тогда, когда нога уходит назад (создаем естественность)
    78.     # Наш синус смещен, чтобы колено реалистично поджималось при подъёме ноги
    79.     knee.angle = math.radians(40) + math.sin(time_seconds * walk_speed - 1.0) * math.radians(30)
    80.    
    81.     # 3. Стопа слегка покачивается, чтобы пружинить при «наступании» на воображаемую землю
    82.     foot.angle = math.radians(-20) + math.cos(time_seconds * walk_speed) * math.radians(15)
    83.  
    84.     # ОБНОВЛЯЕМ ПОЗИЦИИ ВСЕХ СУСТАВОВ (эффект домино от таза к стопе)
    85.     hip.update_position(LEG_BASE_X, LEG_BASE_Y, bones_list)
    86.  
    87.     # --- ОТРИСОВКА ОКРУЖЕНИЯ ---
    88.     screen.fill((25, 25, 35)) # Красивый темно-синий фон
    89.  
    90.     # Рисуем линию «земли», чтобы было видно, как нога шагает по ней
    91.     pygame.draw.line(screen, (70, 70, 80), (0, LEG_BASE_Y + 160), (SCREEN_WIDTH, LEG_BASE_Y + 160), 2)
    92.  
    93.     # Рисуем кости и суставы
    94.     for bone in bones_list:
    95.         end_point = bone.get_endpoint()
    96.        
    97.         # Рисуем саму кость (бирюзовая толстая линия)
    98.         pygame.draw.line(screen, (0, 210, 255), (bone.x, bone.y), end_point, 8)
    99.        
    100.         # Рисуем сустав-шарнир (розовый круг в основании кости)
    101.         pygame.draw.circle(screen, (255, 90, 120), (int(bone.x), int(bone.y)), 7)
    102.        
    103.         # Рисуем кончик последней кости (носок стопы)
    104.         if bone is foot:
    105.             pygame.draw.circle(screen, (255, 90, 120), (int(end_point[0]), int(end_point[1])), 5)
    106.  
    107.     # Информационный текст на экране
    108.     info_text = font.render("Усовершенствованный демо-скелет: Шагающая нога (Бедро -> Колено -> Стопа)", True, (200, 200, 200))
    109.     screen.blit(info_text, (15, 15))
    110.  
    111.     pygame.display.flip()
    112.     clock.tick(60)
    113.  
     
    Последнее редактирование: 23 июн 2026 в 06:13
  15. Application

    Application Active Member

    Публикаций:
    1
    Регистрация:
    15 окт 2022
    Сообщения:
    183
    Версия игры со звуком. Перевел винапи на python, есть глюки (игрока начинает заносить).



    Наткнулся на интересный проект игры minecraft в несколько строк на c++ (с исходниками).
     

    Вложения:

    • shooter 3d.rar
      Размер файла:
      127,4 КБ
      Просмотров:
      1
    Последнее редактирование: 23 июн 2026 в 09:00