






Mikle писал(а):Второе место!

Mikle писал(а):Второе место!



Хакер писал(а):либо я не понял фишку, либо оно действительно неправильно работает

Фишка в том, чтобы засунуть максимально впечатляющую картинку в исполняемый файл до 4 кбайт.
По нажатию пробела можно сгенерировать другую картинку (меняется позиция солнца, цвет неба, плотность тумана). У меня она рисуется за 3-5 секунд, и открытые поверх неё окна ничего не пачкают.
Это обычная форма с AutoRedraw=True, закрашенная через Pset.Mikle писал(а):Какой Windows?
C:\Documents and Settings\firehacker>systeminfo
Имя узла:                         HACKSERVER
Название ОС:                      Microsoft Windows XP Professional
Версия ОС:                        5.1.2600 Service Pack 2 сборка 2600
Изготовитель ОС:                  Microsoft Corporation
Параметры ОС:                     Изолированная рабочая станция
Сборка ОС:                        Multiprocessor Free
Зарегистрированный владелец:      Владислав Петровский
Зарегистрированная организация:   Fire-Lines
Код продукта:                     76456-640-0174977-23218
Дата установки:                   18.10.2009, 4:36:49
Время работы системы:             9 дн., 11 час., 10 мин, 9 сек.
Изготовитель системы:             INTEL_
Модель системы:                   D915GAV_
Тип системы:                      X86-based PC
Процессор(ы):                     Число процессоров - 2.
                                  [01]: x86 Family 15 Model 4 Stepping 1 GenuineIntel ~3000 МГц
                                  [02]: x86 Family 15 Model 4 Stepping 1 GenuineIntel ~3000 МГц
Версия BIOS:                      INTEL  - 20040609
Папка Windows:                    C:\WINDOWS
Системная папка:                  C:\WINDOWS\system32
Устройство загрузки:              \Device\HarddiskVolume1
Язык системы:                     ru;Русский
Язык ввода:                       en-us;Английский (США)
Часовой пояс:                     Н/Д
Полный объем физической памяти:   1 023 МБ
Доступная физическая память:      407 МБ
Виртуальная память: Макс. размер: 2 048 МБ
Виртуальная память: доступно:     2 001 МБ
Виртуальная память: используется: 47 МБ
Расположение файла подкачки:      C:\pagefile.sys
Домен:                            LNET
Сервер входа в сеть:              \\HACKSERVER
О, я думал DX. А почему не SetDIBits?

Тоже самое.После запуска появляется чёрное окно без границ и заголовка посреди экрана.

После запуска появляется чёрное окно без границ и заголовка посреди экрана.
Тоже самое.



Mikle писал(а):Запускал исходник?



BV писал(а):Хакер, если это та самая машина, где у тебя магическим образом заканчиваются хендлы, то причем тут демка?
Private Sub Sky()
  Dim x As Long, y As Long, c1 As Long, c2 As Long, k As Single, s As Single
  Dim sx1 As Single, sy1 As Single
  SX = 100 + Rnd * 824
  SY = 192 + Rnd * 157
  For y = 0 To 383
    sy1 = 100000 / (390 - y)
    For x = 0 To 1023
      sx1 = (x - 511.5) * sy1 * 0.0005
      k = BN(sx1, sy1) - BN(sx1 * 0.14 + sy1 * 0.21, sy1 * 0.14 - sx1 * 0.21)
      If k < -8 Then k = 0 Else k = (k + 8) * 0.02: If k > 1 Then k = 1
      FC = &H908000 + (SY + 500) * 0.2
      c1 = Lerp(FC + 25, &H906050, y / 384)
      c2 = Lerp(&H807080, &HD0D0D0, y / 384)
      s = 50 / Sqr((x - SX) * (x - SX) + (y - SY) * (y - SY))
      If s > 1 Then s = 1
      c1 = Lerp(&HFFFFFF, c1, s)
      Col(x, y) = Lerp(c2, c1, k)
    Next x
  Next y
End Sub      c1 = Lerp(FC + 25, &H906050, y / 384)
      c2 = Lerp(&H807080, &HD0D0D0, y / 384)
Вопрос: зачем во втором (по вложенности) цикле целых 1024 раза делать это:
MSCF (присутствует в bat-файле) у меня отсутствует.

Хакер писал(а):Демка не использует хендлы, но использует крайне неоптимальные алгоритмы. Поделал вчера некоторую оптимизацию, стало намного быстрее.

Денис писал(а):Официальную vbstreets.demo.win32.pe

Если перенести это на уровень выше - придётся добавлять ещё одну переменную (c1 затирается). Это рост объёма.
Private Sub Sky()
  Dim x As Long, y As Long, c1 As Long, c2 As Long, k As Single, s As Single
  Dim sx1 As Single, sy1 As Single
  SX = 100 + Rnd * 824
  SY = 192 + Rnd * 157
  FC = &H908000 + (SY + 500) * 0.2
  For y = 0 To 383
    sy1 = 100000 / (390 - y)
    c1 = Lerp(FC + 25, &H906050, y / 384)
    c2 = Lerp(&H807080, &HD0D0D0, y / 384)
    For x = 0 To 1023
      sx1 = (x - 511.5) * sy1 * 0.0005
      k = BN(sx1, sy1) - BN(sx1 * 0.14 + sy1 * 0.21, sy1 * 0.14 - sx1 * 0.21)
      If k < -8 Then k = 0 Else k = (k + 8) * 0.02: If k > 1 Then k = 1
      
      s = 50 / Sqr((x - SX) * (x - SX) + (y - SY) * (y - SY))
      If s > 1 Then s = 1
      Col(x, y) = Lerp(c2, Lerp(&HFFFFFF, c1, s), k)
    Next x
  Next y
End Sub    If d = 1 Then Exit Do
    d = d \ 2    d = d \ 2
If d = 0 Then Exit Do
Хакер писал(а):Добавление переменной никак не влияет на объём, если это тем более Long-переменная
Хакер писал(а):Lerp между двумя константами лучше бы убрать и заменять на look-up в заранее заполненную (при запуске) таблицу.



Хакер писал(а):На ассемблере было бы очень коротко.

Mikle писал(а):А прикинь, сколько будет весить таблица для Lerp двух RGB значений по 256-ти значениям коэффициента интерполяции.
Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 12