User Tag List

Показано с 1 по 10 из 80

Тема: LASER BASIC 2

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #10

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,712
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Laser2Demo.zip с прыгающим инопланетным чудиком. Вывод за пределами экрана пока не реализован. Бинарь занимает 986 байт, из них:

    661 байт - массив спрайтов (4 фазы чудика, 5x4 знакомест каждая, без атрибутов).
    123 байта - основная подпрограмма вывода спрайта Laser2_PUT_SPRITE_INSCR.
    202 байта - остальной код (в т.ч. процедуры установки цветов, задержки, инициализации и т.д.)

    Код:
    MODULE Laser2Demo; (*$MAIN*)
    
    (*   LASER BASIC 2 Demo for Sinclair ZX Spectrum 48 Kb   *)
    (* Copyright (C) 2016 Oleg N. Cher, VEDAsoft Oberon Club *)
    
    IMPORT gr := Laser2, b := Basic;
    
    (* Пример взят из книги "Как написать игру для ZX Spectrum" *)
    
    CONST
      FrameSizeBytes = 5(*hdr*) + 8*20(*data*) ;
    
    TYPE
      Sprites = ARRAY FrameSizeBytes * 4 (*frames*) + 1 OF CHAR;
    
    CONST
      Chudik = Sprites ( ... ); (* Данные спрайтов поскипаны *)
    
    VAR
      x, phase: SHORTINT;
    
    BEGIN
      b.Init;
    
      b.COLOR(b.Bright + b.Black*b.Paper + b.Yellow); b.BORDER(b.Black); b.CLS;
      gr.InitSpritesAr(Chudik); gr.ATOF;
    
      FOR x := -2+2 TO 30-2 BY 2 DO
        FOR phase := 1 TO 4 DO gr.PTBL(x, 5, phase); b.PAUSE(5) END;
      END;
    
      b.Quit
    END Laser2Demo.
    Старый вариант этой же демки (на библиотеке Raydac/Michailov, со сделанной мною смартлинковкой) занимает 2686 байт.

    Думаю, это хороший результат. Для дерзновенных предлагаю оптимизировать процедуру вывода ещё сильнее. ;-)

    В планах реализовать вывод спрайтов за пределами экрана. Потом ещё несколько подпрограмм: скроллинг окон, атрибутов и т.д. Все процедуры из набора LASER BASIC реализовывать не планирую, только нужные (мне).

    - - - Добавлено - - -

    Сделал процедуру для выбора экрана (по адресу), чтобы иметь возможность выводить на второй экран, да и вообще в виртуальный экран в памяти. Сначала хотел назвать SCRN, сообразно стилю LASER BASIC, но отказался от этого, назвал SetScreen. Так новая, не входящая в набор ранее, процедура будет заметнее, ибо коррелирует с InitSprites, InitSpritesEx и InitSpritesAr.

    Конвертер спрайтов LASER BASIC в LASER BASIC 2 будет включен в дистрибутив ZXDev (с исходниками). Конвертирует на уровне исходного текста, но не бинаря. Пока понимает только Оберон, планирую добавить Си. Утилита очень сырая, нет никакой обработки ошибок, но всё, что нужно, она делает, а больше пока не требуется.




    Типичный модуль ресурсов игры на Обероне может выглядеть так (сам инициализируя LASER BASIC 2):

    Код:
    MODULE Rsrc; (** Resource *)
    IMPORT Laser2;
    
    TYPE
      SpritesT = ARRAY SpriteSize OF CHAR;
    
    CONST
      Spr1* = 1; (* Константа - номер спрайта, экспортируется, т.е. её видно извне *)
      Spr2* = 2;
      (* ... *)
    
      Sprites = SpritesT ( ... );
    
    BEGIN
      Laser2.InitSpritesAr(Sprites)
    END Rsrc.
    Код:
    MODULE MyGame; (*$MAIN*)
    IMPORT Laser2, Rsrc;
      ...
    BEGIN
      ...
      Laser2.PTBL(x, y, Rsrc.Spr2);
      ...
    END MyGame.
    Последний раз редактировалось Oleg N. Cher; 11.09.2016 в 20:29.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. LASER BASIC
    от VETER в разделе Программирование
    Ответов: 8
    Последнее: 04.01.2015, 04:48
  2. laser basic
    от johnny в разделе Программирование
    Ответов: 32
    Последнее: 17.02.2014, 22:57
  3. LASER BASIC decompiled by HVG
    от Raydac в разделе Программирование
    Ответов: 0
    Последнее: 21.12.2009, 23:04
  4. Возрождение Laser Squad
    от Odrick в разделе Игры
    Ответов: 17
    Последнее: 08.11.2005, 02:18
  5. Re: Laser Genius
    от Oleg Golenkoff (2:451/19) в разделе Софт
    Ответов: 3
    Последнее: 01.10.2005, 06:06

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •