Showing posts with label Lazarus. Show all posts
Showing posts with label Lazarus. Show all posts

Wednesday, 12 August 2009

Desarrollo de Videojuegos con Delphi mediante Asphyre

Asphyre es un Framework Open Source para el desarrollo de videojuegos. El proyecto lo podemos descargar de la web de AfterWarp, una web dedicada al desarrollo de videojuegos utilizando Delphi o compiladores Free Pascal (Lazarus). El Proyecto Asphyre desarrollado por Yuriy Kotsarenko integra de forma sencilla la utilización de DirectX y OpenGL sin tener que tocar ninguno de éstos componentes. Podemos crear tanto escenários en 2D como en 3D, y la instalación de su framework es muy sencilla. Si nos descargamos la última versión de su Framework, Asphyre Sphinx, podremos ejecutar los ejemplos que vienen con la versión. Para la instalación de la librería, tenemos que dirigirnos a Tools -> Options, y en el nodo Environment Options -> Delphi Option -> Library - Win32, nos situamos en Library Path, y añadimos la siguiente ruta en la librería: C:\Asphyre\Source.

Una vez hecho ésto, podemos abrir cualquier ejemplo del componente y ejecutarlo para ver el resultado de la utilización de Asphyre.

Aquí os dejo un manual muy interesante de la utilización de Asphyre desde Developpez.com, aunque está en francés, se entiende bastante bien!.

Además, encontraremos un videojuego llamado Hasteroids, que está bastante bien:


Si miras en la carpeta "Tools" del Framework, encontraréis una utilizades muy interesantes hechas por el mismo autor y que ayudan con el desarrollo de diversos aspectos de los gráficos, ya sea la elección de un color o renderizar una fuente, aquí os dejo la lista de programas y alguna captura de pantalla:
  • AsphyreManager
  • ColorSel
  • FastTile
  • FontTool
  • MigrationTool
  • ModelConv



Wednesday, 3 June 2009

Mi primera aplicación con Lazarus y Ubuntu 9.04

Desde que desapareció Kylix, bueno, desde su falta de mantenimiento, pensaba que no iba a poder programar Pascal en Linux, suerte de Lazarus. La verdad es que es muy simple su instalación. Descargamos el paquete para linux, en este caso el lazarus-0.9.26.2.0-i386.debs.tar, y luego lo abrimos desde el instalador de paquetes. Una vez instalado lo encontraremos en el menú de aplicaciones -> Programación -> Lazarus. También podemos instalarlo desde el terminal mediante el comando:
sudo apt-get install lazarus
sudo apt-get install lazarus-ide

De esta manera la descarga de los Packages es directa.
Aquí os dejo un pantallazo del IDE con una primera aplicación:

La verdad es que tiene muchas cosas buenas, tiene los componentes básicos para la conexión a la BD, tiene componentes para trabajar con la RTTI, tiene además componentes Highlighting (esto si que es un descubrimiento ya que me he tirado un montón de tiempo creando unos para SQL, XML y Java, y resulta que ya había unos aquí). Si ejecutamos la aplicación, podemos ver como el editor que tiene marca diferente las keywords del SQL:

Una vez creada la aplicación, si miramos los ficheros que genera Lazarus crea:

Vemos como genera ejecutables para Linux, aunque lo del tamaño es peor que en Win32....23Mb????. Bueno, por lo menos tienen muchos componentes interesantes. También he probado el acceso a datos, y funciona perfectamente. Lo he probado utilizando una BD de pruebas que tengo en mySQL:

luego, con 4 componentes de acceso a datos, podemos consultar los datos de la tabla y mostrarlos en un TDBGrid:

Sobre el tema de los componentes también es factible. Nos aparece la pestaña de paquetes y podemos crear los que queramos y desde el mismo editor añadirlos a nuestro IDE, la verdad es que está muy bien. Para ser la primera vez que lo pruebo, le doy muy buena nota.


Capturar la salida de una aplicación DOS con Delphi

No os ha interesado alguna vez leer la salida estándar de una aplicación (stdout) para poder visualizar su contenido en nuestra aplicación, o simplemente para tratar el texto que devuelve? Pues bien, con Delphi lo podemos hacer. No es sencillo, pero con las herramientas necesarias si. Por ejemplo, imaginad que queremos ver el valor que devuelve ejecutar la sentencia java -version en nuestra máquina. El resultado es el siguiente:

Pues, como podemos capturar esa salida en nuestra aplicación?.

Utilizando TDosCommand. Dos Command 2.0 es un componente gratuito de Delphi. Lo podemos encontrar en Maxx's Delphi Site, y es libre de descarga. El componente es bastante fácil de instalar y de ejecutar, y mediante 3 líneas de código podemos capturar el stdout en un TMemo. El ejemplo que propongo es el siguiente:

Primero, podemos crear un bpl e instalar el fichero DosCommand.pas como un package. Pero también podemos crear un proyecto nuevo y agregarlo como fuente externa. Funciona de las 2 maneras. En ese caso, creo un nuevo proyecto, con un botón y un TMemo, y luego con el DosCommand agregado en mi proyecto escribo:




unit Unit3;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellAPi, DOsCommand, ExtCtrls;

type
TFTest = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FTest: TFTest;
dos: TDosCommand;

implementation

{$R *.dfm}

procedure TFTest.Button1Click(Sender: TObject);
begin
dos.CommandLine := 'java -version';
dos.Execute;
end;

procedure TFTest.FormCreate(Sender: TObject);
begin
memo1.Clear;
dos := TDosCommand.create(self);
dos.OutputLines := memo1.lines;
end;

procedure TFTest.FormDestroy(Sender: TObject);
begin
FreeAndNil(dos);
end;

end.




una vez escribo el comando del cual quiero capturar su salida, le doy al botón get et voilà:

Ahora ya tenemos la salida de la aplicación, pero no abusar mucho del componente, ya que utiliza hilos para poder capturar la salida de la aplicación. Si hacemos demasiadas peticiones puede ser que saturemos la pila del sistema (ya lo he intentado, y si!).

Aquí os dejo la aplicación de muestra ThundaxSTDOUT.exe, donde he puesto una textbox para entrar el comando que queráis. Aquí os dejo una muestra de la ejecución de un comando:


En la web de Lazarus, también he encontrado un componente llamado TProcess, que permite capturar la salida de un programa casi de la misma manera, utilizando un TStringList. Pero no acaba de funcionar. Os dejo los enlaces por si queréis indagar en el tema.


Lazarus, alternativa al IDE de Delphi

Lazarus es una herramienta de desarrollo rápido de aplicaciones (RAD) basada en el lenguaje de programación Pascal, disponible para los sistemas operativos Windows, GNU/Linux y Mac OS X.Es una alternativa gratuita a Delphi, desarrollada como proyecto de software libre a partir de Free Pascal. La web y la mayoría de la documentación están en inglés, pero el entorno de desarrollo (IDE) sí está traducido al español en gran parte. (wikipedia). De esta manera, podemos hacer nuestro código estándar de delphi portable, ya que con este IDE también podemos compilar nuestro proyecto, y como he comprobado, funciona bastante bien.
Para el desarrollo rápido de aplicaciones funciona muy bien, es muy manejable y con 4 clicks tienes hecha una pequeña herramienta, compilada y probada. Luego coges el ejecutable y te lo llevas donde quieras. Aunque como pega diría que el tema de la VCL aún no lo tienen muy resuelto, ya que un ejecutable simple ocupa unos 12Mb. Aquí os dejo un pantallazo de un pequeño test:


Podéis descargar la última versión del IDE en SourceForge, aquí os dejo el enlace : Download. Yo he probado la versión 0.9.26.2.