«Он бес» ойынының ережелері.
Кездейсоқ сандардың датчигінің көмегімен өлшемі 4*4 болатын шаршы алаңда нөмірлері 1-ден 15-ке дейін болатын 15 фишка орналастырылған. Бір бос позиция бар. Фишкаларды нөмірлердің өсуі бойынша орналастыру керек. Фишканы тек қана көрші бос позицияға жылжытуға болады.
6
|
5
|
7
|
8
|
|
11
|
13
|
9
|
3
|
10
|
4
|
15
|
14
|
1
|
2
|
12
|
Программа коды.
unit Unit 1; interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids,
type
TForm1 = class(TForm) StringGrid1: TStringGrid; Panel1:TPanel; BitBtn1:TBitBtn; BitBtn2: TBitBtn;
procedure StringGrid1Click(Sender: TObject);
procedure StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure N6Click(Sender: TObject); private
{ Private declarations } function IsFull:Boolean; public
{ Public declarations } end; var
Form 1: TForm1; x 1 ,y 1 ,col,row:integer; a: array [0..14] of integer;
b: string;
implementation
uses Unit4; {$R *.DFM}
function TForm 1 .IsFull :boolean; //бос ұяшықтардың бар болуына тексеру
var i,j,k: integer;
h:boolean;
begin
k:=l;h:=true;
for i:=0 to 3 do
for j:=0 to 3 do
begin
if stringgridl.cells[j,i]o" then if strtoint(stringgridl.cells[j,i])ok then h:=false;
inc(k);
end;
if h then IsFull:=true else IsFull:=False; end;
procedure TForml.StringGridlClick(Sender: TObject); //тышқанды шерту кезіндегі орын ауыстыратын ұяшықтарды таңдау процедурасы
begin
stringgrid1 .MouseToCell(x1,у1 ,col,row); if col-l>=0 then if stringgridl.cells[col-l,row]=" then begin stringgrid1.cells[col-l,row]:=stringgridl.cells[col,row];
stringgrid1 .cells[col,row]:=";
end;
if row-l>=0 then if stringgridl.cells[col,row-l]=" then begin
stringgrid1 .cells[col,row-1 ] :=stringgrid1 .cellsfcol,row]; stringgrid1.cells[col,row]:="; end;
if col+l<=3 then if stringgrid1.cells[col+l,row]=" then begin stringgrid1.cells[col+1 ,row] :=stringgrid.cells[col,row]; stringgrid1.cells[col,row]:="; end;
if row+l<=3 then if stringgrid1.cells[col,row+l]=" then begin stringgrid1.cells [col,row+1 ] :=stringgrid 1 xells[col,row]; stringgrid1.cells[col,row]:="; end;
if IsFull then
begin showmessage (Сіз жеңдіңіз!'); BitBtnl. caption :='Ойынды жалғастыру'; end;end;
procedure TForml.StringGridlMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); //ұяшықтардың координаталарын анықтау begin xl:=x;
yi:=y;
end;
procedure TForml.BitBtnlClick(Sender: TObject); //1ден 15-ке дейін ұяшықтарды нөмірлермен толтыру
var
k,i,j,l: integer; label 1;
function isin (k:integer):boolean; //бірдей сандардың бар болуына тексеру
var
g:integer; h:boolean; begin h:=true;
for g:=0 to 14 do
if a[g]=k then h:=false;
if h then isin:=true else isin:=false;
end; begin
randomize;
fori:=Oto 14doa[i]:=-l;
k:=0;
while k<> 16 do begin
1: l:=random(16); if not isin(l) then goto 1; a[k]:=l;k:=k+l; end;
k:=0;
for i:=0 to 3 do
for j:=0 to 3 do
begin
if a[k]<>0 then stringgridl.cells[ij]:=inttostr(a[k]);
if a[k]=0 then stringgridl.cells[i,j]:="; k:=k+l; end;
BitBtnl .Caption:='CBPOC; end;
procedure TForml.BitBtn2Click(Sender: TObject); //программадан шығу
begin
if MessageDlg('BH уверены?',mtConfirmation, [mbYes, mbNo], 0) =
mrYes then
close; end;
procedure TForml.N6Click(Sender: TObject); // программадан шығу
begin
if MessageDlg(Сіз сенімдісізбе?' ,mtConfirmation, [mbYes, mbNo], 0) =
mrYes then close; end; end.
Компоненттер қасиетті: object StringGridl: TStringGrid
Left = 8
Top = 8
Width = 497
Height =297
Color = clNavy
ColCount = 4
DefaultColWidth=120
DefaultRowHeight = 67
FixedCols = 0
RowCount = 4
FixedRows = 0
Font.Charset = RUSSIAN_CHARSET
Font.Color = clRed
Font.Height = -64
Font.Name = 'Arial'
Font.Style = ffsBold, fsltalic]
ParentFont = False
TabOrder = 0
OnClick = StringGridl Click
OnMouseMove = StringGridlMouseMove
object BitBtn2: TBitBtn
Left = 264 Top = 8 Width =145 Height = 25 Caption ='Шығу'
Font.Charset = DEFAULTCHARSET
Мысал 19. Еркін массив берілген. 5-ке тең элементтерді 0-мен алмастыру.
Формаға Additional парағында орналасқан екі StringGrid және Bitbtn компоненттерін кірістіріңіз.
Тапсырманы орындау технологиясы:
Компоненттер
|
Объектілер инспекторындағы өзгертулер
|
StringGrid 1
StringGrid 2
|
FixedCols: 0
FixedRows: 0
RowCount: 4
ColCount: 4
|
Bitbtn 1
|
Caption: Массив
|
Label 1
|
Caption: Енгізілетін массив
|
Label 2
|
Caption: Алынған массив
|
Достарыңызбен бөлісу: |