Blitz BASIC: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
 
(не показаны 44 промежуточные версии 28 участников)
Строка 1: Строка 1:
'''Blitz3D''' — коммерческий [[игровой движок]], разработанный Марком Сибли, а также среда разработки с языком Blitz BASIC и скриптовый язык для создания игр. Оригинальная разработка компилятора Blitz BASIC велась для [[Персональный компьютер|ПК]] [[Amiga]], но на сегодняшний день{{Когда}} он поддерживает уже несколько платформ, в том числе [[Microsoft Windows]], [[Mac OS X]] и [[Linux]]. В версии для [[Microsoft Windows]] поддерживается [[DirectX]] 7. Актуальная версия 1.109 от 1 мая 2023 г.

== Blitz3D ==
== Blitz3D ==
'''Blitz3D''' — коммерческий игровой движок, разработанный Марком Сибли, а также среда разработки с языком Blitz BASIC. Движок использует api [[DirectX]] 7 для 3d-графики. На данный момент существует и в виде [[SDK]].

Язык содержит 588 конструкций, позволяющих создать двух- и трёхмерное игровое пространство. С помощью него можно создавать небольшие игры, используя большое количество библиотек, написанных членами сообществ по программированию на Blitz3D.
Язык содержит 588 конструкций, позволяющих создать двух- и трёхмерное игровое пространство. С помощью него можно создавать небольшие игры, используя большое количество библиотек, написанных членами сообществ по программированию на Blitz3D.

C 3 августа 2014 распространяется свободно<ref name=official>{{cite web|url=http://www.blitzbasic.com/|title=The Official Blitz Website|accessdate=2015-03-29|deadlink=yes|archiveurl=https://web.archive.org/web/20160331013346/http://www.blitzbasic.com/|archivedate=2016-03-31}}</ref>, исходный код открыт под [[Лицензия zlib|лицензией zlib/libpng]]<ref>{{github|blitz-research|blitz3d|Blitz3D}}</ref>.


=== Примеры программ ===
=== Примеры программ ===

'''Нello world'''
'''Нello world'''
<source lang="BlitzBasic">
<source lang="blitzbasic">
Graphics 800,600 ; - Графический режим 800x600
Graphics 800,600 ; - Графический режим 800x600
While Not KeyDown(1) ; - Начало главного цикла
While Not KeyDown(1) ; - Начало главного цикла (Пока НЕ нажата клавиша 1 (Escape)
Cls() ; - Чистим экран
Cls() ; - Чистим экран
Text 10, 20, "Hello, World!" ; - Пишем текст "Hello world" в точке 10,20
Text 10, 20, "Hello, World!" ; - Пишем текст "Hello world" в точке 10,20
Flip() ; - Выводим на экран
Flip() ; - меняем кадр (Как в старых мультфильмах, когда движение задавалось сменной кадра)
Wend ; прекращаем цикл при нажатии на Esc
Wend ; прекращаем цикл при нарушении условия
End ; конец программы
End ; конец программы
</source>
</source>
Строка 19: Строка 20:


'''Нello world с использованием переменных'''
'''Нello world с использованием переменных'''
<source lang="BlitzBasic">
<source lang="blitzbasic">
Graphics 800,600
Graphics 800,600 ; - Графический режим 800x600
Global a$="Hello"
Global a$="Hello" ; - Переменная a с содержанием "Hello"
Global b$="World"
Global b$="World" ; - Переменная b с содержанием "World"
While Not KeyDown(1)
While Not KeyDown(1); - Начало главного цикла
Cls()
Cls() ; - Чистим экран
Text 0,0,a$+b$
Text 0,0,a$+b$ ; - Выводим текст на позицию 0,0
Flip()
Flip() ; - Меняем кадр
Wend ; - Завершение цикла при нарушении условия
Wend
End
End ; - конец программы
</source>
</source>


Строка 44: Строка 45:
</source>
</source>


'''Работа с трехмерной графикой'''
'''Работа с трёхмерной графикой'''
<source lang="BlitzBasic">
<source lang="blitzbasic">
Graphics3D 800,600 ;Устанавливаем графический режим
Graphics3D 800,600 ;Устанавливаем графический режим
Global model = LoadMesh("helloworld.3ds") ;Загружаем трехмерную модель надписи "Hello, World"
Global model = LoadMesh("helloworld.3ds") ;Загружаем трёхмерную модель надписи "Hello, World" (Примечание, поддерживается только формат .3ds)
PositionEntity model,0,0,0 ;Устанавливаем модель в точке 0,0,0
PositionEntity model,0,0,0 ;Устанавливаем модель в точке 0,0,0
Global camera = CreateCamera() ;Создаем камеру
Global camera = CreateCamera() ;Создаём камеру
PositionEntity camera,0,0,-10 ;Устанавливаем камеру чуть позади обьекта
PositionEntity camera,0,0,-10 ;Устанавливаем камеру чуть позади объекта


While Not KeyDown(1) ;Начало цикла
While Not KeyDown(1) ;Начало цикла
Cls() ; Очищаем экран
RenderWorld() ; Производим рендер изображения
RenderWorld() ; Производим рендер изображения
Flip() ; Выводим на экран
Flip() ; Выводим на экран
Строка 60: Строка 60:
</source>
</source>


== BlitzMax ==
'''BlitzMax''' — язык программирования, разработанный Марком Сибли. BlitzMax использует расширеную версию языка [[basic]]. Благодаря модулям функциональность BlitzMax можно расширять до бесконечности. Из графических API может использовать и [[DirectX]], и [[OpenGL]]. Несколько встроенных звуковых API (DirectSound, FreeAudio, OpenAL). Имеет удобный модуль GNet для быстрого создания сетевых приложений.


C 29 апреля 2014 распространняется свободно<ref name=official/>, исходный код открыт под [[Лицензия zlib|лицензией zlib/libpng]]<ref>{{github|blitz-research|blitzplus|BlitzPlus}}</ref>.

== BlitzMax ==
'''BlitzMax''' — язык программирования, разработанный Марком Сибли. BlitzMax использует расширеную версию языка [[basic]]. Благодаря модулям функционал BlitzMax можно расширять до бесконечности. Из графических API может использовать и [[DirectX]] и [[OpenGL]]. Несколько встроеных звуковых API (DirectSound, FreeAudio, OpenAL). Имеет удобный модуль GNet для быстрого создания сетевых приложений.


=== Основные возможности ===
=== Основные возможности ===
* 2 режима [[Интерпретация_(информатика)|интерпретирования кода]] Strict и SuperStrict
* 2 режима [[Интерпретация (информатика)|интерпретирования кода]] Strict и SuperStrict
* Многопроходный компилятор
* Многопроходный компилятор
* Транслятор в язык [[Flat Assembler]]
* Транслятор в язык [[Fasm|Flat Assembler]]
* Поддержка платформ : Win32, Linux, MacOS
* Поддержка платформ : Win32, Linux, MacOS
* Указатели на функции
* Указатели на функции
Строка 140: Строка 140:
|}
|}


== BlitzMax NG ==
'''BlitzMax NG''' — язык программирования, прямой продолжатель оригинального языка BlitzMAX. Разрабатывается свободным сообществом под руководством Брюса Хендерсона (woollybah).


=== Дополнительные возможности и изменения ===
* Вместо транслятора в язык [[Fasm|Flat Assembler]] введён транслятор в язык [[Си (язык программирования)|С]].
* Поддержка платформ : Windows, Linux, MacOS, Android, iOS, Raspberry Pi, Haiku.
* Статические и динамические массивы.
* [[Интерфейс (объектно-ориентированное программирование)|Интерфейсы]].
* Перегрузка [[Перегрузка процедур и функций|функций]] и методов.
* [[Перегрузка операторов|Перегрузка операторов класса]].
* [[Инкапсуляция (программирование)|Инкапсуляция]].
* Условные аргументы в методах.
* [[Перечисляемый тип|Перечисляемые типы]].
* [[Обобщённое программирование|Обобщённые классы]] (в прогрессе).

=== Дополнительные типы данных ===
{| class="wikitable"
|+
!Описание
!Название
!Мин. Значение
!Макс. Значение
|-
|32 битное числовое без знака
|UInt
|0
| +2^32-1
|-
|64 битное числовое без знака
|ULong
|0
| +2^64-1
|-
|32 битное числовое без знака
|Size_T
|0
| +2^32-1
|-
|64 битное числовое без знака
|Size_T
|0
| +2^64-1
|-
|64 битное SIMD вещественное
|Float64
| -
| -
|-
|128 битное SIMD числовое
|Int128
| -
| -
|-
|128 битное SIMD вещественное
|Float128
| -
| -
|-
|128 битное SIMD вещественное
|Double128
| -
| -
|}
Значения SIMD доступны на архитектурах x64 и могут использоваться для более эффективного выполнения числовых вычислений.

== Игры на Blitz 3D ==
* ''[[SCP-087-B]]''
* ''[[SCP — Containment Breach|SCP: Containment Breach]]''

== Примечания ==
{{примечания}}


== Литература ==
== Литература ==
Строка 150: Строка 220:


== См. также ==
== См. также ==
* [[Xors3d_Engine | Xors3D - современный 3D движок для BlitzMax]]
* [[Xors3D]] — современный 3D движок для BlitzMax
* [[Monkey_(язык_программирования)|Новый кроссплатформенный язык программирования Monkey от Blitz Research Ltd]]
* [[Monkey (язык программирования)|Monkey]] — новый кроссплатформенный язык программирования от Blitz Research Ltd


== Ссылки ==
== Ссылки ==
* [http://blitzbasic.com Официальный сайт]
* [https://web.archive.org/web/20170724000113/http://www.blitzbasic.com/ Официальный сайт]
* {{github|blitz-research|blitz3d_msvc2017|Blitz3D Source for MSVC Community Edition 2017}}
* [http://blitzetc.blitzmax.ru/ Русскоязычный электронный журнал «Blitz Et Cetera» о программировании на языках семейства Blitz]
* [https://web.archive.org/web/20151022044644/http://blitzetc.ru/ Русскоязычный электронный журнал «Blitz Et Cetera» о программировании на языках семейства Blitz]
* [http://forum.boolean.name/forumdisplay.php?f=45 Раздел о Blitz3D на boolean.name]
* [http://forum.boolean.name/forumdisplay.php?f=104 Раздел о BlitzMax на boolean.name]
* [http://forum.boolean.name/forumdisplay.php?f=45 Раздел о Blitz3D на boolean.name] {{Wayback|url=http://forum.boolean.name/forumdisplay.php?f=45 |date=20100607070613 }}
* [http://forum.boolean.name/forumdisplay.php?f=104 Раздел о BlitzMax на boolean.name] {{Wayback|url=http://forum.boolean.name/forumdisplay.php?f=104 |date=20080412222125 }}
* [http://code.google.com/hosting/search?q=label:BlitzMax Относящиеся к BlitzMax открытые проекты] на [[Google Code]]
* [http://code.google.com/hosting/search?q=label:BlitzMax Относящиеся к BlitzMax открытые проекты] {{Wayback|url=http://code.google.com/hosting/search?q=label:BlitzMax |date=20120403120133 }} на [[Google Code]]

{{compu-lang-stub}}

[[Категория:Языки программирования]]
[[Категория:Amiga]]


[[Категория:Языки программирования по алфавиту]]
[[af:Blitz BASIC]]
[[Категория:Программное обеспечение для Amiga]]
[[de:Blitz Basic]]
[[Категория:Программное обеспечение для разработки компьютерных игр]]
[[en:Blitz BASIC]]
[[Категория:Свободные компиляторы и интерпретаторы]]
[[es:Blitz BASIC]]
[[fi:Blitz BASIC]]
[[fr:Blitz Basic]]
[[it:Blitz BASIC]]
[[nl:Blitz Basic]]
[[no:BlitzBasic]]
[[pl:Blitz Basic]]
[[pt:Blitz Basic]]
[[sv:Blitz Basic]]

Текущая версия от 17:32, 18 декабря 2024

Blitz3D — коммерческий игровой движок, разработанный Марком Сибли, а также среда разработки с языком Blitz BASIC и скриптовый язык для создания игр. Оригинальная разработка компилятора Blitz BASIC велась для ПК Amiga, но на сегодняшний день[когда?] он поддерживает уже несколько платформ, в том числе Microsoft Windows, Mac OS X и Linux. В версии для Microsoft Windows поддерживается DirectX 7. Актуальная версия 1.109 от 1 мая 2023 г.

Язык содержит 588 конструкций, позволяющих создать двух- и трёхмерное игровое пространство. С помощью него можно создавать небольшие игры, используя большое количество библиотек, написанных членами сообществ по программированию на Blitz3D.

C 3 августа 2014 распространяется свободно[1], исходный код открыт под лицензией zlib/libpng[2].

Примеры программ

[править | править код]

Нello world

Graphics 800,600                 ; - Графический режим 800x600
While Not KeyDown(1)             ; - Начало главного цикла (Пока НЕ нажата клавиша 1 (Escape)
 Cls()                           ; - Чистим экран
  Text 10, 20, "Hello, World!" ; - Пишем текст "Hello world" в точке 10,20
 Flip()                          ; - меняем кадр (Как в старых мультфильмах, когда движение задавалось сменной кадра)
Wend                             ; прекращаем цикл при нарушении условия
End                              ; конец программы


Нello world с использованием переменных

                   
Graphics 800,600    ; - Графический режим 800x600
Global a$="Hello"   ; - Переменная a с содержанием "Hello"
Global b$="World"   ; - Переменная b с содержанием "World"          
While Not KeyDown(1); - Начало главного цикла            
 Cls()              ; - Чистим экран                     
  Text 0,0,a$+b$    ; - Выводим текст на позицию 0,0 
 Flip()             ; - Меняем кадр
Wend                ; - Завершение цикла при нарушении условия
End                 ; - конец программы

Работа с изображениями

                     
Graphics 800,600  
Global Image = LoadImage("picture.bmp")
            
While Not KeyDown(1)                          
 Cls()                          
  DrawImage Image,100,100
 Flip()                        
Wend
End

Работа с трёхмерной графикой

                     
Graphics3D 800,600                     ;Устанавливаем графический режим 
Global model = LoadMesh("helloworld.3ds")          ;Загружаем трёхмерную модель надписи "Hello, World" (Примечание, поддерживается только формат .3ds)
PositionEntity model,0,0,0            ;Устанавливаем модель в точке 0,0,0
Global camera = CreateCamera()             ;Создаём камеру
PositionEntity camera,0,0,-10             ;Устанавливаем камеру чуть позади объекта

While Not KeyDown(1)                         ;Начало цикла  
 RenderWorld()                  ; Производим рендер изображения
 Flip()                        ; Выводим на экран
Wend                           ;Конец цикла
End                             ;Конец программы

BlitzMax — язык программирования, разработанный Марком Сибли. BlitzMax использует расширеную версию языка basic. Благодаря модулям функциональность BlitzMax можно расширять до бесконечности. Из графических API может использовать и DirectX, и OpenGL. Несколько встроенных звуковых API (DirectSound, FreeAudio, OpenAL). Имеет удобный модуль GNet для быстрого создания сетевых приложений.

C 29 апреля 2014 распространняется свободно[1], исходный код открыт под лицензией zlib/libpng[3].

Основные возможности

[править | править код]
  • 2 режима интерпретирования кода Strict и SuperStrict
  • Многопроходный компилятор
  • Транслятор в язык Flat Assembler
  • Поддержка платформ : Win32, Linux, MacOS
  • Указатели на функции
  • Наследование и полиморфизм
  • Полностью динамические массивы
  • Внешняя поддержка языков для взаимодействия с C++ или Assembler
  • Совместим с MinGW

Типы данных

[править | править код]
Описание Название Мин. значение Макс. значение
8 битное числовое Byte 0 255
16 битное числовое Short 0 65535
32 битное числовое Int −2^31 +2^31-1
64 битное числовое Long −2^63 +2^63-1
32 битное вещественное Float (+/-)10^-38 (+/-)10^38
64 битное вещественное Double (+/-)10^-308 (+/-)10^308
16 бит юникод полнотекстовое String - -
Объект (Тип) obj:TObject - -
Массив array{:type}[..] - -
Функция Function:{return type}(Parameters) - -
Указатель Pointer ValueType Ptr - -

BlitzMax NG — язык программирования, прямой продолжатель оригинального языка BlitzMAX. Разрабатывается свободным сообществом под руководством Брюса Хендерсона (woollybah).

Дополнительные возможности и изменения

[править | править код]

Дополнительные типы данных

[править | править код]
Описание Название Мин. Значение Макс. Значение
32 битное числовое без знака UInt 0 +2^32-1
64 битное числовое без знака ULong 0 +2^64-1
32 битное числовое без знака Size_T 0 +2^32-1
64 битное числовое без знака Size_T 0 +2^64-1
64 битное SIMD вещественное Float64 - -
128 битное SIMD числовое Int128 - -
128 битное SIMD вещественное Float128 - -
128 битное SIMD вещественное Double128 - -

Значения SIMD доступны на архитектурах x64 и могут использоваться для более эффективного выполнения числовых вычислений.

Игры на Blitz 3D

[править | править код]

Примечания

[править | править код]
  1. 1 2 The Official Blitz Website. Дата обращения: 29 марта 2015. Архивировано из оригинала 31 марта 2016 года.
  2. Проект Blitz3D на сайте GitHub
  3. Проект BlitzPlus на сайте GitHub

Литература

[править | править код]
  • Learn to Program 2D Games in Blitz Basic by John «Krylar» Logsdon, (2003)
  • Game Programming for Teens by Maneesh Sethi, (2003), ISBN 1-59200-068-1
  • Games Programming for the Absolute Beginner with BlitzMax by Sloan Kelly, ISBN 0-9553771-0-2
  • 3D Game Programming for Teens by Eric Grebler, (2006) ISBN 1-59200-900-X
  • 3D Game Programming for Teens, 2nd edition by Maneesh Sethi, (2009) ISBN 1-59863-843-2
  • Xors3D — современный 3D движок для BlitzMax
  • Monkey — новый кроссплатформенный язык программирования от Blitz Research Ltd