Blitz BASIC: различия между версиями
[непроверенная версия] | [непроверенная версия] |
AGGreSSor (обсуждение | вклад) мНет описания правки |
Нет описания правки |
||
(не показано 16 промежуточных версий 8 участников) | |||
Строка 1: | Строка 1: | ||
'''Blitz3D''' |
'''Blitz3D''' — коммерческий [[игровой движок]], разработанный Марком Сибли, а также среда разработки с языком Blitz BASIC и скриптовый язык для создания игр. Оригинальная разработка компилятора Blitz BASIC велась для [[Персональный компьютер|ПК]] [[Amiga]], но на сегодняшний день{{Когда}} он поддерживает уже несколько платформ, в том числе [[Microsoft Windows]], [[Mac OS X]] и [[Linux]]. В версии для [[Microsoft Windows]] поддерживается [[DirectX]] 7. Актуальная версия 1.109 от 1 мая 2023 г. |
||
== Blitz3D == |
== Blitz3D == |
||
Язык содержит 588 конструкций, позволяющих создать двух- и трёхмерное игровое пространство. С помощью него можно создавать небольшие игры, используя большое количество библиотек, написанных членами сообществ по программированию на Blitz3D. |
Язык содержит 588 конструкций, позволяющих создать двух- и трёхмерное игровое пространство. С помощью него можно создавать небольшие игры, используя большое количество библиотек, написанных членами сообществ по программированию на Blitz3D. |
||
C 3 августа 2014 |
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=" |
<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 ; прекращаем цикл при |
Wend ; прекращаем цикл при нарушении условия |
||
End ; конец программы |
End ; конец программы |
||
</source> |
</source> |
||
Строка 20: | Строка 20: | ||
'''Нello world с использованием переменных''' |
'''Нello world с использованием переменных''' |
||
<source lang=" |
<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> |
||
Строка 45: | Строка 45: | ||
</source> |
</source> |
||
'''Работа с |
'''Работа с трёхмерной графикой''' |
||
<source lang=" |
<source lang="blitzbasic"> |
||
Graphics3D 800,600 ;Устанавливаем графический режим |
Graphics3D 800,600 ;Устанавливаем графический режим |
||
Global model = LoadMesh("helloworld.3ds") ;Загружаем |
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() ; Выводим на экран |
||
Строка 62: | Строка 61: | ||
== BlitzMax == |
== BlitzMax == |
||
'''BlitzMax''' — язык программирования, разработанный Марком Сибли. BlitzMax использует расширеную версию языка [[basic]]. Благодаря модулям функциональность BlitzMax можно расширять до бесконечности. Из графических API может использовать и [[DirectX]] и [[OpenGL]]. Несколько |
'''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>. |
C 29 апреля 2014 распространняется свободно<ref name=official/>, исходный код открыт под [[Лицензия zlib|лицензией zlib/libpng]]<ref>{{github|blitz-research|blitzplus|BlitzPlus}}</ref>. |
||
Строка 140: | Строка 139: | ||
| - |
| - |
||
|} |
|} |
||
== 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 и могут использоваться для более эффективного выполнения числовых вычислений. |
|||
⚫ | |||
* ''[[SCP-087-B]]'' |
|||
⚫ | |||
== Примечания == |
== Примечания == |
||
Строка 152: | Строка 220: | ||
== См. также == |
== См. также == |
||
* [[Xors3D]] |
* [[Xors3D]] — современный 3D движок для BlitzMax |
||
* [[Monkey (язык программирования)|Monkey]] |
* [[Monkey (язык программирования)|Monkey]] — новый кроссплатформенный язык программирования от Blitz Research Ltd |
||
⚫ | |||
⚫ | |||
== Ссылки == |
== Ссылки == |
||
Строка 162: | Строка 227: | ||
* {{github|blitz-research|blitz3d_msvc2017|Blitz3D Source for MSVC Community Edition 2017}} |
* {{github|blitz-research|blitz3d_msvc2017|Blitz3D Source for MSVC Community Edition 2017}} |
||
* [https://web.archive.org/web/20151022044644/http://blitzetc.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=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] |
* [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}} |
|||
[[Категория:Языки программирования по алфавиту]] |
[[Категория:Языки программирования по алфавиту]] |
Текущая версия от 17:32, 18 декабря 2024
Blitz3D — коммерческий игровой движок, разработанный Марком Сибли, а также среда разработки с языком Blitz BASIC и скриптовый язык для создания игр. Оригинальная разработка компилятора Blitz BASIC велась для ПК Amiga, но на сегодняшний день[когда?] он поддерживает уже несколько платформ, в том числе Microsoft Windows, Mac OS X и Linux. В версии для Microsoft Windows поддерживается DirectX 7. Актуальная версия 1.109 от 1 мая 2023 г.
Blitz3D
[править | править код]Язык содержит 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 — язык программирования, разработанный Марком Сибли. 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 NG — язык программирования, прямой продолжатель оригинального языка BlitzMAX. Разрабатывается свободным сообществом под руководством Брюса Хендерсона (woollybah).
Дополнительные возможности и изменения
[править | править код]- Вместо транслятора в язык Flat Assembler введён транслятор в язык С.
- Поддержка платформ : Windows, Linux, MacOS, Android, iOS, Raspberry Pi, Haiku.
- Статические и динамические массивы.
- Интерфейсы.
- Перегрузка функций и методов.
- Перегрузка операторов класса.
- Инкапсуляция.
- Условные аргументы в методах.
- Перечисляемые типы.
- Обобщённые классы (в прогрессе).
Дополнительные типы данных
[править | править код]Описание | Название | Мин. Значение | Макс. Значение |
---|---|---|---|
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 2 The Official Blitz Website . Дата обращения: 29 марта 2015. Архивировано из оригинала 31 марта 2016 года.
- ↑ Проект Blitz3D на сайте GitHub
- ↑ Проект 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
Ссылки
[править | править код]- Официальный сайт
- Проект Blitz3D Source for MSVC Community Edition 2017 на сайте GitHub
- Русскоязычный электронный журнал «Blitz Et Cetera» о программировании на языках семейства Blitz
- Раздел о Blitz3D на boolean.name Архивная копия от 7 июня 2010 на Wayback Machine
- Раздел о BlitzMax на boolean.name Архивная копия от 12 апреля 2008 на Wayback Machine
- Относящиеся к BlitzMax открытые проекты Архивная копия от 3 апреля 2012 на Wayback Machine на Google Code