ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Β«ΠŸΠ°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈΒ»

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

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€, встроСнный Π² Delphi, обСспСчиваСт Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для построСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ «ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСр». Π­Ρ‚ΠΎΡ‚ компилятор Π² Π½Π°ΡΡ‚оящСС врСмя являСтся самым быстрым Π² ΠΌΠΈΡ€Π΅, Π΅Π³ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ компиляции составляСт ΡΠ²Ρ‹ΡˆΠ΅ 120 тысяч строк Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ 486DX33. Он ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ΅ врСмя ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Β«ΠŸΠ°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈΒ» (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ «ΠŸΠ°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ»

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ игровая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° интСрфСйс Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

1. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

1.1 ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

1.2 Π‘Π»ΠΎΠΊ-схСма

1.3 Алгоритм Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

2. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Delphi Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

3. ОписаниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А-Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ Ρ…ΠΎΠ΄Π΅ выполняСмой курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ игровая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° «ΠŸΠ°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ», которая ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ исслСдования. ΠŸΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ΡΡ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Delphi — это комбинация Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ:

— Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ компилятор Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄;

— ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ориСнтированная модСль ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚;

— Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ (Π°, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚Π½ΠΎΠ΅) построСниС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ²;

— ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ срСдства для построСния Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…;

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€, встроСнный Π² Delphi, обСспСчиваСт Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для построСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ «ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСр». Π­Ρ‚ΠΎΡ‚ компилятор Π² Π½Π°ΡΡ‚оящСС врСмя являСтся самым быстрым Π² ΠΌΠΈΡ€Π΅, Π΅Π³ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ компиляции составляСт ΡΠ²Ρ‹ΡˆΠ΅ 120 тысяч строк Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ 486DX33. Он ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ΅ врСмя ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ для языков Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠ³ΠΎ поколСния (4GL) ΠΈ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя обСспСчиваСт качСство ΠΊΠΎΠ΄Π°, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ для компилятора 3GL. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Delphi обСспСчиваСт Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π±Π΅Π· нСобходимости ΠΏΠΈΡΠ°Ρ‚ΡŒ вставки Π½Π° C++ ΠΈΠ»ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ написания ΠΊΠΎΠ΄Π° (хотя это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ).

1. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

1.1 ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ «ΠŸΠ°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ», которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ ΠΈΠ³Ρ€ΠΎΠ²ΡƒΡŽ панСль, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΈ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ (ΠΏΠ°Π½Π΅Π»Π΅ΠΉ), ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΡ… собой ΠΎΠ΄ΠΈΠ½ большой ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚. Π˜Π³Ρ€ΠΎΠ²Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° рассчитана Π½Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ³Ρ€ΠΎΠΊΠ°. Π˜Π³Ρ€ΠΎΠΊ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π² Ρ‚ΠΎΠΌ случаС, Ссли нашСл всС ΠΏΠ°Ρ€Ρ‹ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

1.2 Π‘Π»ΠΎΠΊ-схСма

1.3 Алгоритм Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ осущСствляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ Π΄Π°Π½Π½ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ, ΠΈ Π½Π°ΠΉΡ‚ΠΈ исполняСмый Ρ„Π°ΠΉΠ» DBLPIC.

ПослС запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΠΊΡ€Π°Π½ выводится основная Ρ„ΠΎΡ€ΠΌΠ° Form1 (рисунок 1), Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ располоТСны: Π³Π»Π°Π²Π½ΠΎΠ΅ мСню ΠΈ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅.

Π˜Π³Ρ€Π°, Ρ‚. Π΅. Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, начинаСтся сразу ΠΆΠ΅ послС запуска.

Рисунок 1 Π’ΠΈΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ послС запуска

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΡ‘Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.

Pole: array [1.MAX_H, 1. MAX_W] of integer;

{ Pole[i, j] < 100 — ΠΊΠΎΠ΄ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, ΠΊΠ»Π΅Ρ‚ΠΊΠ° Π·Π°ΠΊΡ€Ρ‹Ρ‚Π°;

Pole[i, j] > 100 ΠΈ < 200 — ΠΊΠ»Π΅Ρ‚ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π°, Ρ‚. Π΅. ΠΈΠ³Ρ€ΠΎΠΊ Π²ΠΈΠ΄ΠΈΡ‚ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ;

Рисунок 2 Π’ΠΈΠ΄ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ являСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TTimer.

ΠœΠ΅ΠΆΠ΄Ρƒ словами try ΠΈ except ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅ΠΌΡ‹Π΅ ΠΎΡ‚ ΠΎΡˆΠΈΠ±ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. Если ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ любого ΠΈΠ· ΡΡ‚ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация, Ρ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ словами except ΠΈ end, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠΌ Π±Π»ΠΎΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций. ΠŸΡ€ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ (Π±Π΅Π·ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠΌ) Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Π»ΠΎΠΊ except… end пропускаСтся.

Π˜Ρ‚Π°ΠΊ, Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ осущСствляСм Π² Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ ΡΡ‚ΠΈΠ»ΡŒ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ, Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ ΠΈ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ. Если Ρ…ΠΎΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ряд ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ, Ρ‚ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Π΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ряда. Если послС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ выясняСтся, Ρ‡Ρ‚ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ряда Π½Π΅ Ρ€Π°Π²Π½Ρ‹ — ΠΈΠ³Ρ€Π° продолТаСтся, Π° Π΅ΡΠ»ΠΈ ΠΆΠ΅ выясняСтся, Ρ‡Ρ‚ΠΎ Ρ€Π°Π²Π½Ρ‹, Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ модальноС ΠΎΠΊΠ½ΠΎ (РисункС 3)

Рисунок 3 МодальноС ΠΎΠΊΠ½ΠΎ

begin

Form1.Canvas.Font.Name := 'Times New Roman';

Form1.Canvas.Font.Size := 36;

Form1.Canvas.Font.Color := clBlack;

Form1.Canvas.TextOut (70,160,'ΠšΠΎΠ½Π΅Ρ† ΠΈΠ³Ρ€Ρ‹!');

Form1.Canvas.Font.Size := 10;

Form1.Canvas.TextOut (120,210,'АхмСтов И.Π ., 2012'); end

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ «ΠΠΎΠ²Π°Ρ ΠΈΠ³Ρ€Π°» Π² ΠΌΠ΅Π½ΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ дСлаСтся Π² ΠΎΠ΄Π½Ρƒ строку. Кнопка программируСтся Π² ΡΠΎΠ±Ρ‹Ρ‚ΠΈΠΈ OnClick:

procedure TForm1. N1Click (Sender: TObject);

begin

Pole[open1.col, open1. row] := Pole[open1.col, open1. row] + 100;

Pole[open2.col, open2. row] := Pole[open2.col, open2. row] + 100;

count := 0;

// ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

Kletka (open2.col, open2. row);

Kletka (open1.col, open1. row);

// остановка Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

Form1.Timer1.Enabled := False;

Canvas.Rectangle (0,0,ClientWidth, ClientHeight);

NewGame;

clock:=0;

end;

Рисунок 4 МодальноС ΠΎΠΊΠ½ΠΎ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ «?» Ρ‚Π°ΠΊΠΆΠ΅ производится Π² ΡΠΎΠ±Ρ‹Ρ‚ΠΈΠΈ OnClick ΠΈ ΠΎΡ‚крываСтся модальноС ΠΎΠΊΠ½ΠΎ «Πž ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅» (Рисунок 5), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ описаны ΠΊΡ€Π°Ρ‚ΠΊΠΈΠ΅ свСдСния ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ Π΅Ρ‘ ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»Π΅:

procedure TForm1. N3Click (Sender: TObject);

begin

Form3.Show;

end;

Рисунок 5 МодальноС ΠΎΠΊΠ½ΠΎ «?»

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Unit3 ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΠΊΠ½Π°, содСрТащСго свСдСния ΠΎΠ± ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ ΠΈΠ³Ρ€Ρ‹, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ происходил ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ процСсс (Рисунок 3). ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ осущСствляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

begin

Form1.Canvas.Font.Name := 'Times New Roman';

Form1.Canvas.Font.Size := 36;

Form1.Canvas.Font.Color := clBlack;

Form1.Canvas.TextOut (70,160,'ΠšΠΎΠ½Π΅Ρ† ΠΈΠ³Ρ€Ρ‹!');

Form1.Canvas.Font.Size := 10;

Form1.Canvas.TextOut (120,210,'АхмСтов И.Π ., 2012');

form1.timer2.Enabled:=False;

clock:=0;

Form1.Caption:='ΠŸΠ°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ';

end;

2 ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Delphi

2.1 ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TMainMenu

TMainMenu — позволяСт ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π³Π»Π°Π²Π½ΠΎΠ΅ мСню Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ TMainMenu Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ это выглядит, ΠΊΠ°ΠΊ просто ΠΈΠΊΠΎΠ½ΠΊΠ° (Рисунок 1). Иконки Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ (Π½Π΅Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Рисунок 6 Иконки ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅, созданноС мСню

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ мСню Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ шага:

1) ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ TMainMenu Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ;

2) Π²Ρ‹Π·ΠΎΠ² Menu Designer (Рисунок 7);

3) ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² мСню Π² Menu Designer.

Рисунок 7 Menu Designer

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ доступСн ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Ρ MENUS, ΠΈ Π½Π°Ρ…одится Π½Π° ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π΅ ΠŸΠ°Π»ΠΈΡ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Standard.

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ прСдставляСт Π³Π»Π°Π²Π½ΠΎΠ΅ мСню Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Π½Π°ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΡΠ²ΠΎΠΉΡΡ‚Π²Π° TMenu. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π΅Π³ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ слоТный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ объСдинСния мСню. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ:

1. Если Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ имССтся нСсколько Ρ„ΠΎΡ€ΠΌ со ΡΠ²ΠΎΠΈΠΌΠΈ мСню, Ρ‚ΠΎ Π΄Π»Ρ упрощСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ цСлСсообразно ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΈΡ… Π² ΠΎΠ΄Π½ΠΎ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ мСню ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹.

2. ОбъСдинСниС мСню Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΈΠ½Ρ‚СрфСйсом MDI ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΎΠΊΠ½Π°ΠΌΠΈ.

3. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ объСдинСния мСню ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сСрвСрами OLE, запускаСмыми ΠΏΠΎ ΠΌΠ΅ΡΡ‚Ρƒ нахоТдСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° OLE. Π—Π°Π³Ρ€ΡƒΠΆΠ°ΡΡΡŒ, сСрвСр дописываСт осущСствляСмыС ΠΈΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊ ΠΌΠ΅Π½ΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ прилоТСния.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ объСдинСниС мСню, Ρƒ Ρ‚Π΅Ρ… Ρ„ΠΎΡ€ΠΌ, мСню ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄ΡƒΡ‚ присоСдинСны ΠΊ Π³Π»Π°Π²Π½ΠΎΠΌΡƒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² True свойство:

(Pb) property AutoMerge: Boolean;

ΠŸΡ€ΠΈ этом Ρƒ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ мСню ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π²Π½Ρ‹ΠΌ False, ΠΈΠ½Π°Ρ‡Π΅ Π³Π»Π°Π²Π½ΠΎΠ΅ мСню Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ. ОбъСдинСниС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ автоматичСски ΠΏΡ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ ΠΈΠ»ΠΈ сСрвСров OLE. ΠšΡ€ΠΎΠΌΠ΅ автоматичСского Ρ€Π΅ΠΆΠΈΠΌΠ°, объСдинСниС мСню ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

procedure Merge (Menu: TMainMenu);

1.2 ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TLabel

TLabel — слуТит для отобраТСния тСкста Π½Π° ΡΠΊΡ€Π°Π½Π΅. МоТно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚ ΠΈ Ρ†Π²Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΊΠΈ, Ссли Π΄Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ Π½Π° ΡΠ²ΠΎΠΉΡΡ‚Π²ΠΎ Font Π² Π˜Π½ΡΠΏΠ΅ΠΊΡ‚ΠΎΡ€Π΅ ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ это Π»Π΅Π³ΠΊΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написав всСго ΠΎΠ΄Π½Ρƒ строчку ΠΊΠΎΠ΄Π°.

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ доступСн ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Ρ STDCTRLS, ΠΈ Π½Π°Ρ…одится Π½Π° ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π΅ ΠŸΠ°Π»ΠΈΡ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Standard.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ прСдставляСт собой статичСский тСкст. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ повСрхности Ρ„ΠΎΡ€ΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ пояснСния ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ названия Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Но ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π²Π°ΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ — Ссли Π² ΡΠΎΡΡ‚Π°Π²Π΅ тСкста TLabel Π΅ΡΡ‚ΡŒ символы-аксСлСраторы, информация ΠΎΠ± ΠΈΡ… Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ TLabel Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ элСмСнту управлСния.

1.3 ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TPanel

TPanel — ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ, ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° TGroupBox, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… цСлях. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TPanel, просто помСститС Π΅Π³ΠΎ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π° Π½Π΅Π³ΠΎ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ TPanel Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΈ ΡΡ‚ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. TPanel ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ для создания ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов ΠΈ ΠΎΠΊΠ½Π° статуса.

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ доступСн ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Ρ EXTCTRLS, ΠΈ Π½Π°Ρ…одится Π½Π° ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π΅ ΠŸΠ°Π»ΠΈΡ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Standard.

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ — являСтся нСсущСй конструкциСй для размСщСния Π΄Ρ€ΡƒΠ³ΠΈΡ… элСмСнтов управлСния. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΎΡΡ‚ΠΎΠΉ Ρ€Π°ΠΌΠΊΠΈ (TBevel) панСль сама являСтся ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΌ элСмСнтом управлСния ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ для всСх Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Ρ… Π½Π° Π½Π΅ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Часто Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для создания ΠΏΠ°Π½Π΅Π»Π΅ΠΉ инструмСнтов, строк состояния ΠΈ Ρ‚. ΠΏ.

На Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ… ΠΏΠ°Π½Π΅Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π΄Π²Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΊΠ°ΠΉΠΌΠ»ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π°ΠΌΠΊΠΈ (bevels): BevelInner ΠΈ BevelOuter. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π±Π΅Π»ΠΎΠ³ΠΎ ΠΈ ΡΠ΅Ρ€ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚ΠΎΠ² ΠΎΠ½ΠΈ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‚ Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ — ΠΏΡ€ΠΈΠΏΠΎΠ΄Π½ΡΡ‚ΠΎΡΡ‚ΡŒ (bvRaised) ΠΈΠ»ΠΈ ΡƒΡ‚ΠΎΠΏΠ»Π΅Π½Π½ΠΎΡΡ‚ΡŒ (bvLowered). Π’Π°ΠΊΠΆΠ΅ Ρ€Π°ΠΌΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ (bvNone).

Π’Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ тСкста Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΏΠ°Π½Π΅Π»ΠΈ опрСдСляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ свойства:

(Pb) property Alignment: TAlignment;

1.4 ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TImage

TImage — ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ графичСскоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅. ВоспринимаСт Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ BMP, ICO, WMF. Если ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚ΠΎ ΠΎΠ½Π° прикомпилируСтся ΠΊ EXE Ρ„Π°ΠΉΠ»Ρƒ.

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ доступСн ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Ρ EXTCTRLS, ΠΈ Π½Π°Ρ…одится Π½Π° ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π΅ ΠŸΠ°Π»ΠΈΡ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Additional.

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ слуТит надстройкой Π½Π°Π΄ классом TPicture ΠΈ Π·Π°ΠΌΡ‹ΠΊΠ°Π΅Ρ‚ всю ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ графичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² VCL. Он ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΏΠΎΠΊΠ°Π·Π° Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ изобраТСния: Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚Ρ‹ (TBitmap), ΠΌΠ΅Ρ‚Π°Ρ„Π°ΠΉΠ»Π° (TMetafile), Π·Π½Π°Ρ‡ΠΊΠ° (TIcon).

1.5 ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TImageList

TImageList прСдставляСт собой ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для хранСния мноТСства рисунков ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Он ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ создании Π½Π°Π±ΠΎΡ€Π° ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ½ΠΎΠΏΠΎΠΊ, сСкций ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ эффСкты, ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ‚Π°ΠΌ, Π³Π΄Π΅ трСбуСтся индСксированный доступ ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌ. ВоспринимаСт Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ BMP, ICO.

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ TImageList Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ это выглядит, ΠΊΠ°ΠΊ просто ΠΈΠΊΠΎΠ½ΠΊΠ°. Иконки Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ (Π½Π΅Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ находится Π½Π° ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π΅ ΠŸΠ°Π»ΠΈΡ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Win 32.

1.6 ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TTimer

TTimer (Ρ‚Π°ΠΉΠΌΠ΅Ρ€) слуТит для отсчСта ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π•Π³ΠΎ свойство interval опрСдСляСт ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΎΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Π΄ΠΎ Π½Π°ΡΡ‚уплСния события onTimer. Π’Π°ΠΉΠΌΠ΅Ρ€ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΈ установкС значСния True Π² Π΅Π³ΠΎ свойство Enabled. Π Π°Π· Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ всС врСмя Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π±ΡƒΠΆΠ΄Π°Ρ‚ΡŒ события onTimer Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π΅Π³ΠΎ свойство Enabled Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ значСния False.

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ TTimer Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ это выглядит, ΠΊΠ°ΠΊ просто ΠΈΠΊΠΎΠ½ΠΊΠ° (Рисунок 6). Иконки Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ (Π½Π΅Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π½Π΅ Π²ΠΈΠ΄ΠΈΠΌΡ‹ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ находится Π½Π° ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π΅ ΠŸΠ°Π»ΠΈΡ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² System.

3 ОписаниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса

1) Π€Π°ΠΉΠ» > Новая ΠΈΠ³Ρ€Π° — Π½Π°Ρ‡Π°Π»ΠΎ Π½ΠΎΠ²ΠΎΠΉ ΠΈΠ³Ρ€Ρ‹. (Рисунок 8)

Рисунок 8 ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс

2)Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ > … — Π’Ρ‹Π±ΠΎΡ€ уровня слоТности (Рисунок 9)

Рисунок 9 ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс

2) Π‘ΠΏΡ€Π°Π²ΠΊΠ° > О ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ — Π’Ρ‹Π²ΠΎΠ΄ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ ΠΎ Π΅Ρ‘ создатСлС. (Рисунок 10)

Рисунок 10 ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° игровая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ «ΠŸΠ°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ». Π‘Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ исслСдованиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ срСды Borland Delphi 6.0, использовалось мноТСство ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

ΠŸΡ€ΠΈ создании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ использовались ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹: TMainMenu, TTimer.

Π’Π°ΠΊΠΆΠ΅ использовались ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

— Adobe Photoshop CS v8.0 — использовался для создания Ρ„ΠΎΡ‚ΠΎ Π°Π²Ρ‚ΠΎΡ€Π° для Ρ„ΠΎΡ€ΠΌΡ‹ «Πž ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅»;

— Restorator 2005 v3.50 build 1442 — использовался для измСнСния ΠΈΠΊΠΎΠ½ΠΊΠΈ EXE Ρ„Π°ΠΉΠ»Π° ΠΈΠ³Ρ€Ρ‹;

— Microsoft Paint v5.1 — использовался для создания рисунков ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡƒ курсовому ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ

Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

1. ΠœΠΈΡ…Π°ΠΈΠ» Π€Π»Π΅Π½ΠΎΠ² «Π‘иблия Delphi» Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2004 Π³. 880с.

2. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Delphi 6 ΠΡ€Ρ…Π°Π½Π³Π΅Π»ΡŒΡΠΊΠΈΠΉ, А.Π―. 2003 Π³.

3. ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² Delphi 7 ΠšΡƒΠ»ΡŒΡ‚ΠΈΠ½, Никита 2003 Π³.

4. Delphi 7 для профСссионалов — М. ΠšΡΠ½Ρ‚Ρƒ Π‘Π°Π½ΠΊΡ‚ — ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2004 Π³.

5. Delphi Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… — ΠŸΠ΅ΡΡ‚Ρ€ΠΈΠΊΠΎΠ² Π’. М. Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2005 Π³.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А

Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

{ Π˜Π³Ρ€Π° «ΠŸΠ°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ»

Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»: АхмСтов И.Π .}

unit dblpic_;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, jpeg, ExtCtrls, Menus;

type

TForm1 = class (TForm)

Timer1: TTimer;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

Timer2: TTimer;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

procedure FormCreate (Sender: TObject);

procedure FormPaint (Sender: TObject);

procedure FormMouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure Timer1Timer (Sender: TObject);

procedure N1Click (Sender: TObject);

procedure N4Click (Sender: TObject);

procedure N3Click (Sender: TObject);

procedure Timer2Timer (Sender: TObject);

procedure FormClick (Sender: TObject);

procedure N6Click (Sender: TObject);

procedure N7Click (Sender: TObject);

procedure N8Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

// объявлСниС Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° col_row

col_row = record

col: integer;

row: integer;

end;

const

MAX_SIZE = 32; // максимальноС ΠΊΠΎΠ»-Π²ΠΎ ΠΏΠ°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ

MAX_H = 8; // ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ поля — 8Ρ…8

MAX_W = 8;

var

Form1: TForm1;

clock:Integer;

level:Integer;

Pole: array [1.MAX_H, 1. MAX_W] of integer;

{ Pole[i, j] < 100 — ΠΊΠΎΠ΄ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, ΠΊΠ»Π΅Ρ‚ΠΊΠ° Π·Π°ΠΊΡ€Ρ‹Ρ‚Π°;

Pole[i, j] > 100 ΠΈ < 200 — ΠΊΠ»Π΅Ρ‚ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π°, Ρ‚. Π΅. ΠΈΠ³Ρ€ΠΎΠΊ Π²ΠΈΠ΄ΠΈΡ‚ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ;

Pole[i, j] > 200 — ΠΈΠ³Ρ€ΠΎΠΊ нашСл ΠΏΠ°Ρ€Ρƒ для этой ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ }

Pictures: TBitmap; // ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°

n: integer; // ΠΊΠΎΠ»Π²ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΏΠ°Ρ€ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ

count: integer; // количСства ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ

open1: col_row; // ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ 1-ΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

open2: col_row; // ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ 2-ΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

W: integer; // ΠΊΠΎΠ»-Π²ΠΎ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ

H: integer; // ΠΊΠΎΠ»-Π²ΠΎ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ

// ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ W ΠΈ H Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚Π½ΠΎ 2-ΠΌ

WK: integer; // ΡˆΠΈΡ€ΠΈΠ½Π° ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

HK: integer; // высота ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

implementation

uses Unit2, Unit3;

{$R *.dfm}

// рисуСт ΠΊΠ»Π΅Ρ‚ΠΊΡƒ поля

procedure Kletka (col, row: integer);

var

x, y: integer; // Π»Π΅Π²Ρ‹ΠΉ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΠ³ΠΎΠ» ΠΊΠ»Π΅Ρ‚ΠΊΠΈ (ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹)

src, dst: Trect; // источник ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π°

begin

// ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

// Π² ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π½Π° ΠΏΠΎΠ²Π΅Ρ€Ρ…ности Ρ„ΠΎΡ€ΠΌΡ‹

x := (col-1)*WK;

y := (row-1)*HK;

if Pole[col, row] > 200 then

// для этой ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π½Π°ΠΉΠ΄Π΅Π½Π° ΠΏΠ°Ρ€Π°

// ΠΊΠ»Π΅Ρ‚ΠΊΡƒ Π½Π°Π΄ΠΎ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ с ΠΏΠΎΠ»Ρ

begin

// ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹, закраски ΠΈ Ρ‚Скста

Form1.Canvas.Brush.Color := clBtnFace;

Form1.Canvas.Pen.Color := clBtnFace;

Form1.Canvas.Font.Color := clBtnFace;

end;

if (Pole[col, row] > 100) and (Pole[col, row] < 200)

then

// ΠΊΠ»Π΅Ρ‚ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π° — вывСсти ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ

begin

// Pole[col, row] = Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ + 100,

// Π³Π΄Π΅ 100 — ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ»Π΅Ρ‚ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π°

// ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² Pictures

src := Bounds ((Pole[col, row]-100 -1)*WK, 0, WK, HK);

// ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ (ΠΊΠ»Π΅Ρ‚ΠΊΠΈ) Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅

dst := Bounds (x, y, HK-2,WK-2);

// вывСсти ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² ΠΊΠ»Π΅Ρ‚ΠΊΡƒ

Form1.Canvas.CopyRect (dst, Pictures. Canvas, src);

// ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΈ Ρ†ΠΈΡ„Ρ€Ρ‹

Form1.Canvas.Pen.Color := clBlack;

Form1.Canvas.Font.Color := clBlack;

Form1.Canvas.Brush.Style := bsClear;

end;

if (Pole[col, row] > 0) and (Pole[col, row] < 100) then

// ΠΊΠ»Π΅Ρ‚ΠΊΠ° Π·Π°ΠΊΡ€Ρ‹Ρ‚Π°, рисуСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ½Ρ‚ΡƒΡ€

begin

Form1.Canvas.Brush.Color := clBtnFace;

Form1.Canvas.Pen.Color := clBlack;

Form1.Canvas.Font.Color := clBtnFace;

end;

// ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ

Form1.Canvas.Rectangle (x, y, x+WK-2,y+HK-2);

//Form1.Canvas.TextOut (x+15,y+15, IntToStr (Pole[col, row]));

Form1.Canvas.Brush.Color := clBtnFace;

end;

// отрисовываСт ΠΏΠΎΠ»Π΅

procedure ShowPole;

var

row, col: integer;

begin

for row:=1 to H do

for col:=1 to W do

Kletka (row, col);

end;

// новая ΠΈΠ³Ρ€Π°

Procedure NewGame;

var

k: integer; // ΠΊΠΎΠ»-Π²ΠΎ ΠΏΠ°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ

r: integer; // случайноС число

buf: array[1.MAX_SIZE] of integer;

// Π² buf[i] записываСм, сколько чисСл i

// записали Π² ΠΌΠ°ΡΡΠΈΠ² Pole

i, j: integer; // индСксы массивов

begin

Randomize;

k := Trunc (H*W/2);

for i:=1 to k do

buf[i] := 0;

// запишСм Π² ΠΌΠ°ΡΡΠΈΠ² Pole случайныС числа

// ΠΎΡ‚ 1 Π΄ΠΎ 2

// ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ число Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ записано Π΄Π²Π° Ρ€Π°Π·Π°

for i:=1 to H do

for j:=1 to W do

begin

repeat

r := random (k) + 1;

until buf[r] < 2;

Pole[i, j] := r; // ΠΊΠΎΠ΄ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ

inc (buf[r]);

end;

// здСсь ΠΏΠΎΠ»Π΅ сгСнСрировано

n:=0;

ShowPole;

end;

// созданиС Ρ„ΠΎΡ€ΠΌΡ‹

procedure TForm1. FormClick (Sender: TObject);

begin

form1.timer2.Enabled:=True; //clock:=0;

end;

procedure TForm1. FormCreate (Sender: TObject);

var

np: integer; // ΠΊΠΎΠ»-Π²ΠΎ ΠΏΠ°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ

begin

level:=30;

Pictures := TBitmap. Create;

// Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°

Pictures.LoadFromFile ('pictures.bmp');

HK := Pictures. Height-1; // высота ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ

WK := HK; // ΡˆΠΈΡ€ΠΈΠ½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ

np:= Round (Pictures.Width / WK);

if np <= 15

then H := 4

else H :=5;

W := Round (np*2/H);

// ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° поля

Form1.ClientHeight := H * HK;

Form1.ClientWidth := W * WK;

Form1.Timer1.Enabled := False;

Form1.Timer1.Interval := 200;

n := 0;

NewGame;

end;

// прорисовка ΠΊΠ»Π΅Ρ‚ΠΎΠΊ Π½Π° ΠΏΠΎΠ»Π΅

procedure TForm1. FormPaint (Sender: TObject);

begin

ShowPole;

end;

// Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ΅

procedure TForm1. FormMouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var

col_: integer; // Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ

row_: integer; //Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ

begin

col_ := Trunc (X/WK) + 1;

row_ := Trunc (Y/HK) + 1;

if Pole[col_, row_] > 200 then

// Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π² Π½Π° ΠΌΠ΅ΡΡ‚Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π΄Π²ΡƒΡ…

// ΡƒΠΆΠ΅ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ

exit;

// ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ Π½Π΅Ρ‚

if count = 0 then

begin

count := 1;

open1.col := col_;

open1.row := row_;

// ΠΊΠ»Π΅Ρ‚ΠΊΠ° помСчаСтся ΠΊΠ°ΠΊ открытая

Pole[open1.col, open1. row] := Pole[open1.col, open1. row] + 100;

Kletka (open1.col, open1. row);

exit;

end;

// ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π° ΠΎΠ΄Π½Π° ΠΊΠ»Π΅Ρ‚ΠΊΠ°, Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΡƒΡŽ

if count = 1 then begin

open2.col := col_;

open2.row := row_;

// Ссли ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π° ΠΎΠ΄Π½Π° ΠΊΠ»Π΅Ρ‚ΠΊΠ° ΠΈ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ сдСлан

// Π² ΡΡ‚ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠ΅, Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚

if (open1.col = open2. col) and (open1.row = open2. row)

then exit

else begin

count := 2; // Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ Π΄Π²Π΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

Pole[open2.col, open2. row] :=

Pole[open2.col, open2. row] + 100;

Kletka (open2.col, open2. row); // отрисуСм Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ

// ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅?

if Pole[open1.col, open1. row] = Pole[open2.col, open2. row] then

// ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ Π΄Π²Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ

begin

n := n+1;

Form1.Timer1.Enabled := True; // Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€

// ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ события OnTimer

// «ΡΠΎΡ‚Ρ€Π΅Ρ‚» Π΄Π²Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ

end;

end;

exit;

end;

if count = 2 then

begin

// ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ 2 ΠΊΠ»Π΅Ρ‚ΠΊΠΈ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°ΠΌΠΈ

// Π·Π°ΠΊΡ€ΠΎΠ΅ΠΌ ΠΈΡ… ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Π½ΠΎΠ²ΡƒΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ

// сдСлан Ρ‰Π΅Π»Ρ‡ΠΎΠΊ

// Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

Pole[open1.col, open1. row] := Pole[open1.col, open1. row] - 100;

Pole[open2.col, open2. row] := Pole[open2.col, open2. row] - 100;

Kletka (open1.col, open1. row);

Kletka (open2.col, open2. row);

// запись Π² open1 Π½ΠΎΠΌΠ΅Ρ€Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

open1.col := col_;

open1.row := row_;

count := 1; // счСтчик ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ

// ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

Pole[open1.col, open1. row] := Pole[open1.col, open1. row] + 100;

Kletka (open1.col, open1. row);

end;

end;

// ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° события Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

procedure TForm1. Timer1Timer (Sender: TObject);

begin

// Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Pole ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΏΠΎΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ совпавшиС

Pole[open1.col, open1. row] := Pole[open1.col, open1. row] + 100;

Pole[open2.col, open2. row] := Pole[open2.col, open2. row] + 100;

count := 0;

// ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

Kletka (open2.col, open2. row);

Kletka (open1.col, open1. row);

// остановка Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

Form1.Timer1.Enabled := False;

if n = Trunc (W*H/2)

then // ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ всС ΠΏΠ°Ρ€Ρ‹

begin

Form1.Canvas.Font.Name := 'Times New Roman';

Form1.Canvas.Font.Size := 36;

Form1.Canvas.Font.Color := clBlack;

Form1.Canvas.TextOut (70,160,'ΠšΠΎΠ½Π΅Ρ† ΠΈΠ³Ρ€Ρ‹!');

Form1.Canvas.Font.Size := 10;

Form1.Canvas.TextOut (120,210,'АхмСтов И.Π ., 2012');

form1.timer2.Enabled:=False;

clock:=0;

Form1.Caption:='ΠŸΠ°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ';

end;

end;

procedure TForm1. Timer2Timer (Sender: TObject);

begin

clock:= clock+1;

Form1.Caption:='ΠŸΠ°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ [Π˜Π³Ρ€Π° ΠΈΠ΄Ρ‘Ρ‚ ! ' + inttostr (clock)+' Π‘Π΅ΠΊΡƒΠ½Π΄'+']';

if clock>level then

begin

Timer2.Enabled:=False;

Form1.Caption:='ΠŸΠ°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ';

ShowMessage ('ВрСмя Π²Ρ‹ΡˆΠ»ΠΎ!');

end;

end;

// Π²Ρ‹Π±ΠΎΡ€ Π² ΠΌΠ΅Π½ΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Новая ΠΈΠ³Ρ€Π°

procedure TForm1. N1Click (Sender: TObject);

begin

Pole[open1.col, open1. row] := Pole[open1.col, open1. row] + 100;

Pole[open2.col, open2. row] := Pole[open2.col, open2. row] + 100;

count := 0;

// ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

Kletka (open2.col, open2. row);

Kletka (open1.col, open1. row);

// остановка Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

Form1.Timer1.Enabled := False;

Canvas.Rectangle (0,0,ClientWidth, ClientHeight);

NewGame;

clock:=0;

end;

procedure TForm1. N4Click (Sender: TObject);

begin

Form2.Show;

end;

procedure TForm1. N6Click (Sender: TObject);

begin

level:=50;

end;

procedure TForm1. N7Click (Sender: TObject);

begin

level:=30;

end;

procedure TForm1. N8Click (Sender: TObject);

begin

level:=18;

end;

procedure TForm1. N3Click (Sender: TObject);

begin

Form3.Show;

end;

end.

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