Plan je taky, vytvorit pole tehliciek, z nich random prvky podla usporiadania ako tu:
//obrázky patria do prílohy
A potom poriesit aby boli kliknutelne len tie bez suseda a aby sa znicili len obe rovnake, ale tapem v tom...
Znicohonic mi vyskocilo toto:
//obrázky patria do prílohy
a vazne netusim, kde je chyba, ked predtym to fungovalo...
Tu je unit, ktory pracuje s polom:
Kód: Vybrať všetko
unit TileUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
Menus, StdCtrls;
type
{ TTile }
TTile=class(Tobject)
public
x,y:integer;
constructor create(xx,yy:integer);
procedure vykresli;
destructor destroy; override;
end;
implementation
{ TTile }
var
hracia_plocha:array of tbitmap;
constructor TTile.create(xx, yy: integer);
var
i,j:integer;
tile: tbitmap;
begin
hracia_plocha:=nil;
for i:=1 to 9 do begin
for j:=1 to 4 do begin
SetLength(hracia_plocha, Length(hracia_plocha) + 1);
hracia_plocha[i]:= TBitmap.Create;;
hracia_plocha[i].LoadFromFile(Format('Obrazky/MJs%d.bmp',[i]));
end;
end;
for i:=1 to 9 do begin
for j:=5 to 8 do begin
SetLength(hracia_plocha, Length(hracia_plocha) + 1);
hracia_plocha[i]:=TBitmap.Create;
hracia_plocha[i].LoadFromFile(Format('Obrazky/MJt%d.bmp',[i]));
end;
end;
for i:=1 to 9 do begin
for j:=10 to 13 do begin
SetLength(hracia_plocha, Length(hracia_plocha) + 1);
hracia_plocha[i]:=TBitmap.Create;
hracia_plocha[i].LoadFromFile(Format('Obrazky/MJw%d.bmp',[i]));
end;
end;
for i:=1 to 4 do begin
for j:=14 to 17 do begin
SetLength(hracia_plocha, Length(hracia_plocha) + 1);
hracia_plocha[i]:=TBitmap.Create;
hracia_plocha[i].LoadFromFile(Format('Obrazky/MJf%d.bmp',[i]));
end;
end;
for i:=1 to 3 do begin
for j:=18 to 21 do begin
SetLength(hracia_plocha, Length(hracia_plocha) + 1);
hracia_plocha[i]:=TBitmap.Create;
hracia_plocha[i].LoadFromFile(Format('Obrazky/MJd%d.bmp',[i]));
end;
end;
for i:=1 to 4 do begin
SetLength(hracia_plocha, Length(hracia_plocha) + 1);
hracia_plocha[i]:=TBitmap.Create;
hracia_plocha[i].LoadFromFile(Format('Obrazky/MJh%d.bmp',[i]));
end;
for i:=1 to 4 do begin
SetLength(hracia_plocha, Length(hracia_plocha) + 1);
hracia_plocha[i]:=TBitmap.Create;
hracia_plocha[i].LoadFromFile(Format('Obrazky/MJk%d.bmp',[i]));
end;
end;
procedure TTile.vykresli;
begin
end;
destructor TTile.destroy;
begin
inherited destroy;
end;
end.Kód: Vybrať všetko
unit HraUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
Menus, StdCtrls, TileUnit;
type
{ TForm1 }
TForm1 = class(TForm)
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
MainMenu1: TMainMenu;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
MenuItem5: TMenuItem;
MenuItem6: TMenuItem;
MenuItem7: TMenuItem;
MenuItem8: TMenuItem;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure MenuItem4Click(Sender: TObject);
procedure MenuItem5Click(Sender: TObject);
procedure MenuItem6Click(Sender: TObject);
procedure MenuItem7Click(Sender: TObject);
procedure MenuItem8Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
Sec, Min, Hod: Integer;
X,Y : Integer;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
var
Pozadie: TBitmap;
begin
Pozadie:=TBitmap.Create;
Pozadie.LoadFromFile('pozadie.bmp');
Image1.Picture.Bitmap.Height := Image1.Height;
Image1.Picture.Bitmap.Width := Image1.Width;
Image1.Canvas.StretchDraw(Image1.ClientRect, Pozadie);
Pozadie.Free;
end;
procedure TForm1.MenuItem4Click(Sender: TObject);
var
Kocky: TTile;
begin
Label5.Caption := TimeToStr(Time);
Timer1.Enabled := True;
Kocky := TTile.Create(X,Y);
end;
procedure TForm1.MenuItem5Click(Sender: TObject);
begin
end;
procedure TForm1.MenuItem6Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.MenuItem7Click(Sender: TObject);
begin
ShowMessage('Z hracieho poľa odstraňuješ vždy dva voľné kamene s rovnakými symbolmi. Voľné kamene sú tie, ktoré na sebe nemajú žiadne ďalšie kamene a majú miesto vľavo alebo vpravo. Systém bodovania: za každý pár 10 bodov, za každý ďalší s rovnakou hodnotou bonus 10 bodov.');
end;
procedure TForm1.MenuItem8Click(Sender: TObject);
begin
showmessage('***');
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var StaryCas: TTime;
begin
StaryCas := StrToTime(Label5.Caption);
Label2.Caption := TimeToStr((Time - StaryCas));
end;
end.