BlitzBASIC





Disponible para Windows, Mac y Linux. El precio es de 79.-$ . Esta empresa se dedica al desarrollo de videojuegos y tienen varias aplicaciones para desarrollo 3D.  Entre los programas de ejemplo que trae hay algunos juegos muy divertidos.





lenguaje BASIC mejorado

  • BlitzMax es básico ... pero con algunos giros, incluyendo:
  • punteros de función
  • arrays totalmente dinámico
  • Herencia y polimorfismo
  • 'de referencia' parámetros de la función
  • Byte, short, int, long, float y tipos de datos numéricos dobles
  • Matriz y la cadena de corte
  • Sistema flexible "recogida" para hacer frente a las listas enlazadas, etc.
  • la manipulación del puntero bajo nivel
  • cuerdas UTF16
  • La capacidad de datos y acceder a ella binarios 'Incbin' con tanta facilidad como si se tratara de un archivo regular
  • soporte de idiomas externa para la interconexión con C / C ++ / ObjectiveC o código ensamblador



soporte multiplataforma

BlitzMax ha sido diseñado desde el principio para soporte multiplataforma, y ​​los programas de BlitzMax puede ser compilado para Windows, Mac OS X y Linux. La licencia es BlitzMax 'todo en uno' - comprar BlitzMax una vez y ejecutar sus programas en las tres plataformas!


Diseño modular

BlitzMax se basa en gran medida en torno a la idea de módulos , colecciones de comandos almacenados en archivos especiales. Usted puede agregar sus propios módulos para el sistema, lo que le permite volver a utilizar limpiamente código en sus propios proyectos. Los módulos son también una gran manera de distribuir las bibliotecas de comandos, y Blitz Investigación tiene muchos módulos extrañas y maravillosas en fila para futuras versiones!


Fácil de usar conjunto de comandos 2D

BlitzMax incluye el módulo Max2D que contiene un conjunto de muy fácil de usar comandos 2D. En MacOS X y Linux, Max2D utiliza la API de OpenGL, mientras que en PC con Windows usted tiene la opción de utilizar la API de OpenGL o DirectX. Tanto OpenGL y DirectX usan hardware 3D para dibujar gráficos en la pantalla, lo que permite avanzados efectos en tiempo real, tales como mezcla, rotación y escalado.


inteligente sistema de construcción

BlitzMax le permite dividir un proyecto en varios archivos fuente que puede ser pre-compilados para reducir masivamente el tiempo de desarrollo. Este proceso es manejado automáticamente por el BMK incluido ( 'Blitz hacer') y la utilidad es completamente transparente para el desarrollador.


IDE y depurador

El paquete incluye BlitzMax un "entorno integrado de desarrollo '(IDE), que se utiliza para entrar en sus programas, y un depurador para rastrear errores.


compatibilidad con OpenGL directa

Gracias al módulo de OpenGL, se puede utilizar para la programación OpenGL BlitzMax directa.

Además, un módulo basado en la popular librería 'Glew' proporciona soporte para todas las extensiones OpenGL.

Toneladas de código fuente incluido





' Ugly -- just playing around!

Global FlameList:TList = New TList
Global ShotList:TList = New TList

Type Flame
Field x#, y#
Field image
Field ALPHA#
Field scale#
Field ys#
End Type

Type Shot
Field x#, y#
Field xs#, ys#
Field ALPHA#
End Type

Graphics 640, 480

AutoImageFlags MASKEDIMAGE

SetClsColor 16, 32, 64

SetMaskColor 255, 0, 255

player = LoadImage ("gfx/boing.png")
MidHandleImage player

flm = LoadImage ("gfx/flame.png")
MidHandleImage flm

sky = LoadImage ("gfx/sky.png")
grass = LoadImage ("gfx/grass.png")
rock = LoadImage ("gfx/rock.png")
water = LoadImage ("gfx/water.png")

MidHandleImage grass
MidHandleImage rock
MidHandleImage water

x# = GraphicsWidth () / 2
y# = GraphicsHeight () / 2

speed# = 0

playerscale# = 0.25

' Map tiles...

MAPXS = 50
MAPYS = 30




Local map [MAPXS, MAPYS]

For mapx = 0 To MAPXS - 1

For mapy = 0 To MAPYS - 1

Select Rand (0, 3)
Case 0
image = 0
Case 1
image = grass
Case 2
image = rock
Case 3
image = water
End Select

map [mapx, mapy] = image

Next

Next

GW2 = GraphicsWidth () / 2
GH2 = GraphicsHeight () / 2

ShotSpeed# = 4

Repeat

mx = MouseX ()
my = MouseY ()

Cls

SetBlend SOLIDBLEND
TileImage sky

ang# = ATan2 (my - GH2, mx - GW2)

x = x + Cos (ang) * speed
y = y + Sin (ang) * speed

If KeyHit (KEY_SPACE)
s:Shot = New Shot
s.x = (x + Cos (ang) * (ImageWidth (player) * playerscale) / 2)
s.y = (y + Sin (ang) * (ImageHeight (player) * playerscale)/ 2)
s.xs = Cos (ang) * (speed + ShotSpeed)
s.ys = Sin (ang) * (speed + ShotSpeed)
s.ALPHA = 1
ShotList.AddLast s
EndIf

If MouseDown (1)
If speed < 10 Then speed = speed + 0.1
If Rand (1, 100) > (100 - speed * 2.5)
f:Flame = New Flame
f.x = Rand (1, 8) + (x - Cos (ang) * (ImageWidth (player) * playerscale) / 2)
f.y = Rand (1, 8) + (y - Sin (ang) * (ImageHeight (player) * playerscale)/ 2)
f.ys = 0
f.image = flm
f.ALPHA = 1
f.scale = 0.5
FlameList.AddLast f
EndIf
EndIf

SetBlend MASKBLEND

SetRotation 0
SetScale 1, 1

For mapx = 0 To MAPXS - 1
For mapy = 0 To MAPYS - 1
If map [mapx, mapy]
DrawImage map [mapx, mapy], mapx * 128 - x, mapy * 128 - y
EndIf
Next
Next

SetColor 255, 255, 255
SetBlend ALPHABLEND

Local p:Flame
For p=EachIn FlameList
p.ys = p.ys - 0.05
p.y = p.y + p.ys
SetAlpha p.ALPHA
SetScale p.scale, p.scale
SetRotation 0
DrawImage p.image, GW2 + p.x - x, GH2 + p.y - y
p.ALPHA = p.ALPHA - 0.01
p.scale = p.scale + Rnd (0.0025, 0.05)
If p.ALPHA < 0
FlameList.remove p
EndIf
Next

SetColor 255, 255, 0

For s=EachIn ShotList
s.x = s.x + s.xs
s.y = s.y + s.ys
SetAlpha s.ALPHA
SetRotation 0
SetScale 1, 1
DrawRect GW2 + s.x - x, GH2 + s.y - y, 8, 8
s.ALPHA = s.ALPHA - 0.01
If s.ALPHA < 0
ShotList.remove s
EndIf
Next

SetBlend ALPHABLEND
SetAlpha 0.25
SetScale 0.25, 0.25
SetColor 0, 0, 0
sp2 = speed * 2
DrawPointedImage player, GW2 + sp2, GH2 + sp2, mx + sp2, my + sp2

SetColor 255, 255, 255
SetBlend MASKBLEND
SetScale 0.25, 0.25
SetAlpha 1
DrawPointedImage player, GW2, GH2, mx, my

speed = speed - 0.075; If speed < 0 Then speed = 0

SetRotation 0
SetScale 1, 1
SetColor 0, 0, 0
DrawText "Hold left mouse button to move and hit space to fire...", 21, 21
SetColor 255, 255, 255
DrawText "Hold left mouse button to move and hit space to fire...", 20, 20

Flip

Until KeyHit (KEY_ESCAPE)

End

' Assumes image is oriented 'upwards' by default -- fiddle with
' the "+ 90" part on the first line if not!

Function DrawPointedImage (image, x#, y#, targetx#, targety# )
ang# = ATan2 (targety - y, targetx - x) + 90
SetRotation ang
DrawImage image, x, y
End Function




http://www.blitzbasic.com/Products/blitzmax.php

http://www.blitzbasic.com/


No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.