Blame lazarus/lamps/unit1.pas

Ivan Mahonin 356e8e
unit Unit1;
Ivan Mahonin 356e8e
Ivan Mahonin 356e8e
{$mode objfpc}{$H+}
Ivan Mahonin 356e8e
Ivan Mahonin 356e8e
interface
Ivan Mahonin 356e8e
Ivan Mahonin 356e8e
uses
Ivan Mahonin 356e8e
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
Ivan Mahonin 356e8e
Ivan Mahonin 356e8e
type
Ivan Mahonin 356e8e
Ivan Mahonin 356e8e
  { TForm1 }
Ivan Mahonin 356e8e
Ivan Mahonin 356e8e
  TForm1 = class(TForm)
Ivan Mahonin 356e8e
    Button1: TButton;
Ivan Mahonin 356e8e
    procedure Button1Click(Sender: TObject);
Ivan Mahonin 356e8e
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Ivan Mahonin 356e8e
      Shift: TShiftState; X, Y: Integer);
Ivan Mahonin 356e8e
    procedure FormPaint(Sender: TObject);
Ivan Mahonin 356e8e
  private
Ivan Mahonin 356e8e
    { private declarations }
Ivan Mahonin 356e8e
  public
Ivan Mahonin 356e8e
    { public declarations }
Ivan Mahonin 356e8e
  end;
Ivan Mahonin 356e8e
Ivan Mahonin 356e8e
const
Ivan Mahonin 356e8e
  columns = 4;
Ivan Mahonin 356e8e
  rows = 4;
Ivan Mahonin 356e8e
  diameter = 40;
Ivan Mahonin 356e8e
Ivan Mahonin 356e8e
var
Ivan Mahonin 356e8e
  Form1: TForm1;
Ivan Mahonin 356e8e
  board: array[0..rows, 0..columns] of boolean;
Ivan Mahonin 356e8e
Ivan Mahonin 356e8e
implementation
Ivan Mahonin 356e8e
Ivan Mahonin 356e8e
{$R *.lfm}
Ivan Mahonin 356e8e
Ivan Mahonin 356e8e
procedure TForm1.FormPaint(Sender: TObject);
Ivan Mahonin 356e8e
var
Ivan Mahonin 356e8e
  r, c: integer;
Ivan Mahonin 356e8e
begin
Ivan Mahonin 356e8e
  for r := 0 to rows-1 do begin
Ivan Mahonin 356e8e
    for c := 0 to columns-1 do begin
Ivan Mahonin 356e8e
      if board[r, c] then begin
Ivan Mahonin 356e8e
        Canvas.Brush.Color := clBlue;
Ivan Mahonin 356e8e
      end else begin
Ivan Mahonin 356e8e
        Canvas.Brush.Color := clYellow;
Ivan Mahonin 356e8e
      end;
Ivan Mahonin 356e8e
      Canvas.Ellipse(c*diameter, r*diameter, (c+1)*diameter, (r+1)*diameter);
Ivan Mahonin 356e8e
    end;
Ivan Mahonin 356e8e
  end;
Ivan Mahonin 356e8e
end;
Ivan Mahonin 356e8e
Ivan Mahonin 356e8e
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Ivan Mahonin 356e8e
  Shift: TShiftState; X, Y: Integer);
Ivan Mahonin 356e8e
var
Ivan Mahonin 356e8e
  r, c: integer;
Ivan Mahonin 356e8e
begin
Ivan Mahonin 356e8e
  c := X div diameter;
Ivan Mahonin 356e8e
  r := Y div diameter;
Ivan Mahonin 356e8e
Ivan Mahonin 356e8e
  if (r>=0) and (c>=0) and (r
Ivan Mahonin 356e8e
    board[r, c] := not board[r, c];
Ivan Mahonin 356e8e
    if r > 0 then board[r-1, c] := not board[r-1, c];
Ivan Mahonin 356e8e
    if r < rows-1 then board[r+1, c] := not board[r+1, c];
Ivan Mahonin 356e8e
    if c > 0 then board[r, c-1] := not board[r, c-1];
Ivan Mahonin 356e8e
    if c < columns-1 then board[r, c+1] := not board[r, c+1];
Ivan Mahonin 356e8e
  end;
Ivan Mahonin 356e8e
Ivan Mahonin 356e8e
  Refresh;
Ivan Mahonin 356e8e
end;
Ivan Mahonin 356e8e
Ivan Mahonin 356e8e
procedure TForm1.Button1Click(Sender: TObject);
Ivan Mahonin 356e8e
var
Ivan Mahonin 356e8e
  i: integer;
Ivan Mahonin 356e8e
  x, y: integer;
Ivan Mahonin 356e8e
begin
Ivan Mahonin 356e8e
  for i := 0 to 100 do begin
Ivan Mahonin 356e8e
    x := round(Random * columns * diameter);
Ivan Mahonin 356e8e
    y := round(Random * rows * diameter);
Ivan Mahonin 356e8e
    FormMouseDown(nil, mbLeft, [], x, y);
Ivan Mahonin 356e8e
  end;
Ivan Mahonin 356e8e
end;
Ivan Mahonin 356e8e
Ivan Mahonin 356e8e
end.
Ivan Mahonin 356e8e