For faster navigation, this Iframe is preloading the Wikiwand page for Blitz Basic.

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

外部链接

{{bottomLinkPreText}} {{bottomLinkText}}
Blitz Basic
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?