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

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ³Ρ€Ρ‹ Β«LinesΒ»

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

Lines — логичСская ΠΈΠ³Ρ€Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΎΡ‚ ΡˆΠ°Ρ€ΠΈΠΊΠΎΠ². ПолС прСдставляСт собой ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚, состоящий ΠΈΠ· ΠΊΠ»Π΅Ρ‚ΠΎΠΊ. Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠ³Ρ€Ρ‹ Π½Π° Π½Π΅Π³ΠΎ выставляСтся Ρ‚Ρ€ΠΈ ΡˆΠ°Ρ€ΠΈΠΊΠ° Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ². Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сСмь (классичСски) Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ². Π—Π° Ρ…ΠΎΠ΄ ΠΈΠ³Ρ€ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΡˆΠ°Ρ€ΠΈΠΊ, Π²Ρ‹Π΄Π΅Π»ΠΈΠ² Π΅Π³ΠΎ ΠΈ ΡƒΠΊΠ°Π·Π°Π² Π΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ΅ мСстополоТСниС. ΠŸΡ€ΠΈ этом для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ…ΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

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

Π’ Π΄Π°Π½Π½ΠΎΠΌ курсовом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Π² ΡΡ€Π΅Π΄Π΅ Delphi ΠΈΠ³Ρ€Π° «Lines». ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ графичСский интСрфСйс, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ освоСниС Π½Π°Π²Ρ‹ΠΊΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ с 2D Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ. Π’Π²ΠΈΠ΄Ρƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ являСтся ΠΈΠ³Ρ€ΠΎΠΉ, слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ большС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ интСрактивности ΠΈ Π²Ρ€Π΅ΠΌΡ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° систСмы.

Lines — логичСская ΠΈΠ³Ρ€Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΎΡ‚ ΡˆΠ°Ρ€ΠΈΠΊΠΎΠ². ПолС прСдставляСт собой ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚, состоящий ΠΈΠ· ΠΊΠ»Π΅Ρ‚ΠΎΠΊ. Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠ³Ρ€Ρ‹ Π½Π° Π½Π΅Π³ΠΎ выставляСтся Ρ‚Ρ€ΠΈ ΡˆΠ°Ρ€ΠΈΠΊΠ° Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ². Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сСмь (классичСски) Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ². Π—Π° Ρ…ΠΎΠ΄ ΠΈΠ³Ρ€ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΡˆΠ°Ρ€ΠΈΠΊ, Π²Ρ‹Π΄Π΅Π»ΠΈΠ² Π΅Π³ΠΎ ΠΈ ΡƒΠΊΠ°Π·Π°Π² Π΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ΅ мСстополоТСниС. ΠŸΡ€ΠΈ этом для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ…ΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ сущСствовал ΠΏΡƒΡ‚ΡŒ ΠΈΠ· ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ. ΠŸΡ€ΠΈ выстраивании Π»ΠΈΠ½ΠΈΠΈ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡˆΠ°Ρ€ΠΈΠΊΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π° (ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ, Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ) ΠΎΠ½Π° исчСзаСт. ПослС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ…ΠΎΠ΄Π° Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚Ρ€ΠΈ ΡˆΠ°Ρ€ΠΈΠΊΠ°, Π½ΠΎ ΠΏΡ€ΠΈ исчСзновСнии Π»ΠΈΠ½ΠΈΠΈ этого Π½Π΅ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚.

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

Богласно заданию Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ «Lines» Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Object Pascal Π² ΡΡ€Π΅Π΄Π΅ Delphi. Π˜Π³Ρ€Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠžΠ‘ Windows.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ поля 10×10 ΠΊΠ»Π΅Ρ‚ΠΎΠΊ. ΠžΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ для поля Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ количСство Ρ†Π²Π΅Ρ‚ΠΎΠ² Ρ€Π°Π²Π½ΠΎ 5, минимальная Π΄Π»ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ — 5, число ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ послС Ρ…ΠΎΠ΄Π° ΡˆΠ°Ρ€ΠΎΠ² — 3. Π‘ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² сдСлаСт ΠΈΠ³Ρ€Ρƒ слишком Π»Ρ‘Π³ΠΊΠΎΠΉ, Π° Π²Ρ‹ΡΠΎΠΊΠΎΠ΅ — тяТёлой.

Под ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌ ΠΏΠΎΠ»Π΅ΠΌ слСдуСт ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ счётчик ΠΎΡ‡ΠΊΠΎΠ². Он Π΄ΠΎΠ»ΠΆΠ΅Π½ вСсти подсчёт ΡƒΠ±Ρ€Π°Π½Π½Ρ‹Ρ… ΡˆΠ°Ρ€ΠΎΠ².

Π”ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ оповСщСния ΠΎ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹ΡˆΠ΅. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ оповСщСния ΠΎ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹ΡˆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π²Π²ΠΈΠ΄Ρƒ бСсконСчности процСсса ΠΈΠ³Ρ€Ρ‹.

Π’ ΠΈΠ³Ρ€Π΅ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ€Π΅ΠΊΠΎΡ€Π΄ΠΎΠ². Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ носит ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€, Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚авляло ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ цСнности Π² ΡΡ‚ΠΎΠΌ ΠΏΠ»Π°Π½Π΅.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ достаточно Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ. Π›Π΅Π²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π½Π° Π²Ρ‹Π±ΠΎΡ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ ΡˆΠ°Ρ€ΠΈΠΊΠ°, Ρ‚Π°ΠΊ ΠΈ Π½Π° Π²Ρ‹Π±ΠΎΡ€ мСста, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΅Π³ΠΎ слСдуСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ.

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

Π”Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ основныС аспСкты ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΡ‚ ΠΎΠ±Ρ‰ΠΈΡ… схСм Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ³ΠΎ описания Π΄ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… кусков ΠΊΠΎΠ΄Π°.

2.1 Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

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

2.2 ОписаниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ поля

Π—Π°Π΄Π°Ρ‡ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ располоТСния Ρ‚Ρ€Ρ‘Ρ… Π½ΠΎΠ²Ρ‹Ρ… ΡˆΠ°Ρ€ΠΎΠ² ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΡ… Ρ†Π²Π΅Ρ‚ΠΎΠ² Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π²ΡƒΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ: Randomize ΠΈ Random. ОбС ΡΠ²Π»ΡΡŽΡ‚ΡΡ стандартными для Delphi. Randomize ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Random нСпосрСдствСнно прСдоставляСт случайныС значСния.

Рисунок 2.2 — Π‘Π»ΠΎΠΊ-схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ процСсса

2.3 Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ константы ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

Π—Π΄Π΅ΡΡŒ описано Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ констант ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹:

— COUNT_COLORS — количСство Ρ†Π²Π΅Ρ‚ΠΎΠ²;

— COLORS — массив ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ²;

— R_MAX — Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡˆΠ°Ρ€ΠΈΠΊΠ°;

— R_MIN — Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ ΡˆΠ°Ρ€ΠΈΠΊΠ°;

— FIELD_SIZE — Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ΄Π½ΠΎΠΉ ячСйки ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля;

— OFFSET_X — отступ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля слСва ΠΎΡ‚ ΡΠΊΡ€Π°Π½Π°;

— OFFSET_Y — отступ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля справа ΠΎΡ‚ ΡΠΊΡ€Π°Π½Π°.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

— sizeX, sizeY: integer — Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля;

— balls: array of array of Ball — массив ΡˆΠ°Ρ€ΠΈΠΊΠΎΠ²;

— canvas: TCanvas — холст для рисования.

— selIndexX, selIndexY: integer — индСксы Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡˆΠ°Ρ€ΠΈΠΊΠ°;

— countToGenerate: integer — количСство Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ ΡˆΠ°Ρ€ΠΎΠ²;

— dx, dir: integer — ΠΏΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ;

— sel, mov: boolean — Ρ„Π»Π°Π³ΠΈ Π²Ρ‹Π±ΠΎΡ€Π° ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΡ ΡˆΠ°Ρ€ΠΎΠ²;

— field: array of array of integer — массив чисСл для поиска ΠΏΡƒΡ‚Π΅ΠΉ;

— score: integer — счётчик ΠΎΡ‡ΠΊΠΎΠ².

2.4 ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС основных ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ с ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΠ΅ΠΌ назначСния ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Procedure doMove (m, n, m2, n2: integer) ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΡˆΠ°Ρ€ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ.

— m, n: integer — Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹;

— m2, n2: integer — ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹.

Procedure doSelect (m, n: integer) ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π²Ρ‹Π±ΠΎΡ€ ΡˆΠ°Ρ€Π°.

— m, n: integer — ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΠΎΠ³ΠΎ ΡˆΠ°Ρ€Π°.

Procedure draw () ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π½Π° ΡΠΊΡ€Π°Π½Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояния ΠΈΠ³Ρ€Ρ‹.

Procedure click (m, n: integer) ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ Π»Π΅Π²ΠΎΠΉ клавиши ΠΌΡ‹ΡˆΠΈ.

— m, n: integer — ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ происходит Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅;

Procedure tick () — Ρ‚ΠΈΠΊ ΠΎΡ‚ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°.

Procedure clear () — ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅ ΠΎΡ‚ ΡˆΠ°Ρ€ΠΎΠ².

Function checkFigure (): boolean провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π»ΠΈΠ½ΠΈΠΉ.

Function existPath (m, n, m2, n2: integer): boolean провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ свободного ΠΏΡƒΡ‚ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ.

— m, n: integer — ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ 1-ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ;

— m2, n2: integer — ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ 2-ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ.

Procedure start () запускаСт процСсс ΠΈΠ³Ρ€Ρ‹.

Procedure generate () Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹Π΅ ΡˆΠ°Ρ€Ρ‹.

Function toGameX (x, y: integer) ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΊΠΎΠ½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π² ΠΈΠ³Ρ€ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ Π₯.

— x, y: integer — экранныС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ… ΠΈ y.

Function toGameY (x, y: integer) ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΊΠΎΠ½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π² ΠΈΠ³Ρ€ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ Y.

— x, y: integer — экранныС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ… ΠΈ y.

Procedure lose () ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡΠΎΠ±Ρ‹Ρ‚ия Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹ΡˆΠ΅.

ΠΈΠ³Ρ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ„ΠΎΡ€ΠΌΠ° lines

2.5 ОписаниС элСмСнтов Ρ„ΠΎΡ€ΠΌΡ‹. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий

Рисунок. 2.5 — Бтартовая Ρ„ΠΎΡ€ΠΌΠ° прилоТСния

Π’ Π³Π»Π°Π²Π½ΠΎΠΌ мСню содСрТится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡƒΠ½ΠΊΡ‚: «Π˜Π³Ρ€Π°». Он ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ ΠΏΠΎΠ΄ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ «ΠΠΎΠ²Π°Ρ» ΠΈ «Π’Ρ‹Ρ…ΠΎΠ΄». ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ΄ΠΏΡƒΠ½ΠΊΡ‚Π° Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ процСсс ΠΈΠ³Ρ€Ρ‹. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΡƒΠ½ΠΊΡ‚ позволяСт Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΈΠ³Ρ€Ρ‹. ПослС запуска ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ процСсса Π½Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… мСстах ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡˆΠ΅ΡΡ‚ΡŒ ΡˆΠ°Ρ€ΠΈΠΊΠΎΠ² случайного Ρ†Π²Π΅Ρ‚Π°. Π’Ρ€ΠΈ ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌΠΈ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля. Они ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ выставлСнныС Π½Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΡˆΠ°Ρ€ΠΈΠΊΠΈ. Π’Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠΌΠ΅ΡŽΡ‚ мСньший Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ мСста, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ выставлСны ΡˆΠ°Ρ€ΠΈΠΊΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚Π° послС Ρ…ΠΎΠ΄Π° ΠΈΠ³Ρ€ΠΎΠΊΠ°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля послС Π½Π°Ρ‡Π°Π»Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ процСсса ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.6.

Рисунок 2.6 — Π€ΠΎΡ€ΠΌΠ° прилоТСния послС старта ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ процСсса Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ…ΠΎΠ΄, ΠΈΠ³Ρ€ΠΎΠΊΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΠΎ ΡˆΠ°Ρ€ΠΈΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ‰Ρ‘Π»ΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ мСсту, ΠΊΡƒΠ΄Π° ΠΎΠ½ Ρ…ΠΎΡ‡Π΅Ρ‚ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ΅ ΠΏΠΎ ΡˆΠ°Ρ€ΠΈΠΊΡƒ послСдний Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΏΡ€Ρ‹Π³Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ сдСлано для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΡˆΠ°Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ ΠΏΡ€ΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ΅ ΠΏΠΎ ΠΏΡƒΡΡ‚ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠ΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ измСнСния полоТСния ΠΏΡ€Ρ‹Π³Π°ΡŽΡ‰Π΅Π³ΠΎ ΡˆΠ°Ρ€ΠΈΠΊΠ° ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.7.

Рисунок 2.7 — ΠŸΡ€Ρ‹Π³Π°ΡŽΡ‰ΠΈΠΉ ΡˆΠ°Ρ€ΠΈΠΊ ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΡˆΠ°Ρ€Π° Π½Π° ΠΊΠ»Π΅Ρ‚ΠΊΡƒ с ΠΌΠ΅Π»ΠΊΠΈΠΌ ΡˆΠ°Ρ€ΠΈΠΊΠΎΠΌ появлСниС Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ ΡƒΠΆΠ΅ Π² ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, сохраняСтся число ΡˆΠ°Ρ€ΠΎΠ² ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ послС Ρ…ΠΎΠ΄Π° ΠΈΠ³Ρ€ΠΎΠΊΠ°. Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.8. (стрСлками ΡƒΠΊΠ°Π·Π°Π½Ρ‹ направлСния двиТСния ΡˆΠ°Ρ€ΠΈΠΊΠΎΠ² для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ понимания происходящСго).

Рисунок 2.8 — Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ появлСния ΡˆΠ°Ρ€ΠΈΠΊΠ° ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ пяти ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡˆΠ°Ρ€ΠΈΠΊΠΎΠ² Π² Π»ΠΈΠ½ΠΈΡŽ происходит ΠΈΡ… ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ количСства ΠΎΡ‡ΠΊΠΎΠ² Π½Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ Ρ€Π°Π²Π½ΡƒΡŽ ΠΈΡ… Ρ‡ΠΈΡΠ»Ρƒ. ΠŸΡ€ΠΈ этом появлСниС Π½ΠΎΠ²Ρ‹Ρ… ΡˆΠ°Ρ€ΠΎΠ² Π½Π΅ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚. НабранныС ΠΎΡ‡ΠΊΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² Π»Π΅Π²ΠΎΠΉ Π½ΠΈΠΆΠ½Π΅ΠΉ части экрана.

Если Π½Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅ Π½Π΅ ΠΎΡΡ‚аётся большС мСста для появлСния Π½ΠΎΠ²Ρ‹Ρ… ΡˆΠ°Ρ€ΠΎΠ², Ρ‚ΠΎ ΠΈΠ³Ρ€ΠΎΠΊΡƒ засчитываСтся ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Ρˆ ΠΈ ΠΏΠΎΡΠ²Π»ΡΠ΅Ρ‚ся окошко с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ сообщСниСм. Оно ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.9.

Рисунок 2.9 — Окошко с ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΎ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹ΡˆΠ΅ ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «ΠžΠš» ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ процСсс начинаСтся Π·Π°Π½ΠΎΠ²ΠΎ.

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

Π’ Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ курсовым ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Π² ΡΡ€Π΅Π΄Π΅ Delphi ΠΈΠ³Ρ€Π° «Lines». ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ графичСский интСрфСйс. Π˜Π³Ρ€Π° ΠΈΠΌΠ΅Π΅Ρ‚ довольно Π½ΠΈΠ·ΠΊΠΈΠ΅ систСмныС трСбования. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ пСрспСктив развития ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сопровоТдСния, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ€Π΅ΠΊΠΎΡ€Π΄ΠΎΠ², Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, настройки уровня слоТности, Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ.

МоТно ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ нСдостатки:

— Π½Π΅ ΡΠ°ΠΌΠΎΠ΅ высокоС качСство графичСского оформлСния;

— ΠΎΡ‚сутствуСт Π²Ρ‹Π±ΠΎΡ€ ΠΈΠ»ΠΈ настройка уровня слоТности;

— ΠΎΡ‚сутствуСт анимация пСрСмСщСния ΠΈ ΠΈΡΡ‡Π΅Π·Π½ΠΎΠ²Π΅Π½ΠΈΡ ΡˆΠ°Ρ€ΠΈΠΊΠΎΠ²;

— ΠΎΡ‚сутствуСт Ρ‚Π°Π±Π»ΠΈΡ†Π° Ρ€Π΅ΠΊΠΎΡ€Π΄ΠΎΠ².

Для Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ функционирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ тСхничСская систСма Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ трСбованиям: процСссор Celeron 266 ΠœΠ“Ρ†, опСративная ΠΏΠ°ΠΌΡΡ‚ΡŒ 64 Мб, свободноС мСсто Π½Π° ΠΆΠ΅ΡΡ‚ΠΊΠΎΠΌ дискС 1 Мб.

Бписок источников

1 Π—ΡƒΠ±ΠΎΠ², А. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Delphi. Π’Ρ€ΡŽΠΊΠΈ ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚Ρ‹ / А. Π—ΡƒΠ±ΠΎΠ². — Π‘Пб: ΠŸΠΈΡ‚Π΅Ρ€, 2005. — 396 с.

2 Π€Π°Ρ€ΠΎΠ½ΠΎΠ², Π’.Π’. Delphi. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ высокого уровня / Π’. Π€Π°Ρ€ΠΎΠ½ΠΎΠ². — Π‘Пб: ΠŸΠΈΡ‚Π΅Ρ€, 2004. — 640 с.

3 Delphi 7. НаиболСС ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство / А. Π₯ΠΎΠΌΠΎΠ½Π΅Π½ΠΊΠΎ, Π’. Π“ΠΎΡ„ΠΌΠ°Π½, Π•. ΠœΠ΅Ρ‰Π΅Ρ€ΡΠΊΠΎΠ², Π’. Никифоров. — Π‘Пб: Π‘Π₯Π’, 2008. — 1216 с.

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

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

unit main;

interface

uses

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

Dialogs, GameManager, ExtCtrls, Menus, StdCtrls;

type

TmainForm = class (TForm)

Timer1: TTimer;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

scores: TLabel;

procedure FormCreate (Sender: TObject);

procedure FormClose (Sender: TObject; var Action: TCloseAction);

procedure N3Click (Sender: TObject);

procedure N2Click (Sender: TObject);

procedure Timer1Timer (Sender: TObject);

procedure FormMouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FormPaint (Sender: TObject);

procedure FormResize (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

mainForm: TmainForm;

g: Game;

implementation

{$R *.dfm}

procedure TmainForm. FormCreate (Sender: TObject);

begin

width:= GameManager. OFFSET_X + GameManager. FIELD_SIZE * 10 + GameManager. OFFSET_X;

height:= GameManager. OFFSET_Y + GameManager. FIELD_SIZE * 12 + GameManager. OFFSET_Y;

g:= Game. create (canvas, 10,10,3);

scores. Top:= GameManager. OFFSET_Y + GameManager. FIELD_SIZE * 10 + 10;

end;

procedure TmainForm. N3Click (Sender: TObject);

begin

g. Free;

Application. Terminate;

end;

procedure TmainForm. N2Click (Sender: TObject);

begin

g.start ();

timer1. Enabled:= true;

end;

procedure TmainForm. Timer1Timer (Sender: TObject);

begin

g.tick ();

scores. Caption:= 'ΠžΡ‡ΠΊΠΈ: ' + IntToStr (g.score);

end;

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

Shift: TShiftState; X, Y: Integer);

begin

if (button = mbLeft) then

g.click (g.toGameX (x, y), g. toGameY (x, y));

end;

procedure TmainForm. FormPaint (Sender: TObject);

begin

g.draw ();

end;

procedure TmainForm. FormResize (Sender: TObject);

begin

width:= GameManager. OFFSET_X + GameManager. FIELD_SIZE * 10 + GameManager. OFFSET_X;

height:= GameManager. OFFSET_Y + GameManager. FIELD_SIZE * 12 + GameManager. OFFSET_Y;

end;

end.

unit main;

interface

uses

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

Dialogs, GameManager, ExtCtrls, Menus, StdCtrls;

type

TmainForm = class (TForm)

Timer1: TTimer;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

scores: TLabel;

procedure FormCreate (Sender: TObject);

procedure FormClose (Sender: TObject; var Action: TCloseAction);

procedure N3Click (Sender: TObject);

procedure N2Click (Sender: TObject);

procedure Timer1Timer (Sender: TObject);

procedure FormMouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FormPaint (Sender: TObject);

procedure FormResize (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

mainForm: TmainForm;

g: Game;

implementation

{$R *.dfm}

procedure TmainForm. FormCreate (Sender: TObject);

begin

width:= GameManager. OFFSET_X + GameManager. FIELD_SIZE * 10 + GameManager. OFFSET_X;

height:= GameManager. OFFSET_Y + GameManager. FIELD_SIZE * 12 + GameManager. OFFSET_Y;

g:= Game. create (canvas, 10,10,3);

scores. Top:= GameManager. OFFSET_Y + GameManager. FIELD_SIZE * 10 + 10;

end;

procedure TmainForm. FormClose (Sender: TObject; var Action: TCloseAction);

begin

g. Free;

end;

procedure TmainForm. N3Click (Sender: TObject);

begin

g. Free;

Application. Terminate;

end;

procedure TmainForm. N2Click (Sender: TObject);

begin

g.start ();

timer1. Enabled:= true;

end;

procedure TmainForm. Timer1Timer (Sender: TObject);

begin

g.tick ();

scores. Caption:= 'ΠžΡ‡ΠΊΠΈ: ' + IntToStr (g.score);

end;

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

Shift: TShiftState; X, Y: Integer);

begin

if (button = mbLeft) then

g.click (g.toGameX (x, y), g. toGameY (x, y));

end;

procedure TmainForm. FormPaint (Sender: TObject);

begin

g.draw ();

end;

procedure TmainForm. FormResize (Sender: TObject);

begin

width:= GameManager. OFFSET_X + GameManager. FIELD_SIZE * 10 + GameManager. OFFSET_X;

height:= GameManager. OFFSET_Y + GameManager. FIELD_SIZE * 12 + GameManager. OFFSET_Y;

end;

end.

unit gameBall;

interface

uses Graphics;

type

Ball = class

color: TColor;

x, y, r: integer;

ox, oy, fs: integer;

small: boolean;

constructor create (c: TColor; x, y, r: integer); overload;

procedure draw (canvas: TCanvas);

end;

implementation

{BALL}

constructor Ball. create (c: TColor; x, y, r: integer);

begin

color:= c;

self.x:= x;

self.y:= y;

self.r:= r;

end;

procedure Ball. draw (canvas: TCanvas);

var oldPen: TColor;

oldBrush:TColor;

worldX, worldY: integer;

begin

oldPen:= canvas. Pen. Color;

oldBrush:= canvas. Brush. Color;

canvas. Pen. Color:= clBlack;

canvas. Brush. Color:= color;

worldX:= oy + fs*(y+1);

worldY:= ox + fs*x;

canvas. Ellipse (worldX-r, worldY-r, worldX+r, worldY+r);

canvas. Pen. Color:= oldPen;

canvas. Brush. Color:= oldBrush;

end;

end.

unit gameGrid;

interface

uses Graphics, gameBall;

type

Grid = class

private

sizeX, sizeY: integer;

balls: array of array of Ball;

canvas: TCanvas;

selIndexX, selIndexY: integer;

score: integer;

countToGenerate: integer;

procedure doMove (m, n, m2, n2: integer);

public

constructor create (canvas: TCanvas; sx, sy: integer); overload;

destructor destroy (); overload;

procedure draw ();

procedure doSelect (m, n: integer);

function canMoveHere (m, n: integer): boolean;

procedure tick ();

procedure clear ();

procedure checkFigure ();

function existPath (m, n, m2, n2: integer): boolean;

end;

implementation

{GRID}

constructor Grid. create (canvas: TCanvas; sx, sy: integer);

var i: integer;

begin

self.canvas:= canvas;

sizeX:= sx;

sizeY:= sy;

selIndexX:= -1;

selIndexY:= -1;

SetLength (balls, sizeX);

for i:=0 to sizeX-1 do

SetLength (balls[i], sizeY);

end;

destructor Grid. destroy ();

var i: integer;

begin

for i:=0 to sizeX-1 do

SetLength (balls[i], 0);

SetLength (balls, 0);

end;

procedure Grid. draw ();

var i, j: integer;

begin

for i:=0 to sizeX-1 do

for j:=0 to sizeY-1 do

if (balls [i, j] <> nil) then

balls [i, j]. draw (canvas);

end;

procedure Grid. doSelect (m, n: integer);

begin

selIndexX:= m;

selIndexY:= n;

end;

procedure Grid. doMove (m, n, m2, n2: integer);

begin

end;

function Grid. canMoveHere (m, n: integer): boolean;

begin

result:= false;

end;

procedure Grid. tick ();

begin

end;

procedure Grid. clear ();

begin

end;

procedure Grid. checkFigure ();

begin

end;

function Grid. existPath (m, n, m2, n2: integer): boolean;

begin

result:= false;

end;

end.

unit Ball;

interface

uses Graphics;

type

Ball = class

private

color: TColor;

x, y, r: integer;

small: boolean;

public

constructor create (c: TColor; x, y, r: integer); overload;

procedure draw (canvas: TCanvas);

end;

implementation

{BALL}

constructor Ball. create (c: TColor; x, y, r: integer);

begin

color:= c;

self.x:= x;

self.y:= y;

self.r:= r;

end;

procedure Ball. draw (canvas: TCanvas);

var oldPen: TColor;

oldBrush:TColor;

begin

oldPen:= canvas. Pen. Color;

oldBrush:= canvas. Brush. Color;

canvas. Pen. Color:= clBlack;

canvas. Brush. Color:= color;

canvas. Ellipse (x-r, y-r, x+r, y+r);

canvas. Pen. Color:= oldPen;

canvas. Brush. Color:= oldBrush;

end;

unit Ball;

interface

uses Graphics;

type

Ball = class

private

color: TColor;

x, y, r: integer;

small: boolean;

public

constructor create (c: TColor; x, y, r: integer); overload;

procedure draw (canvas: TCanvas);

end;

implementation

{BALL}

constructor Ball. create (c: TColor; x, y, r: integer);

begin

color:= c;

self.x:= x;

self.y:= y;

self.r:= r;

end;

procedure Ball. draw (canvas: TCanvas);

var oldPen: TColor;

oldBrush:TColor;

begin

oldPen:= canvas. Pen. Color;

oldBrush:= canvas. Brush. Color;

canvas. Pen. Color:= clBlack;

canvas. Brush. Color:= color;

canvas. Ellipse (x-r, y-r, x+r, y+r);

canvas. Pen. Color:= oldPen;

canvas. Brush. Color:= oldBrush;

end;

end.

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