Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ³ΡΡ Β«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.