Blitz Basic

BlitzBasic
開發者Blitz Research
编程语言使用C++编写,但语言风格属于BASIC
操作系统Microsoft Windows
平台Microsoft Windows
语言英语
类型游戏制作引擎英语Game creation system
许可协议zlib许可证
网站www.blitzbasic.com[失效連結]

Blitz BASIC是由新西兰程序员Mark Sibly设计的第一个Blitz系列编程语言。Blitz的语法基于BASIC,适合初学者且易于掌握。Blitz系列语言面向游戏变成,但通常被认为是通用语言,足以用于大多数类型的应用程序。Blitz随着新产品的发布和发展,新版本为更高级的编程技术提供了支持,例如面向对象多线程。这让这系列的语言在后来脱离了BASIC的名字。[1]

历史[编辑]

Blitz语言的第一个版本是为Amiga平台制作的,由澳大利亚公司Memory and Storage Technology发布。回到新西兰的几年后,[注 1]Acid Software[注 2]发布了Blitz BASIC 2。从此,Blitz编译器在多个平台上发布。随着Amiga在商业平台上的消亡,Blitz BASIC 2源码在Amiga社区发布,至今仍以AmiBlitz的名义发展。[3]

BlitzBasic[编辑]

Idigicon英语Idigicon在2000年10月发布,面向Microsoft Windows系统。该语言包括一个用于处理基本2D图形和音频的内置API。随着Blitz3D的发布,BlitzBasic通常被称为Blitz2D。

当英国流行的计算机杂志例如PC Format英语PC Format上发布了有限制的“免费”版本时,人们对于BlitzBasic的认识变深。这虽然令开发商和出版商之间发生法律纠纷,但最终友好解决。

Blitz3D[编辑]

Blitz3D
設計者Mark Sibly
實作者Blitz Research Ltd.
发行时间2001
操作系统Microsoft Windows
網站www.blitzbasic.com 編輯維基數據鏈接
Blitz3D的截图,该页面为“主页”。

Blitz3D(简称B3D)为BlitzBasic添加了200多个3D命令。BlitzBasic的语法在Blitz3D上完全可用。BlitzPlus的GUI命令不包括在内,但BlitzBasic和Blitz3D的免费拓展——BlitzUI可以添加与GUI功能相关的命令。BlitzUI的样子近似于Windows的经典用户界面,例如菜单栏和下拉菜单。但与BlitzPlus不用的是,它不使用Windows的标准GUI。尽管Blitz3D已停止接受更新,但Mark Sibly还是发布了一个针对Windows 8的错误修复版本。

Blitz3D于2014年8月3日开放源码,可在Github上获取。Blitz3D使用Microsoft Visual C++ 6.0编写。[4]

BlitzPlus[编辑]

2003年2月,Blitz Research Ltd.发布了同样适用于Microsoft Windows的BlitzPlus。它缺少Blitz3D所拥有的3D引擎,但它通过实现有限的Microsoft Windows控件支持来创建图形用户界面,为该语言的2D端添加了新功能。2D引擎的向后兼容性也得到了拓展,允许BlitzPlus制作的游戏和应用程序可能在仅有DirectX 1的系统上运行。

BlitzMax[编辑]

BlitzMax
编程范型指令式编程面向对象模块化编程反射式编程
設計者Mark Sibly
實作者Blitz Research Ltd.
发行时间2004
型態系統静态弱类型强类型(可选)
操作系统Microsoft Windows, Mac OS X, Linux
網站www.blitzbasic.com 編輯維基數據鏈接
衍生副語言
Official BlitzMax, bmx-ng
啟發語言
BlitzBasic
影響語言
Monkey

第一个BlitzMax编译器于2004年12月发布,面向Mac OS X。这使BlitzMax成为第一个可以在*nix平台上编译的Blitz语言。Microsoft Windows和Linux的编译器随后于2005年5月发布。BlitzMax通过拓展类型系统以包含面向对象的概念,并修改图形API以更好地适应OpenGL,为现代Blitz系列带来了最大的语言结构变化。BlitzMax也是第一种在内部使用UCS-2编码的Blitz语言,允许显示非ASCII字符组成的字符串。

BlitzMax的平台无关命令集允许开发人员在多个平台上编译和运行源代码。然而,官方的编译器和构建链仅会为它正在执行的平台生成二进制文件。非正式地说,用户已经能够让Linux和Mac OS X交叉编译至Windows平台。

BlitzMax也是Blitz系列的第一个模块化编程语言,提高了命令集的可拓展性。此外,编译器所附带的所有标准模块都是开源的,因此程序员可以在必要时进行调整和重新编译。官方的BlitzMax跨平台图形用户界面模块(称为MaxGUI)允许开发人员为他们在Linux(FLTK)、Mac (Cocoa)和Windows上的应用程序编写GUI界面。各种用户贡献的模块例如wxWidgetsCairoFontconfig等一系列数据库模块拓展了该语言的使用范围。还有一些第三方3D模块可供选择,即MiniB3D[5],一个开源的OpenGL引擎,可以在BlitzMax支持的所有三个平台上编译和运行。

2007年10月,BlitzMax 1.26版发布,其中增加了反射模块。[6]BlitzMax 1.32发布包括新的线程Lua脚本模块,大多数标准库函数都已更新,因此它们支持Unicode编码。[7]

Blitz3D SDK[编辑]

Blitz3D SDK是一个基于Blitz3D引擎制作的3D图形引擎。它是为配合C++C#、BlitzMax和PureBasic而出现的,但它也可以与遵循兼容调用协议的其他语言配合使用。

Max3D模块[编辑]

2008年,基于C++的跨平台3D引擎Max3D的源码通过BSD许可证公布。该引擎专注于OpenGL,但也为其他图形驱动程序(例如DirectX)提供了一个抽象后端,并使用了几个开源库,即Open Asset Import Library英语AssimpBoostODE

尽管在Blitz社区中,Max3D是人们热切期待的Blitz3D的继承者。但是在源码公布后不久,人们对它的兴趣和支持就消失了,最终开发陷入停顿。没有任何迹象标明Blitz Research会重新启动项目。

开源版本发布[编辑]

BlitzPlus与2014年4月28日通过zlib许可证Github上以开源形式发布。[8][9] Blitz3D随后于2014年8月3日以开源形式发布,[10][11] BlitzMax后来于2015年9月21日以开源形式发布。[12]

示例[编辑]

一个在屏幕上打印Hello World,并按任意键结束的示例:

Print "Hello World"   ; 打印至屏幕 WaitKey()             ; 暂停执行,直到按下任意键 End                   ; 结束程序 

以下声明变量并打印至屏幕的演示程序使用三种主要数据类型(字符串整数浮点):

name$        = "John"   ; 创建一个字符串变量($) age          = 36       ; 创建一个整数变量(无小数) temperature# = 27.3     ; 创建一个浮点变量(#)  print "My name is " + name$ + " and I am " + age + " years old." print "Today, the temperature is " + temperature# + " degrees."  Waitkey()               ; 暂停执行,直到按下任意键 End                     ; 结束程序 


创建一个窗口应用程序,该程序以二进制和十进制格式显示时间。关于BlitzBasic和BlitzMax版本,请参见下文:

BlitzBasic版本 BlitzMax版本
 AppTitle "Binary Clock"  Graphics 150,80,16,3   ;创建一个计时器  ;这代表主循环每秒执行两次  secondtimer=CreateTimer(2)  ;#####################################################  Repeat ;               主循环  	Hour = Left(CurrentTime$(),2)  	Minute = Mid(CurrentTime$(),4,2)  	Second = Right(CurrentTime$(),2)   	If Hour >= 12 Then PM = 1  	If Hour > 12 Then Hour = Hour - 12  	If Hour = 0 Then Hour = 12   	;如果不清屏,PM点将会在午夜过后被保留  	Cls   	Color(0,255,0) ;将PM部分的文本设置为绿色  	If PM = 1 Then Text 5,5,"PM"  	;将其余部分文本颜色设置回白色  	Color(255,255,255)   	For bit=0 To 5  		xpos=20*(6-bit)   		binaryMask=2^bit   		;时  		If (bit<4)  			If (hour And binaryMask)  				Text xpos,5,"1"  			Else  				Text xpos,5,"0"  			EndIf  		EndIf   		;分  		If (minute And binaryMask)  			Text xpos,25,"1"  		Else  			Text xpos,25,"0"  		EndIf   		;秒  		If (second And binaryMask)  			Text xpos,45,"1"  		Else  			Text xpos,45,"0"  		EndIf  	Next   	;将文本颜色设为红色,表示十进制时间  	Color(255,0,0)  	Text 5,65,"Decimal: " + CurrentTime$()  	;将其余部分文本颜色设置回白色  	Color(255,255,255)   	;等待半秒钟  	WaitTimer(secondTimer)  Forever  ;##################################################### 
AppTitle = "Binary Clock" Graphics 145,85  secondtimer = CreateTimer(2)  Repeat     Hour = CurrentTime()[..2].ToInt()     Minute = CurrentTime()[4..6].ToInt()     Second = CurrentTime()[6..].ToInt()      If Hour >= 12 Then PM = 1     If Hour > 12 Then Hour = Hour - 12     If Hour = 0 Then Hour = 12      '如果不清屏,PM点将会在午夜过后被保留     Cls      SetColor(0,255,0) '将PM部分的文本设置为绿色     If PM  = 1 Then DrawText "PM",5,5     '将其余部分文本颜色设置回白色     SetColor(255,255,255)      For bit=0 Until 6         xpos=20*(6-bit)         binaryMask=2^bit                  '时         If (bit<4)             If (hour & binaryMask)                 DrawText "1",xpos,5             Else                 DrawText "0",xpos,5             EndIf         EndIf                  '分         If (minute & binaryMask)             DrawText "1", xpos,25         Else             DrawText "0", xpos,25         EndIf                  '秒         If (second & binaryMask)             DrawText "1",xpos,45         Else             DrawText "0",xpos,45         EndIf     Next      '将文本颜色设为红色,表示十进制时间     SetColor(255,0,0)     DrawText "Decimal: " + CurrentTime(),5,65     '将其余部分文本颜色设置回白色     SetColor(255,255,255)      Flip      '等待半秒钟     WaitTimer(secondTimer)     If KeyHit(KEY_ESCAPE) Then Exit Forever 

使用Blitz编写的软件[编辑]

影响[编辑]

2011年,BRL发布了一种新的跨平台编程语言Monkey和第一个官方模块Mojo。Monkey的语法与BlitzMax类似,但它不是直接将源码编译成汇编代码,而是直接将Monkey源文件翻译成所选语言、框架或平台的源代码,例如Mac OS XiOS、Android、HTML5Adobe Flash

Monkey X的开发已经停止,取而代之的是Monkey 2,这是由Mark Sibly制作的更新版本的语言。

注释[编辑]

  1. ^ 根据新闻稿,大约为1993年[2]
  2. ^ 当地的Amiga游戏出版商

参考[编辑]

  1. ^ The Official Blitz Website. www.blitzbasic.com. (原始内容存档于2017-06-03). 
  2. ^ Blitz Basic 2. AmigaReport. [2020-04-30]. (原始内容存档于2022-03-31). 
  3. ^ AmiBlitz. GitHub. [2022-02-18]. (原始内容存档于2022-02-18). 
  4. ^ Blitz3D source now available on Github!. [2022-02-18]. (原始内容存档于2016-09-06). BlitzBasic.com Aug 2014
  5. ^ Blitz News. www.blitzbasic.com. [2007-12-12]. (原始内容存档于2008-01-26). 
  6. ^ BlitzMax update 1.26 now available!. www.blitzbasic.com. [2011-01-11]. (原始内容存档于2011-05-26). 
  7. ^ BlitzMax V132 for Windows and MacIntel now up! 互联网档案馆存檔,存档日期2011-05-26. on blitzbasic.com
  8. ^ BlitzPlus Source Code Released 互联网档案馆存檔,存档日期2016-07-16. by simonh (2014-04-29)
  9. ^ Blitz3D open sourced! 互联网档案馆存檔,存档日期2016-09-06. on Blitz3D Forums by (2014)
  10. ^ Blitz3D Now Free and Open Source! 互联网档案馆存檔,存档日期2016-07-16. by simonh (2014-08-03)
  11. ^ blitz3d页面存档备份,存于互联网档案馆) on GitHub
  12. ^ blitzmax页面存档备份,存于互联网档案馆) on GitHub
  13. ^ IGN. Worms Blast Preview 互联网档案馆存檔,存档日期2007-02-18. on ign.com

外部链接[编辑]