Hola,
Hombre, este Hilo parece pensado para cierto ¿programa? que escribí hace tiempo para ilustrar no sé qué Hilo de estos Foros. Nótese que no he tocado una coma del código para publicarlo en este Hilo:
Código Delphi
[-]
program PelotaLoca;
{$APPTYPE CONSOLE}
uses
Forms,
Windows,
Classes,
SysUtils,
Controls,
ExtCtrls,
Graphics;
const
CANTIDAD_MOVIMIENTO = 15;
var
FForm : TForm;
FShape : TShape;
type
TAuxiliar = class
private
FTimer: TTimer;
procedure TimerTick(Sender: TObject);
procedure KeyDownEvent(Sender: TObject;
var Key: Word; Shift: TShiftState);
public
constructor Create;
destructor Destroy; override;
end;
constructor TAuxiliar.Create;
begin
FTimer := TTimer.Create(nil);
FTimer.Interval := 100;
FTimer.Enabled := true;
FTimer.OnTimer := TimerTick;
end;
destructor TAuxiliar.Destroy;
begin
FTimer.Free;
inherited Destroy;
end;
procedure TAuxiliar.KeyDownEvent(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
with FShape do case Key of
VK_UP: Top := Top - CANTIDAD_MOVIMIENTO;
VK_RIGHT: Left := Left + CANTIDAD_MOVIMIENTO;
VK_DOWN: Top := Top + CANTIDAD_MOVIMIENTO;
VK_LEFT: Left := Left - CANTIDAD_MOVIMIENTO;
end;
end;
procedure TAuxiliar.TimerTick(Sender: TObject);
resourcestring
rsCaption = 'Top: %d - Left: %d';
begin
with FShape do
begin
FForm.Caption := Format(rsCaption, [Top, Left]);
if (Left > FForm.Width) then Left := 2;
if (Top > FForm.Height) then Top := 2;
if (Left < 0) then Left := (FForm.Width - Width);
if (Top < 0) then Top := (FForm.Height - Height);
if (GetKeyState(VK_UP) and $4000) > 0
then Top := Top - CANTIDAD_MOVIMIENTO;
if (GetKeyState(VK_DOWN) and $4000) > 0
then Top := Top + CANTIDAD_MOVIMIENTO;
if (GetKeyState(VK_LEFT) and $4000) > 0
then Left := Left - CANTIDAD_MOVIMIENTO;
if (GetKeyState(VK_RIGHT) and $4000) > 0
then Left := Left + CANTIDAD_MOVIMIENTO;
end;
end;
procedure Inicializar();
var
FAuxilar: TAuxiliar;
begin
FAuxilar := TAuxiliar.Create;
FForm := TForm.Create(nil);
FShape := TShape.Create(FForm);
with FForm do
begin
Width := 400;
Height := 300;
Color := clWhite;
KeyPreview := true;
BorderStyle := bsDialog;
Position := poDesktopCenter;
OnKeyDown := FAuxilar.KeyDownEvent;
end;
with FShape do
begin
Width := 20;
Height := 20;
Parent := FForm;
Brush.Color := clRed;
Pen.Color := clWhite;
Shape := stCircle;
Top := CANTIDAD_MOVIMIENTO;
Left := CANTIDAD_MOVIMIENTO;
end;
try
FForm.ShowModal;
finally
FForm.Free;
FAuxilar.Free;
end;
end;
begin
Inicializar();
end.
Reconozco que no es tan bueno como el código de Seoane, pero, es que Seoane es mucho Seoane.
Ah. Lo que hace el programa es mostrar un formulario y dentro de este una "pelota". El usuario puede mover la pelota por el formulario utilizando las teclas/flechas.