Blitz PODSTAWOWE - Blitz BASIC

BlitzBasic
BlitzBasicLogo.gif
Deweloper(zy) Badania Blitz .
Napisane w Skompilowany do C++ , ale języki są dialektami BASIC
System operacyjny Microsoft Windows
Platforma Microsoft Windows
Dostępne w język angielski
Rodzaj System tworzenia gier
Licencja licencja zlib
Stronie internetowej www .blitzbasic .com

Blitz BASIC to dialekt języka programowania pierwszych kompilatorów Blitz, opracowany przez dewelopera z Nowej Zelandii , Marka Sably. Pochodząca z języka BASIC składnia Blitza została zaprojektowana tak, aby była łatwa do opanowania dla początkujących, którzy uczą się programowania. Języki te są zorientowane na programowanie gier, ale często są wystarczająco uniwersalne, aby można je było wykorzystać w większości typów aplikacji. Język Blitz ewoluował wraz z wypuszczaniem nowych produktów, a ostatnie wcielenia oferują obsługę bardziej zaawansowanych technik programowania, takich jak orientacja obiektowa i wielowątkowość . Doprowadziło to do tego, że w późniejszych latach języki straciły przydomek BASIC.

Historia

Pierwsza iteracja języka Blitz została stworzona na platformę Amiga i wydana przez australijską firmę Memory and Storage Technology. Wracając do Nowej Zelandii , Blitz BASIC 2 został opublikowany kilka lat później (według tej informacji prasowej około 1993 roku) przez Acid Software (lokalny wydawca gier na Amigę). Od tego czasu kompilatory Blitz zostały wydane na kilka platform . Po upadku Amigi jako komercyjnej platformy, kod źródłowy Blitz BASIC 2 został udostępniony społeczności Amigi. Rozwój trwa do dziś pod nazwą AmiBlitz.

BlitzBasic

Idigicon opublikował BlitzBasic dla Microsoft Windows w październiku 2000 roku. Język zawierał wbudowane API do wykonywania podstawowych operacji graficznych 2D i audio. Po wydaniu Blitz3D, BlitzBasic jest często określany jako Blitz2D.

Rozpoznawalność BlitzBasic wzrosła, gdy w popularnych brytyjskich magazynach komputerowych, takich jak PC Format, rozpowszechniano ograniczoną liczbę „darmowych” wersji . Doprowadziło to do sporu prawnego między deweloperem a wydawcą, który ostatecznie został rozwiązany polubownie.

BlitzPlus

W lutym 2003 Blitz Research Ltd. wydała BlitzPlus również dla Microsoft Windows. Brakowało w nim silnika 3D Blitz3D, ale wprowadził nowe funkcje do strony 2D języka, implementując ograniczoną obsługę sterowania Microsoft Windows do tworzenia natywnych GUI . Rozszerzono również wsteczną kompatybilność silnika 2D, umożliwiając uruchamianie skompilowanych gier i aplikacji BlitzPlus na systemach, które mogą mieć tylko DirectX 1.

BlitzMax

BlitzMax
Paradygmat imperatywne , obiektowe , modułowe , refleksyjne
Zaprojektowany przez Zaznacz Sible
Deweloper Blitz Research Sp.
Po raz pierwszy pojawiły się 2004
Ostateczne wydanie
1,51 / 21 września 2015 ; 5 lat temu ( 21.09.2015 )
Dyscyplina pisania Statyczny , Słaby , Silny (opcjonalnie)
OS Microsoft Windows , Mac OS X , Linux
Stronie internetowej www .blitzbasic .com
Dialekty
Oficjalny BlitzMax, bmx-ng
Wpływem
BlitzBasic
Pod wpływem
Małpa

Pierwszy BlitzMax kompilator został wydany w grudniu 2004 dla Mac OS X . To sprawiło, że był to pierwszy dialekt Blitza, który można było skompilować na platformach *nix. Kompilatory dla Microsoft Windows i Linux zostały następnie wydane w maju 2005 roku. BlitzMax wprowadził największą zmianę struktury języka do nowoczesnej gamy produktów Blitz, rozszerzając system typów o koncepcje zorientowane obiektowo i modyfikując API graficzne, aby lepiej pasowało do OpenGL . BlitzMax był również pierwszym z języków Blitz, który wewnętrznie reprezentował ciągi znaków przy użyciu UCS-2 , umożliwiając natywną obsługę literałów ciągów składających się ze znaków spoza ASCII .

Niezależny od platformy zestaw poleceń BlitzMax pozwala programistom kompilować i uruchamiać kod źródłowy na wielu platformach. Jednak oficjalny kompilator i łańcuch kompilacji wygeneruje pliki binarne tylko dla platformy, na której jest wykonywany. Nieoficjalnie użytkownicy byli w stanie skompilować systemy Linux i Mac OS X z platformą Windows.

BlitzMax to także pierwsza modułowa wersja języków Blitz, poprawiająca rozszerzalność zestawu poleceń. Ponadto wszystkie standardowe moduły dostarczane z kompilatorem są typu open source i mogą być w razie potrzeby modyfikowane i ponownie kompilowane przez programistę. Oficjalny wieloplatformowy moduł GUI BlitzMax (znany jako MaxGUI) umożliwia programistom pisanie interfejsów GUI dla swoich aplikacji w systemach Linux ( FLTK ), Mac ( Cocoa ) i Windows. Różne moduły wnoszone przez użytkowników rozszerzają użycie języka poprzez owijanie takich bibliotek, jak wxWidgets , Cairo i Fontconfig , a także wybór modułów bazy danych. Dostępny jest również wybór modułów 3D innych firm, a mianowicie MiniB3D - silnik OpenGL o otwartym kodzie źródłowym, który można skompilować i używać na wszystkich trzech platformach obsługiwanych przez BlitzMax.

W październiku 2007 wydano BlitzMax 1.26, który zawierał dodatkowy moduł odbicia . BlitzMax 1.32 dostarczył nowe moduły do ​​obsługi wątków i skryptów Lua , a większość standardowych funkcji bibliotecznych została zaktualizowana tak, aby były przyjazne dla Unicode .

Blitz3D SDK

Blitz3D SDK to silnik graficzny 3D oparty na silniku Blitz3D. Został wprowadzony na rynek do użytku z C++ , C# , BlitzMax i PureBasic , jednak mógł być również używany z innymi językami zgodnymi z konwencjami wywoływania.

Moduł Max3D

W 2008 roku kod źródłowy Max3D - wieloplatformowego silnika 3D opartego na C++ - został wydany na licencji BSD . Ten silnik koncentrował się na OpenGL, ale miał abstrakcyjny backend dla innych sterowników graficznych (takich jak DirectX) i korzystał z kilku bibliotek open-source, a mianowicie Assimp , Boost i ODE .

Pomimo podekscytowania społeczności Blitz, w której Max3D jest niecierpliwie oczekiwanym następcą Blitz3D, zainteresowanie i wsparcie ucichły wkrótce po wydaniu kodu źródłowego i ostatecznie rozwój został wstrzymany. Nic nie wskazuje na to, że Blitz Research ponownie podejmie ten projekt.

Wersja open source

BlitzPlus został wydany jako open-source 28 kwietnia 2014 roku na licencji zlib na GitHub . Blitz3D pojawił się wkrótce potem i został wydany jako Open Source 3 sierpnia 2014 roku. BlitzMax został później wydany jako Open Source 21 września 2015 roku.

Przykłady

Program Hello World , który drukuje na ekranie, czeka na naciśnięcie klawisza, a następnie kończy działanie:

Print "Hello World"   ; Prints to the screen.
WaitKey()             ; Pauses execution until a key is pressed.
End                   ; Ends Program.

Program, który demonstruje deklarację zmiennych przy użyciu trzech głównych typów danych (Strings , Integers i Floats ) i wyświetla je na ekranie:

name$        = "John"   ; Create a string variable ($) 
age          = 36       ; Create an integer variable (No Suffix)
temperature# = 27.3     ; Create a float variable (#)

print "My name is " + name$ + " and I am " + age + " years old."
print "Today, the temperature is " + temperature# + " degrees."

Waitkey()               ; Pauses execution until a key is pressed.
End                     ; Ends program.


Program tworzący aplikację okienkową wyświetlającą aktualny czas w formacie binarnym i dziesiętnym. Zobacz poniżej wersje BlitzMax i BlitzBasic:

BlitzWersja podstawowa Wersja BlitzMax
 AppTitle "Binary Clock"
 Graphics 150,80,16,3

 ;create a timer that means the main loop will be
 ;executed twice a second
 secondtimer=CreateTimer(2)
 ;#####################################################
 Repeat ;               MAIN LOOP
 	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

 	;should do this otherwise the PM dot will be
 	;left up once the clock rolls past midnight!
 	Cls

 	Color(0,255,0) ;make the text green for the PM part
 	If PM = 1 Then Text 5,5,"PM"
 	;set the text colour back to white for the rest
 	Color(255,255,255)

 	For bit=0 To 5
 		xpos=20*(6-bit)

 		binaryMask=2^bit

 		;do hours
 		If (bit<4)
 			If (hour And binaryMask)
 				Text xpos,5,"1"
 			Else
 				Text xpos,5,"0"
 			EndIf
 		EndIf

 		;do the minutes
 		If (minute And binaryMask)
 			Text xpos,25,"1"
 		Else
 			Text xpos,25,"0"
 		EndIf

 		;do the seconds
 		If (second And binaryMask)
 			Text xpos,45,"1"
 		Else
 			Text xpos,45,"0"
 		EndIf
 	Next

 	;make the text red for the decimal time
 	Color(255,0,0)
 	Text 5,65,"Decimal: " + CurrentTime$()
 	;set the text back to white for the rest
 	Color(255,255,255)

 	;will wait half a second
 	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

         'should do this otherwise the PM dot will be
         'Left up once the clock rolls past midnight!
         Cls

         SetColor(0,255,0) 'make the text green For the PM part
         If PM  = 1 Then DrawText "PM",5,5
         'set the text colour back To white For the rest
         SetColor(255,255,255)

         For bit=0 Until 6
                 xpos=20*(6-bit)
                 binaryMask=2^bit
                 'do hours
                 If (bit<4)
                         If (hour & binaryMask)
                                 DrawText "1",xpos,5
                         Else
                                 DrawText "0",xpos,5
                         EndIf
                 EndIf

                 'do the minutes
                 If (minute & binaryMask)
                         DrawText "1", xpos,25
                 Else
                         DrawText "0", xpos,25
                 EndIf

                 'do the seconds
                 If (second & binaryMask)
                         DrawText "1",xpos,45
                 Else
                         DrawText "0",xpos,45
                 EndIf
         Next

         'make the text red For the decimal time
         SetColor(255,0,0)
         DrawText "Decimal: " + CurrentTime(),5,65
         'set the text back To white For the rest
         SetColor(255,255,255)

 	 Flip

         'will wait half a second
         WaitTimer(secondTimer)
 	 If KeyHit(KEY_ESCAPE) Then Exit
 Forever

Oprogramowanie napisane przy użyciu BlitzBasic

Dziedzictwo

W 2011 roku firma BRL wydała nowy wieloplatformowy język programowania o nazwie Monkey i swój pierwszy oficjalny moduł o nazwie Mojo. Monkey ma podobną składnię do BlitzMax, ale zamiast kompilować bezpośrednio do kodu asemblera, tłumaczy pliki źródłowe Monkey bezpośrednio na kod źródłowy dla wybranego języka, frameworka lub platformy, np. Windows, Mac OS X , iOS , Android, HTML5 i Adobe Flash .

Rozwój Monkey X został wstrzymany na rzecz Monkey 2, zaktualizowanej wersji języka autorstwa Marka Sably.

Bibliografia

Linki zewnętrzne