ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅, ΠΎΡ‡Π΅Π½ΡŒ быстро...
Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ вмСстС Π΄ΠΎ ΠΏΠΎΠ±Π΅Π΄Ρ‹

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. 
Π˜Π³Ρ€Π° "ΠŸΡΡ‚Π½Π°ΡˆΠΊΠΈ"

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΊ-Ρ‚ΠΎ «ΠΎΠΆΠΈΠ²ΠΈΡ‚ΡŒ» ΠΈΠ³Ρ€Ρƒ, трСбуСтся Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС — Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠ³ΠΎ чСловСчСскому Π³Π»Π°Π·Ρƒ ΠΈ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΠΏΠ»Π°Π²Π½ΠΎΠ³ΠΎ двиТСния потрСбуСтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TTimer. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ Π² Π»ΡŽΠ±ΠΎΠΌ мСстС Ρ„ΠΎΡ€ΠΌΡ‹. УстановитС Π΅Π³ΠΎ свойство Interval Ρ€Π°Π²Π½Ρ‹ΠΌ 1. Π—Π°Ρ‚Π΅ΠΌ Π² Π΅Π³ΠΎ СдинствСнном событии OnTimer Π² Object Inspector Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ move ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Enter… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π˜Π³Ρ€Π° "ΠŸΡΡ‚Π½Π°ΡˆΠΊΠΈ" (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€Ρ‹ «ΠŸΡΡ‚Π½Π°ΡˆΠΊΠΈ» ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»Π°ΡΡŒ срСда Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования Delphi 7. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΠΎΠΊΠΎΠ½ (рисунок 2.1).

рабочая Π·ΠΎΠ½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Рисунок 2.1 — рабочая Π·ΠΎΠ½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

НастраиваСм Ρ„ΠΎΡ€ΠΌΡƒ: Ρ€Π°Π·ΠΌΠ΅Ρ€, Ρ†Π²Π΅Ρ‚:

Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ располагаСтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TPanel со ΡΠ²ΠΎΠΉΡΡ‚Π²Π°ΠΌΠΈ BevelInner ΠΈ BevelOuter, Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ bvLowered, для создания эффСкта Π±ΠΎΡ€Π΄ΡŽΡ€Π° ΠΏΠΎ ΠΊΡ€Π°ΡΠΌ Ρ„ΠΎΡ€ΠΌΡ‹. Π—Π°Ρ‚Π΅ΠΌ Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ панСль ставится Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° панСль мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π° со ΡΠ²ΠΎΠΉΡΡ‚Π²ΠΎΠΌ BevelOuter Ρ€Π°Π²Π½Ρ‹ΠΌ bvRaised, BevelInner —bvLowered, Π° Ρ†Π²Π΅Ρ‚ Color —clBlack. Π­Ρ‚Π° вторая панСль Π±ΡƒΠ΄Π΅Ρ‚ Ρ„ΠΎΠ½ΠΎΠΌ для ΠΊΠ½ΠΎΠΏΠΎΠΊ с Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ. Π—Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ TButton ΠΈΠ»ΠΈ TSpeedButton) с Π½Π°Π·Π²Π°Π½ΠΈΡΠΌΠΈ about, game, exit ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TSpeedButton). РасполоТСниС ΠΈΡ… ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π΅ ΡΠ°ΠΌΡ‹Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΠΊΠΈ с Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ. Π­Ρ‚Ρƒ Ρ€ΠΎΠ»ΡŒ ΠΈΠ³Ρ€Π°ΡŽΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ TButton. РасполоТитС ΠΈΡ… Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΊΠ½ΠΎΠΏΠΊΠ° с Ρ†ΠΈΡ„Ρ€ΠΎΠΉ (Caption) 1 Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ имя (Name) Button1, ΠΊΠ½ΠΎΠΏΠΊΠ° 2 —Button2 ΠΈ Ρ‚. Π΄. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ. Объясняю, ΠΏΠΎΡ‡Π΅ΠΌΡƒ. ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ ΠΎΠ½ Π°Π²Ρ‚оматичСски заносится Π² ΡΠΏΠΈΡΠΎΠΊ (массив) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ индСкс начиная с 0. Π’ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ взаимодСйствиС с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΈΡ… ΠΈΠ½Π΄Π΅ΠΊΡΡ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли Ρƒ Π²Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° с ΠΈΠΌΠ΅Π½Π΅ΠΌ Button1 Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Caption 2, Π²Π°ΠΌ просто Π±ΡƒΠ΄Π΅Ρ‚ слоТнСС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½Π΅ΠΉ. Π§Ρ‚ΠΎ касаСтся Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠ½ΠΎΠΏΠΎΠΊ, Ρ‚ΠΎ Ρ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ» ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Heigth ΠΈ Width ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎ 50. Π”Π°, Π΅Ρ‰Π΅. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ индСкс ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠΉ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅, Π² Π΅Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ события (Event), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, OnClick, Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅:

form1.caption:=inttostr ((sender as tbutton).componentindex);

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Π΅Π΅ ΠΈΠ½Π΄Π΅ΠΊΡ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹. ΠŸΠΎΡ‚ΠΎΠΌ эту строчку ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° интСрфСйс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π³ΠΎΡ‚ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ нСпосрСдствСнно ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. ОпишСм Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ модуля. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ var (Ρ‚Π°ΠΌ, Π³Π΄Π΅ написано Form1: TForm1) Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅:

a:array[1.16]of byte;

i, k, fl, rn, p, m:byte;

x, y, x1,y1,num, pos, lr, td, lr1, td1:integer;

flag:boolean;

(Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… я Π±ΡƒΠ΄Ρƒ ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ Π΄Π°Π»Π΅Π΅). ПослС этого Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ массив случайных чисСл ΠΎΡ‚ 1 Π΄ΠΎ 16 Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΠ»ΠΈΡΡŒ. ΠŸΠΎΡ‚ΠΎΠΌ ΠΏΠΎ ΡΡ‚ΠΎΠΌΡƒ массиву Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ с Ρ‡ΠΈΡΠ»Π°ΠΌΠΈ. Π‘Π»ΡƒΡ‡Π°ΠΉΠ½Ρ‹Π΅ числа Π±ΡƒΠ΄Π΅ΠΌ Π·Π°Π½ΠΎΡΠΈΡ‚ΡŒ Π² ΠΌΠ°ΡΡΠΈΠ² a. Π¦ΠΈΡ„Ρ€Π° 16 Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΡƒΡΡ‚ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° заполнСния массива случайными числами выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

procedure rndarr;

begin.

for k:=1 to 16 do a[k]: =0;

randomize;

i:=1;

repeat.

rn:=random (16)+1;

fl:=0;

k:=1;

while (a[k]rn) and (k17) do inc (k);

if k=17 then begin a[i]: =rn;

Inc (i);

end;

until i=17;

end;

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π΅Π»Π°Π΅ΠΌ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ массива. На ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ³Ρ€Ρ‹. НапримСр, Ρ‚ΠΎΡ‚ ΠΆΠ΅ тСтрис: имССтся Π½Π΅ΠΊΠΈΠΉ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив (стакан), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½ΡƒΠ»ΠΈ — пустыС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ — ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΠΊΠΈ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… строятся Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ тСтриса. Π”Π°Π»Π΅Π΅ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ эти Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ, ΠΈ ΠΌΠ°ΡΡΠΈΠ² выводится Π½Π° ΡΠΊΡ€Π°Π½ с Π·Π°ΠΌΠ΅Π½ΠΎΠΉ 0 ΠΈ 1 Π½Π° Π³Ρ€Π°Ρ„ичСскиС элСмСнты. Π­Ρ‚ΠΎ повторяСтся нСсколько Ρ€Π°Π·, Ρ‡Ρ‚ΠΎ создаСт эффСкт падСния Ρ„ΠΈΠ³ΡƒΡ€. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС всС Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: всС пСрСмСщСния производятся Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, Π° Π² ΡΠΎΠΎΡ‚вСтствии числам ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ сами «ΠΏΡΡ‚Π½Π°ΡˆΠΊΠΈ». Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ это ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ элСмСнты массива, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ индСксам ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²-ΠΊΠ½ΠΎΠΏΠΎΠΊ с Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ. Π—Π°Ρ‚Π΅ΠΌ происходит ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΡΡ‚ΠΈΠΌ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ ΠΏΠΎ ΠΈΡ… ΠΈΠ½Π΄Π΅ΠΊΡΡƒ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΈΡ… ΡΠΎΠΎΡ‚вСтствСнно значСниям Π² ΠΌΠ°ΡΡΠΈΠ²Π΅. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ элСмСнтом массива являСтся число 15, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠ° с Ρ†ΠΈΡ„Ρ€ΠΎΠΉ 15 ΠΈ Ρ‚. Π΄. Π’ΠΎΡ‚ эта ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°:

procedure drawarr;

begin.

p:=0;

for i:=0 to 3 do.

for k:=0 to 3 do.

begin.

p:=p+1;

if a[p]16 then.

begin.

with TButton (form1.components[a[p]+5]) do.

begin.

left:=k*50+2;

top:=i*50+2;

end;

end;

end;

end;

Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ ΠΌΠ΅Π½Ρ пСрвая ΠΊΠ½ΠΎΠΏΠΊΠ° Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠΌΠ΅Π΅Ρ‚ индСкс 6, Ρ‚ΠΎ Ρ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ ΠΏΡ€ΠΈΠ±Π°Π²Π»ΡΡŽ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° число 5, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… ΠΈΠ½Π΄Π΅ΠΊΡΡ‹:

НачнСм Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ событий. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΈΠ· Π½ΠΈΡ… — ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события OnClick ΠΊΠ½ΠΎΠΏΠΊΠΈ (TSpeedButton) «ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ». Π”Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ ΡΡ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅. ΠŸΡ€ΠΈ этом откроСтся Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° с Ρ‚Π°ΠΊΠΈΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹:

procedure TForm1. SpeedButton2Click (Sender: TObject);

begin.

rndarr;

drawarr;

form1.speedbutton2.caption:='ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Π·Π°Π½ΠΎΠ²ΠΎ';

end;

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ» происходит гСнСрация массива случайных чисСл ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ rndarr, Π·Π°Ρ‚Π΅ΠΌ — Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ с Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ соотвСтствСнно числам Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ drawarr ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ названия ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Π½Π° ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Π·Π°Π½ΠΎΠ²ΠΎ.

ΠŸΡ€Π΅Π΄ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ этап. НуТно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ с Ρ†ΠΈΡ„Ρ€ΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ»ΠΎΡΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΅Π΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ, Ρ‚. Π΅. Ρ‚ΠΎ ΠΌΠ΅ΡΡ‚ΠΎ, Π³Π΄Π΅ Π½Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Для этого ΠΊΠ»Π°Ρ†Π½ΠΈΡ‚Π΅ Π΄Π²Π°ΠΆΠ΄Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ 15 ΠΈ Π² ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΠ΅ΠΉΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ события OnClick (ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Ρ€Π°Π·) ΠΌΠ΅ΠΆΠ΄Ρƒ Begin ΠΈ End Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅:

if flag then exit; {Ссли flag=true — Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹}

pos:=0;m:=0;num:=0;

num:=(sender as tbutton).componentindex-5; {num — Π½ΠΎΠΌΠ΅Ρ€ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ}

for i:=1 to 16 do if a[i]=num then pos:=i; {ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΅Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² массивС}

{ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ направлСния двиТСния}

if (pos-1>0)and(pos-14)and(pos-18)and(pos-112)and(a[pos-1]=16)then m:=1;

if (pos+1<17)and(pos+15)and(pos+19)and(pos+113)and(a[pos+1]=16)then m:=2;

if (pos-4>0)and(a[pos-4]=16)then m:=3;

if (pos+4<17)and(a[pos+4]=16)then m:=4;

if m=0 then exit; {Ссли Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΊΠ½ΠΎΠΏΠΊΠΈ пустой ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π½Π΅Ρ‚ — Π²Ρ‹Ρ…ΠΎΠ΄}

flag:=true; {установливаСм Ρ„Π»Π°Π³, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ° Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ}

lr1:=(sender as tbutton).left; {сохраняСм Π² lr1 ΠΈ td1 Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹}

td1:=(sender as tbutton).top;

lr:=0;td:=0;

form1.move (sender); {Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ пСрСмСщСния ΠΊΠ½ΠΎΠΏΠΊΠΈ}

Π’ Object Inspector Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Events для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ½ΠΎΠΏΠΎΠΊ с Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² события OnClick ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ эту ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ любой ΠΊΠ½ΠΎΠΏΠΊΠΈ с Ρ†ΠΈΡ„Ρ€ΠΎΠΉ. Π’ ΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ опрСдСляСтся, Π΅ΡΡ‚ΡŒ Π»ΠΈ рядом с Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ пустая позиция. Если таковая слСва, Ρ‚ΠΎ m:=1, справа —m:=2, свСрху —m:=3, снизу —m:=4. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ «ΡΠ»Π΅Π²Π° ΠΈΠ»ΠΈ справа» происходит ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Ρ‡Π΅Ρ‚Π° ΠΈΠ»ΠΈ прибавлСния ΠΊ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ «ΡΠ²Π΅Ρ€Ρ…Ρƒ ΠΈΠ»ΠΈ снизу» — Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Ρ‡Π΅Ρ‚ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ 4. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Flag слуТит для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, двиТСтся Π»ΠΈ какая-Π»ΠΈΠ±ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Если двиТСтся — ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° пСрСмСщСния ΠΊΠ½ΠΎΠΏΠΊΠΈ form1. move описана Π΄Π°Π»Π΅Π΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΊ-Ρ‚ΠΎ «ΠΎΠΆΠΈΠ²ΠΈΡ‚ΡŒ» ΠΈΠ³Ρ€Ρƒ, трСбуСтся Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС — Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠ³ΠΎ чСловСчСскому Π³Π»Π°Π·Ρƒ ΠΈ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΠΏΠ»Π°Π²Π½ΠΎΠ³ΠΎ двиТСния потрСбуСтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TTimer. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ Π² Π»ΡŽΠ±ΠΎΠΌ мСстС Ρ„ΠΎΡ€ΠΌΡ‹. УстановитС Π΅Π³ΠΎ свойство Interval Ρ€Π°Π²Π½Ρ‹ΠΌ 1. Π—Π°Ρ‚Π΅ΠΌ Π² Π΅Π³ΠΎ СдинствСнном событии OnTimer Π² Object Inspector Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ move ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Enter. На ΡΠΊΡ€Π°Π½Π΅ появится Ρ‚Π΅Π»ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° этого события:

procedure TForm1. move (Sender: TObject);

begin.

timer1.enabled:=true; {Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°}

case m of {исходя ΠΈΠ· Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ двиТСния}

  • 1:dec (lr, 5); {ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅ΠΌ Π½Π° 5 lr}
  • 2:inc (lr, 5); {ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Π½Π° 5 lr}
  • 3:dec (td, 5);
  • 4:inc (td, 5);

end;

with TButton (components[num+5])do begin {ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚}

left:=lr1+lr;top:=td1+td;end;

if (abs (lr)=50) or (abs (td)=50) then {ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½ΠΎ 50 шагов}

begin.

timer1.enabled:=false; {Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ‚Π°ΠΉΠΌΠ΅Ρ€}

lr:=0;

td:=0;

flag:=false;

case m of {пСрСстановка чисСл Π² ΠΌΠ°ΡΡΠΈΠ²Π΅}

  • 1:begin a[pos-1]: =a[pos];a[pos]:=16;end;
  • 2:begin a[pos+1]: =a[pos];a[pos]:=16;end;
  • 3:begin a[pos-4]: =a[pos];a[pos]:=16;end;
  • 4:begin a[pos+4]: =a[pos];a[pos]:=16;end;

end;

fl:=0;

for i:=1 to 16 do if a[i]i then fl:=1; {опрСдСляСм, расставлСны Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠΎ ΠΏΠΎΡ€ΡΠ΄ΠΊΡƒ ΠΎΡ‚ 1 Π΄ΠΎ 15}

if fl=0 then showmessage ('Π’Ρ‹ Π²Ρ‹ΠΈΠ³Ρ€Π°Π»ΠΈ!'); {Ссли ΠΊΠ½ΠΎΠΏΠΊΠΈ расставлСны ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ — сообщСниС «Π’Ρ‹ Π²Ρ‹ΠΈΠ³Ρ€Π°Π»ΠΈ!"}

end;

end;

Основная Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡƒΠΆΠ΅ написана. ΠžΡΡ‚Π°Π»ΠΎΡΡŒ внСсти послСдниС ΡˆΡ‚Ρ€ΠΈΡ…ΠΈ. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„ΠΎΡ€ΠΌΡƒ AboutBox ΠΈ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ события OnClick ΠΊΠ½ΠΎΠΏΠΊΠΈ About Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅: AboutBox.Show. Аналогично, для ΠΊΠ½ΠΎΠΏΠΊΠΈ Exit Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Close — для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π”Π°Π»Π΅Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ Π΅ΡΠ»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ сдСлано, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° запустится ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π°:

Π˜Π³Ρ€Π° Β«ΠŸΡΡ‚Π½Π°ΡˆΠΊΠΈΒ».

Рисунок 2.3 — Π˜Π³Ρ€Π° «ΠŸΡΡ‚Π½Π°ΡˆΠΊΠΈ».

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ