ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Β«ΠΠΎΡΡΠΊΠΎΠΉ Π±ΠΎΠΉΒ»
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° «ΠΠΎΡΡΠΊΠΎΠΉ Π±ΠΎΠΉ» — ΡΠΈΡΡΠΎ ΠΈΠ³ΡΠΎΠ²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½ΠΈΡ ΠΈΠ³ΡΠΎΠ²ΡΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ½Π° ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΡΡΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π΅Π΅ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Π½Π° ΠΈΠ³ΡΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅ ΠΊΠΎΡΠ°Π±Π»ΠΈ ΠΈ «ΡΡΡΠ΅Π»ΡΡΡ» ΠΏΠΎ ΠΊΠΎΡΠ°Π±Π»ΡΠΌ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠ°. ΠΠΈΠΆΠ΅ Π² Π²ΠΈΠ΄Π΅ ΡΡ Π΅ΠΌ ΠΠ°ΡΡΠΈ-Π¨Π½Π΅ΠΉΠ΄Π΅ΡΠΌΠ°Π½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: Π€ΡΠ½ΠΊΡΠΈΡ Draw (Π ΠΈΡ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Β«ΠΠΎΡΡΠΊΠΎΠΉ Π±ΠΎΠΉΒ» (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° «ΠΠΎΡΡΠΊΠΎΠΉ Π±ΠΎΠΉ» — ΡΠΈΡΡΠΎ ΠΈΠ³ΡΠΎΠ²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½ΠΈΡ ΠΈΠ³ΡΠΎΠ²ΡΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ½Π° ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΡΡΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π΅Π΅ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Π½Π° ΠΈΠ³ΡΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅ ΠΊΠΎΡΠ°Π±Π»ΠΈ ΠΈ «ΡΡΡΠ΅Π»ΡΡΡ» ΠΏΠΎ ΠΊΠΎΡΠ°Π±Π»ΡΠΌ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠ°.
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ: Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ ΠΈΠ³ΡΡ «ΠΠΎΡΡΠΊΠΎΠΉ Π±ΠΎΠΉ» Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ — ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Π² ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ»Π°ΡΡΠΎΠ² (ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈ), ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΈ, Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΠΠ).
Π¦Π΅Π»Ρ: ΠΠΎΡΡΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΈ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ°ΡΠΎΠΉ ΡΠ΅ΡΡΡΡΠΎΠ².
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΡΠ»Π°Π΄ΠΈΡΡΡΡ ΠΈΠ³ΡΠΎΠΉ «ΠΠΎΡΡΠΊΠΎΠΉ Π±ΠΎΠΉ» Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ — ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ
ΠΡΠ΅Π΄ΠΌΠ΅ΡΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° — ΠΈΠ³ΡΠ° «ΠΠΎΡΡΠΊΠΎΠΉ Π±ΠΎΠΉ». ΠΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°ΠΆΠ°ΡΠΈΠΉ Π½Π° ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΌΡΡΠΈ (ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠ°Π±Π»Π΅ΠΉ ΠΈ Π²ΡΡΡΡΠ΅Π»Ρ ΠΏΠΎ ΠΊΠΎΡΠ°Π±Π»ΡΠΌ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠ°, ΡΠ΄Π°ΡΠ½ΡΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΡ ΡΠΈΠΊΡΠΈΡΡΡΡΡΡ ΠΆΠ΅Π»ΡΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ).
ΠΡΠ°Π²ΠΈΠ»Π° ΠΈΠ³ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: Π² ΠΏΠΎΠ»Π΅ 10×10 ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ°ΡΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ²ΠΎΠΈ ΠΊΠΎΡΠ°Π±Π»ΠΈ (ΠΊΠΎΡΠ°Π±Π»ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π»Π΅ΠΆΠ°ΡΡ Π΄ΡΡΠ³ Π½Π° Π΄ΡΡΠ³Π΅, ΡΡΠΎΡΡΡ ΡΡΠ΄ΠΎΠΌ, ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΡΡ). Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΠΈΠ³ΡΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅ ΡΠ°ΡΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ²ΠΎΠΈ ΠΊΠΎΡΠ°Π±Π»ΠΈ. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΡΠ°Π±Π»Π΅ΠΉ 10, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: ΠΎΠ΄ΠΈΠ½ ΡΠ΅ΡΡΡΠ΅Ρ ΠΏΠ°Π»ΡΠ±Π½ΡΠΉ (ΠΎΠ΄Π½Π° ΠΏΠ°Π»ΡΠ±Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ»Π΅ΡΠΊΠ΅ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ), Π΄Π²Π° ΡΡΠ΅Ρ ΠΏΠ°Π»ΡΠ±Π½ΡΡ , ΡΡΠΈ Π΄Π²ΡΡ ΠΏΠ°Π»ΡΠ±Π½ΡΠΉ ΠΈ ΡΠ΅ΡΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠΏΠ°Π»ΡΠ±Π½ΡΡ . ΠΠΎΡΠ»Π΅ ΡΠ°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΊΠΎΡΠ°Π±Π»Π΅ΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΏΠΎΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎ «ΡΡΡΠ΅Π»ΡΡΡ» ΠΏΠΎ ΠΊΠ»Π΅ΡΠΊΠ°ΠΌ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠ°. ΠΡΠ»ΠΈ ΠΊΠΎΠΌΡ-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π½ΠΈΡ ΡΠ΄Π°Π»ΠΎΡΡ ΠΏΠΎΠΏΠ°ΡΡΡ Π²ΠΎ Π²ΡΠ°ΠΆΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΡΠ°Π±Π»Ρ, ΡΠΎ, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ, Ρ ΠΎΠ΄ Π½Π΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΡ (Π΅ΡΠ»ΠΈ ΠΈΠ³ΡΠΎΠΊ ΠΏΠΎΠΏΠ°Π» Π² ΠΊΠΎΡΠ°Π±Π»Ρ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠ°, ΡΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ°Π²ΠΎ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΡΡΡΠ΅Π»Π°) Π΄ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠΌΠ°Ρ Π°. ΠΠΎΠ±Π΅Π΄Π° Π΄ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠΎΠΌΡ, ΠΊΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ½ΠΈΡΡΠΎΠΆΠΈΡ Π²ΡΠ΅ ΠΊΠΎΡΠ°Π±Π»ΠΈ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠ°. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅ΡΠ΅Π΄Π΅Π½ΡΠΎΠ², Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Ρ Π²Π°ΡΠΈΠ°Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ²
Π‘ ΡΠ΅Π»ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΠΈ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° Π½Π° ΠΊΠ»Π°ΡΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² Π΄Π°Π΅Ρ ΡΠ»ΡΡΡΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Π° Π·Π½Π°ΡΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠ΅ΡΠΊΠΎ ΠΏΡΠΎΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡΡΡ Π³ΡΡΠΏΠΏΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·-Π·Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π½ΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΡΠΎΠΈΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π² ΠΊΠ»Π°ΡΡΡ. ΠΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π² ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ:
— Flot
— AI
— Referee
— HandersOfEvents
ΠΠ»Π°ΡΡ Flot — ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΊΠΎΡΠ°Π±Π»ΡΡ (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΡΠ°Π±Π»Π΅ΠΉ, ΠΏΠΎΠ»Π΅ Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ ΠΊΠΎΡΠ°Π±Π»ΠΈ ΠΈ Ρ. Π΄.);
ΠΠ»Π°ΡΡ AI — ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΠ°, ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅Ρ ΠΊΠΎΡΠ°Π±Π»ΠΈ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠ°;
ΠΠ»Π°ΡΡ Referee — Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ ΠΊΠ»Π°ΡΡΠ° AI, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠΎΡΠ°Π±Π»Π΅ΠΉ ΠΈ ΡΠ»ΠΎΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°;
ΠΠ»Π°ΡΡ HandersOfEvents — Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ ΠΊΠ»Π°ΡΡΠ° Referee. ΠΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΡΠΎΡΠΌΠΎΠΉ Π½Π°ΠΏΡΡΠΌΡΡ.
Π’Π°ΠΊΠΆΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΡΡΠΊΡΡΡΠ° Ship, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°Π»ΡΠ± ΠΊΠΎΡΠ°Π±Π»Ρ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠ°ΡΡΠ΅ΠΉ ΠΊΠΎΡΠ°Π±Π»Ρ, ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΊΠΎΡΠ°Π±Π»Ρ Π² ΡΠ΅Π»ΠΎΠΌ.
// ΠΊΠ»Π°ΡΡ Flot
class Flot
{
public:
int i, j, n; // ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΡΠΈΠΊΠ»Π°Ρ
bool destroy; // ΡΠ»Π°Π³, ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠΈΠΉ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ»ΠΎΡΠ°
TImage *Im; // ΠΏΠΎΠ»Π΅, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ ΡΠΈΡΡΠ΅ΠΌ
Ship ship[10]; // ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΡΠ°Π±Π»Π΅ΠΉ
Flot (TImage *I)
{
destroy = false;
Im = I;
n = 1;
for (i = 0; i < 10; i++)
{
if (i < 6) n = 2;
if (i < 3) n = 3;
if (i == 0) n = 4;
ship[i]. destroy = false;
ship[i]. col_deck = n;
ship[i]. decks = new bool[n];
ship[i].desp_of_part = new TPoint[n];
}
}
int GetStatus ();
};
// ΠΊΠ»Π°ΡΡ AI
class AI
{
public:
int Generation (Flot *CPU, int col_ship, int col_deck); // ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠ°Π±Π»Π΅ΠΉ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠ°
};
// ΠΊΠ»Π°ΡΡ Referee
class Referee: public AI
{
public:
int i, j, target_player, target_CPU;
bool net1 [10], net2 [10], game_over;
Flot *player, *CPU;
Referee ()
{
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
{
net1 [i] [j] = true;
net2 [i] [j] = true;
}
game_over = false;
target_player = 0;
target_CPU = 0;
}
int GoChecking (int x, int y, int n); // Π·Π°ΠΏΡΡΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ
int Check (bool net[10] [10], int x, int y); // ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΡ Π² ΡΡΠ°ΡΡΡ ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡΡ ΡΡΠ΅ΠΉΠΊΡ
int GoScaning (int x, int y, int n); // Π·Π°ΠΏΡΡΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
int Scan (Flot *fl, int x, int y); // ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°) ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΡ Π² ΠΊΠΎΡΠ°Π±Π»Ρ
int Miss (int x, int y, int n); // ΠΎΡΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ Π² ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠΏΠ°Π»ΠΈ (Π½ΠΎ Π½Π΅ Π² ΠΊΠΎΡΠ°Π±Π»Ρ)
int EndRaund (int n); // ΠΊΠΎΠ½Π΅Ρ ΠΈΠ³ΡΡ
};
// ΠΊΠ»Π°ΡΡ HandlersOfEvents
class HandlersOfEvents: public Referee
{
public:
bool play;
int col_deck, col_ship, i, j, k;
HandlersOfEvents (TImage *Im1, TImage *Im2)
{
play = false;
col_deck = 4; col_ship = 1;
player = new Flot (Im1);
CPU = new Flot (Im2);
}
int Play (TImage *Im1, TImage *Im2);
int Move ();
int Desposition (int x, int y, TMouseButton Button); // ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠ°Π±Π»Π΅ΠΉ
int Draw (String key, int x, int y, int n); // ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
int ShootPlayer (int x, int y, int n); // Π²ΡΡΡΡΠ΅Π» ΠΈΠ³ΡΠΎΠΊΠ°
int Shoot (int x, int y); // Π²ΡΡΡΡΠ΅Π» ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°
};
// ΡΡΡΡΠΊΡΡΡΠ° Ship
struct Ship
{
bool destroy; // ΡΠ»Π°Π³ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΡΠ°Π±Π»Ρ
int col_deck; // ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°Π»ΡΠ±
bool *decks; // ΠΌΠ°ΡΡΠΈΠ² ΠΏΠ°Π»ΡΠ±
TPoint *desp_of_part; // ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠ΅ΠΉ (ΠΏΠ°Π»ΡΠ±) ΠΊΠΎΡΠ°Π±Π»Ρ
};
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ
ΠΠΈΠΆΠ΅ Π² Π²ΠΈΠ΄Π΅ ΡΡ Π΅ΠΌ ΠΠ°ΡΡΠΈ-Π¨Π½Π΅ΠΉΠ΄Π΅ΡΠΌΠ°Π½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: Π€ΡΠ½ΠΊΡΠΈΡ Draw (Π ΠΈΡ. 3), Π€ΡΠ½ΠΊΡΠΈΡ ShootPlayer (x, y, n) (Π ΠΈΡ. 4), Π€ΡΠ½ΠΊΡΠΈΡ Shoot (x, y, n) (Π ΠΈΡ. 5). Π€ΡΠ½ΠΊΡΠΈΡ Disposition ΠΈΠ»ΠΈ Generation (Π ΠΈΡ. 6)
ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ key, x, y | ||||
Key = ΠΏΡΠΎΠΌΠ°Ρ ΠΠ° ΠΠ΅Ρ | ||||
ΠΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΌΠ°Ρ Π² ΡΡΠ΅ΠΉΠΊΠ΅ Ρ , Ρ | ||||
ΠΠ΅Ρ = ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ ΠΠ° ΠΠ΅Ρ | ||||
ΠΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΡΡΠ΅ΠΉΠΊΠ΅ Ρ , Ρ ΠΏΠΎΠ΄Π±ΠΈΡΡΡ ΠΏΠ°Π»ΡΠ±Ρ | ||||
ΠΠ΅Ρ = Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΡΠ°Π±Π»Ρ ΠΠ° ΠΠ΅Ρ | ||||
Ρ ΠΎΡ 1 Π΄ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°Π»ΡΠ± | ||||
ΠΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ ΠΠ° ΠΠ΅Ρ | ||||
Π ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°Π»ΡΠ±Ρ Π² ΡΡΠ΅ΠΉΠΊΠ΅ Ρ , Ρ+Ρ | Π ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°Π»ΡΠ±Ρ Π² ΡΡΠ΅ΠΉΠΊΠ΅ Ρ +Ρ, Ρ | |||
Π ΠΈΡ. 3 Π€ΡΠ½ΠΊΡΠΈΡ Draw
ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΊΡΠ΄Π° ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ | |||
ΠΠΈΠΌΠΎ ΠΠ΅Ρ ΠΠ° | |||
ΠΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ ΠΎΡ Π²ΡΡΡΡΠ΅Π»Π° | Π ΡΠ΅Π»Ρ ΠΠ° ΠΠ΅Ρ | ||
ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΡΡΠ΄Π° ΡΠΆΠ΅ ΡΡΡΠ΅Π»ΡΠ»ΠΈ | ΠΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄Π±ΠΈΡΡΡ ΠΏΠ°Π»ΡΠ±Ρ | Π‘ΠΎΠΎΠ±ΡΠΈΡΡ ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠΈ Π² ΡΠ°ΡΡΡΡΠ΅Π»ΡΠ½Π½ΡΡ ΡΠ°Π½Π΅Π΅ ΡΡΠ΅ΠΉΠΊΡ | |
ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΡΡΠ΄Π° ΡΠΆΠ΅ ΡΡΡΠΊΠ»ΡΠ»ΠΈ | |||
Π ΠΈΡ. 4 Π€ΡΠ½ΠΊΡΠΈΡ ShootPlayer (x, y, n)
ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π²ΡΡΡΡΠ΅Π»Π° Π² ShootPlayer | ||||||
Π² ShootPlayer ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ ΠΠ° ΠΠ΅Ρ | ||||||
Π€Π»ΠΎΡ CPU ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ ΠΠ° ΠΠ΅Ρ | Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ | |||||
ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ x, y, Π΄Π»Ρ CPU | ||||||
ΠΠΎΠ½Π΅Ρ ΡΠ°ΡΠ½Π΄Π° | ΠΡΡ ΠΎΠ΄ | ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΡΡΡΠ΅Π»Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Π² ShootCPU | ||||
ΠΡΡ ΠΎΠ΄ | Π² ShootCPU ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ ΠΠ° ΠΠ΅Ρ | |||||
Π€Π»ΠΎΡ ΠΈΠ³ΡΠΎΠΊΠ° ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ ΠΠ° ΠΠ΅Ρ | ΠΡΠ΅ΡΠ²Π°ΡΡ ΡΠΈΠΊΠ» | |||||
ΠΠΎΠ½Π΅Ρ ΡΠ°ΡΠ½Π΄Π° | ΠΡΡ ΠΎΠ΄ | |||||
ΠΡΡ ΠΎΠ΄ | ||||||
Π ΠΈΡ. 5. Π€ΡΠ½ΠΊΡΠΈΡ Shoot (x, y, n)
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°Π»ΡΠ± col_dec = 4 ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΡΠ°Π±Π»Π΅ΠΉ col_ship = 1 | |||||||
col_ship < = 10 | |||||||
k ΠΎΡ 0 Π΄ΠΎ col_ship | |||||||
i ΠΎΡ 0 Π΄ΠΎ 10 | |||||||
j ΠΎΡ 0 Π΄ΠΎ 10 | |||||||
j ΠΎΡ 0 Π΄ΠΎ col_dec | |||||||
ΠΠΎΠΆΠ΅Ρ Π»ΠΈ Π·Π΄Π΅ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π΄Π°Π½Π½Π°Ρ ΠΏΠ°Π»ΡΠ±Π°? ΠΠ° ΠΠ΅Ρ | |||||||
Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΊΠΎΡΠ°Π±Π»Ρ | |||||||
col_ship = 1? ΠΠ° ΠΠ΅Ρ | |||||||
col_dec = 3 | |||||||
col_ship = 3? ΠΠ° ΠΠ΅Ρ | |||||||
col_dec = 2 | |||||||
col_ship = 6? ΠΠ° ΠΠ΅Ρ | |||||||
col_dec = 1 | |||||||
col_ship = col_ship + 1 | |||||||
Π ΠΈΡ. 6. Π€ΡΠ½ΠΊΡΠΈΡ Disposition ΠΈΠ»ΠΈ Generation
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠΎΠΉ Ρ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠΎΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΠΎΠ±Π΅Π΄Ρ, Ρ. Π΅. ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½Ρ Π²ΡΠ΅ 10 ΠΊΠΎΡΠ°Π±Π»Π΅ΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠΎΠ².
ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ²ΠΎΠΈ ΠΊΠΎΡΠ°Π±Π»ΠΈ ΠΏΠΎΡΠ΅ΡΡΠ» ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ, ΠΈΠ³ΡΠΎΠΊΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΠΎΠ±Π΅Π΄Π΅
Π ΠΈΡ. 7. Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΠΎΠ±Π΅Π΄Π΅
ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ²ΠΎΠΈ ΠΊΠΎΡΠ°Π±Π»ΠΈ ΠΏΠΎΡΠ΅ΡΡΠ» ΠΈΠ³ΡΠΎΠΊ, Π΅ΠΌΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΡΠΎΠΈΠ³ΡΡΡΠ΅
Π ΠΈΡ. 8. Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΡΠΎΠΈΠ³ΡΡΡΠ΅
Π Π½Π°ΡΠ°Π»Π΅ ΠΈΠ³ΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΊΠΎΡΠ°Π±Π»Π΅ΠΉ:
Π ΠΈΡ. 9. Π Π°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΊΠΎΡΠ°Π±Π»Π΅ΠΉ
ΠΡΠ»ΠΈ ΠΈΠ³ΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ» Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ «Π½Π°Π»ΠΎΠΆΠΈΡΡ» ΠΊΠΎΡΠ°Π±Π»Ρ Π½Π° ΠΊΠΎΡΠ°Π±Π»Ρ) Π΅ΠΌΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π΅Π³ΠΎ ΠΎΡΠΈΠ±ΠΊΠ΅.
ΠΡΠ»ΠΈ ΡΠ°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΊΠΎΡΠ°Π±Π»Π΅ΠΉ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π½Π°ΡΠ°Π»Ρ ΠΈΠ³ΡΡ
Π ΠΈΡ. 10. ΠΠ°ΡΠ°Π»ΠΎ ΠΈΠ³ΡΡ
Π ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠΌΠ°Ρ Π° ΠΈΠ³ΡΠΎΠΊΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΡΠΎΠΌΠ°Ρ Π΅
Π ΠΈΡ. 11. Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΡΠΎΠΌΠ°Ρ Π΅
Π ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΡ ΠΈΠ³ΡΠΎΠΊΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠΈ
Π ΠΈΡ. 12 Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠΈ
Π ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΡ Π² ΡΡΠ΅ΠΉΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΆΠ΅ ΠΎΠ±ΡΡΡΠ΅Π»ΡΠ½Π°, ΠΈΠ³ΡΠΎΠΊΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΡΡΡΠ΅Π»ΠΈΡΡ Π΅ΡΡ ΡΠ°Π·
Π ΠΈΡ. 13. Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π²ΡΡΡΡΠ΅Π»Π΅ Π² ΠΎΠ±ΡΡΡΠ΅Π»ΡΠ½Π½ΡΡ ΡΡΠ΅ΠΉΠΊΡ
ΠΠ½Π°Π»ΠΈΠ· ΡΠ°Π±ΠΎΡΡ
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π±ΡΠ»ΠΈ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½Ρ Π·Π½Π°Π½ΠΈΡ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΎΠ½Π΅Ρ ΠΈΠ³ΡΡ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ Π² Π΄Π²ΡΡ ΡΠ»ΡΡΠ°ΡΡ : ΠΏΠΎΠ±Π΅Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ±Π΅Π΄Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. Π’Π°ΠΊΠΆΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ»ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π²ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: Π½Π΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅Ρ Π»ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠΎΡΠ°Π±Π»ΠΈ Π² ΡΠΎΡΠ΅Π΄Π½ΠΈΡ ΠΊΠ»Π΅ΡΠΊΠ°Ρ , Π½Π΅ ΡΡΠ°Π²ΠΈΡ Π»ΠΈ ΠΎΠ½ ΠΊΠΎΡΠ°Π±Π»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ³Π»Π°Ρ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ, Π½Π΅ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π»ΠΈ ΠΊΠΎΡΠ°Π±Π»ΠΈ ΠΎΠ΄ΠΈΠ½ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ. Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΊΠΎΡΠ°Π±Π»Π΅ΠΉ ΠΈ ΠΏΠ°Π»ΡΠ± Π½Π° Π½ΠΈΡ (1 ΡΠ΅ΡΡΡΠ΅Ρ ΠΏΠ°Π»ΡΠ±Π½ΡΠΉ, 2 ΡΡΠ΅Ρ ΠΏΠ°Π»ΡΠ±Π½ΡΡ , 3 Π΄Π²ΡΡ ΠΏΠ°Π»ΡΠ±Π½ΡΡ , 1 ΠΎΠ΄Π½ΠΎΠΏΠ°Π»ΡΠ±Π½ΡΡ ). ΠΡΠ΅ Π²ΡΡΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΊΠΈ Π±ΡΠ»ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Ρ ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΡΡΡΠ°Π½Π΅Π½Ρ.
ΠΠΎ Π²ΡΠ΅ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΏΠΎΠ»ΡΡΠΈΠ» Π½Π°Π²ΡΠΊΠΈ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ , ΡΠ°Π½Π΅Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠ½ΠΎΠΉ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΡΠ΅Π΄Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘++ Builder 6.
Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ Π·Π°ΠΊΡΠ΅ΠΏΠΈΠ» ΡΠ²ΠΎΠΈ Π·Π½Π°Π½ΠΈΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ. ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ Π·Π½Π°Π½ΠΈΡ ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π½ΠΈΠΌΠΈ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ°Π±ΠΎΡΠ΅ Π½Π°Π΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ Π±ΡΠ»ΠΈ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½Ρ Π·Π½Π°Π½ΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: Π’Π΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Π’Π΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ: UShipBattle. h, UShipBattle. cpp, ShipBattle. cpp
ShipBattle.cpp
// ;
#include
#pragma hdrstop
// ;
USEFORM («UShipBattle.cpp», Form1);
// ;
WINAPI WinMain (HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize ();
Application->CreateForm (__classid (TForm1), &Form1);
Application->Run ();
}
catch (Exception &exception)
{
Application->ShowException (&exception);
}
catch (…)
{
try
{
throw Exception (««);
}
catch (Exception &exception)
{
Application->ShowException (&exception);
}
}
return 0;
}
// ;
UShipBattle.cpp
// ;
#include
#pragma hdrstop
#include «UShipBattle.h»
// ;
#pragma package (smart_init)
#pragma resource «*.dfm»
TForm1 *Form1;
// ;
__fastcall TForm1: TForm1 (TComponent* Owner)
: TForm (Owner)
{
HE = new HandlersOfEvents (Fild1, Fild2);
}
// ;
int Flot: GetStatus ()
{
destroy = true;
for (j = 0; j < 10; j++)
for (i = 0; i < ship[j]. col_deck; i++)
if (ship[j]. decks[i])
{
destroy = false;
return 1;
}
return 0;
}
// ;
int AI: Generation (Flot *CPU, int col_ship, int col_deck)
{
int x1, y1, k, i, j;
bool vertical = false, regen;
do {
randomize ();
x1 = rand ()% 10;
y1 = rand ()% 10;
regen = false;
for (k = 0; k < col_deck; k++)
for (i = 0; i < col_ship; i++)
for (j = 0; j < CPU -> ship[i]. col_deck; j++)
{
if (regen) break;
if (! vertical)
{
if ((CPU -> ship[i]. desp_of_part[j].x == x1 + k &&
CPU -> ship[i]. desp_of_part[j].y == y1) || (x1 + k >= 10))
{
vertical = true;
regen = true;
continue;
}
if ((CPU -> ship[i]. desp_of_part[j].x — 1 == x1 + k ||
CPU -> ship[i]. desp_of_part[j].x + 1 == x1 + k) &&
(CPU -> ship[i]. desp_of_part[j].y — 1 == y1 ||
CPU -> ship[i]. desp_of_part[j].y + 1 == y1))
{
vertical = true;
regen = true;
continue;
}
}
if (vertical)
{
if ((CPU -> ship[i]. desp_of_part[j].x == x1 &&
CPU -> ship[i]. desp_of_part[j].y == y1 + k) ||
(y1 + k >= 10))
{
vertical = false;
regen = true;
continue;
}
if ((CPU -> ship[i]. desp_of_part[j].x — 1 == x1 ||
CPU -> ship[i]. desp_of_part[j].x + 1 == x1) &&
(CPU -> ship[i]. desp_of_part[j].y — 1 == y1 + k ||
CPU -> ship[i]. desp_of_part[j].y + 1 == y1 + k))
{
vertical = true;
regen = true;
continue;
}
}
}
} while (regen);
if (! vertical)
for (i = 0; i < col_deck; i++)
{
CPU -> ship [col_ship — 1]. desp_of_part[i].x = x1 + i;
CPU -> ship [col_ship — 1]. desp_of_part[i].y = y1;
}
else
for (i = 0; i < col_deck; i++)
{
CPU -> ship [col_ship — 1]. desp_of_part[i].x = x1;
CPU -> ship [col_ship — 1]. desp_of_part[i].y = y1 + i;
}
return 0;
}
// ;
int Referee: GoChecking (int x, int y, int n)
{
if (n == 1)
if (! Check (net1, x, y))
return 0;
if (n == 2)
if (! Check (net2, x, y))
return 0;
return 1;
}
// ;
int Referee: Check (bool net[10] [10], int x, int y)
{
x /= 20; y /= 20;
if (! net[x] [y]) return 0;
return 1;
}
// ;
int Referee: GoScaning (int x, int y, int n)
{
if (n == 1)
if (! Scan (player, x, y))
return 0;
if (n == 2)
if (! Scan (CPU, x, y))
return 0;
return 1;
}
// ;
int Referee: Scan (Flot *fl, int x, int y)
{
x /= 20; y /= 20;
for (i = 0; i < 10; i++)
for (j = 0; j < fl -> ship[i]. col_deck; j++)
if (fl -> ship[i]. desp_of_part[j].x == x &&
fl -> ship[i]. desp_of_part[j].y == y)
{
fl -> ship[i]. decks[j] = false;
return 0;
}
return 1;
}
// ;
int Referee: Miss (int x, int y, int n)
{
x /= 20; y /= 20;
if (n == 1) net1 [x] [y] = false;
if (n == 2) net2 [x] [y] = false;
return 1;
}
// ;
int Referee: EndRaund (int n)
{
if (n == 2)
Form1 -> Panel2 -> Caption = «ΠΡ ΠΏΠΎΠ±Π΅Π΄ΠΈΠ»ΠΈ!»;
if (n == 1)
Form1 -> Panel2 -> Caption = «ΠΡ ΠΏΡΠΎΠΈΠ³ΡΠ°Π»ΠΈ!»;
game_over = true;
return 0;
}
// ;
int HandlersOfEvents: Play (TImage *Im1, TImage *Im2)
{
Im1 -> Enabled = true;
Im2 -> Enabled = true;
return 0;
}
// ;
int HandlersOfEvents: Desposition (int x, int y, TMouseButton Button)
{
if (play) return 0;
x /= 20; y /= 20;
for (k = 0; k < col_deck; k++)
for (i = 0; i < col_ship; i++)
for (j = 0; j < player -> ship[i]. col_deck; j++)
{
if (Button == mbLeft)
{
if (player -> ship[i]. desp_of_part[j].x == x + k &&
player -> ship[i]. desp_of_part[j].y == y)
{
ShowMessage («ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅!»);
return 0;
}
if (x + k >= 10)
{
ShowMessage («ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅!»);
return 0;
}
if ((player -> ship[i]. desp_of_part[j].x — 1 == x + k ||
player -> ship[i]. desp_of_part[j].x + 1 == x + k) &&
(player -> ship[i]. desp_of_part[j].y — 1 == y ||
player -> ship[i]. desp_of_part[j].y + 1 == y))
{
ShowMessage («ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅!»);
return 0;
}
}
if (Button == mbRight)
{
if (player -> ship[i]. desp_of_part[j].x == x &&
player -> ship[i]. desp_of_part[j].y == y + k)
{
ShowMessage («ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅!»);
return 0;
}
if (y + k >= 10)
{
ShowMessage («ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅!»);
return 0;
}
if ((player -> ship[i]. desp_of_part[j].x — 1 == x ||
player -> ship[i]. desp_of_part[j].x + 1 == x) &&
(player -> ship[i]. desp_of_part[j].y — 1 == y + k ||
player -> ship[i]. desp_of_part[j].y + 1 == y + k))
{
ShowMessage («ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅!»);
return 0;
}
}
}
if (Button == mbLeft)
Draw («position_h», x*20, y*20, 1);
else
Draw («position_v», x*20, y*20, 1);
Generation (CPU, col_ship, col_deck);
if (col_ship == 1) col_deck -;
if (col_ship == 3) col_deck -;
if (col_ship == 6) col_deck -;
if (col_ship == 10) play = true;
if (play) Form1 -> Panel2 -> Caption = «ΠΠΎΠ΅Ρ Π°Π»ΠΈ»;
col_ship++;
return 0;
};
// ;
int HandlersOfEvents: Shoot (int x, int y)
{
if (game_over) return 0;
int shoot_player = ShootPlayer (x, y, 2);
if (shoot_player > 0)
do {
x = rand ()% 200;
y = rand ()% 200;
int shoot_cpu = ShootPlayer (x, y, 1);
if (shoot_cpu > 0)
break;
if (shoot_cpu < 0)
player -> GetStatus ();
if (player -> destroy || target_CPU > 19)
{
EndRaund (1);
return 0;
}
} while (true);
else
{
if (shoot_player < 0)
CPU -> GetStatus ();
if (CPU -> destroy || target_player > 19)
{
EndRaund (2);
return 0;
}
}
return 0;
}
// ;
int HandlersOfEvents: ShootPlayer (int x, int y, int n)
{
if (! play) return 0;
if (! GoChecking (x, y, n))
{
if (n == 2) Form1 -> Panel2 -> Caption = «ΠΡΡ ΡΠ°Π·! Π’ΡΠ΄Π° ΡΠΆΠ΅ ΡΡΡΠ΅Π»ΡΠ»ΠΈ!»;
return 0;
}
else if (! GoScaning (x, y, n))
{
Draw («target», x, y, n);
Miss (x, y, n);
if (n == 2)
{
Form1 -> Panel2 -> Caption = «ΠΠΎΠΏΠ°Π»! ΠΡΡ ΡΠ°Π·!»;
target_player++;
}
else target_CPU++;
return -1;
}
Miss (x, y, n);
if (n == 2) Form1 -> Panel2 -> Caption = «ΠΠΈΠΌΠΎ! Π₯ΠΎΠ΄ ΠΎΠΏΠΎΠ½Π΅Π½ΡΠ°»;
Draw («miss», x, y, n);
return 1;
}
// ;
int HandlersOfEvents: Draw (String key, int x, int y, int n)
{
TImage *Im;
x /= 20; y /= 20;
if (n == 1) Im = Form1 -> Fild1;
if (n == 2) Im = Form1 -> Fild2;
if (key == «target»)
{
Im -> Canvas -> Rectangle (x*20, y*20, x*20 + 20, y*20 + 20);
Im -> Canvas -> Brush -> Color = clYellow;
Im -> Canvas -> Rectangle (x*20, y*20 + 20, x*20 + 20, y*20);
Im -> Canvas -> Brush -> Color = clWhite;
}
if (key == «miss»)
{
Im -> Canvas -> Ellipse (x*20, y*20, x*20 + 20, y*20 + 20);
Im -> Canvas -> Ellipse (x*20 + 5, y*20 + 5, x*20 + 15, y*20 + 15);
}
if (key == «position_h»)
{
for (i = 0; i < col_deck; i++)
{
Im -> Canvas -> Brush -> Color = clBlue;
Im -> Canvas -> Rectangle (x*20 + i*20, y*20, x*20 + 20 + i*20, y*20 + 20);
player -> ship [col_ship — 1]. desp_of_part[i].x = x + i;
player -> ship [col_ship — 1]. desp_of_part[i].y = y;
Im -> Canvas -> Brush -> Color = clWhite;
}
}
if (key == «position_v»)
{
for (i = 0; i < col_deck; i++)
{
Im -> Canvas -> Brush -> Color = clBlue;
Im -> Canvas -> Rectangle (x*20, y*20 + i*20, x*20 + 20, y*20 + 20 + i*20);
player -> ship [col_ship — 1]. desp_of_part[i].x = x;
player -> ship [col_ship — 1]. desp_of_part[i].y = y + i;
Im -> Canvas -> Brush -> Color = clWhite;
}
}
return 0;
}
// ;
void __fastcall TForm1: Fild2MouseDown (TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
HE -> Shoot (X, Y);
}
// ;
void __fastcall TForm1: BitBtn2Click (TObject *Sender)
{
HE -> Play (Fild1, Fild2);
BitBtn2 -> Visible = false;
BitBtn3 -> Visible = true;
Panel2 -> Caption = «Π Π°ΡΡΡΠ°Π²ΡΡΠ΅ ΠΊΠΎΡΠ°Π±Π»ΠΈ»;
}
// ;
void __fastcall TForm1: Fild1MouseDown (TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
HE -> Desposition (X, Y, Button);
}
// ;
void __fastcall TForm1: BitBtn3Click (TObject *Sender)
{
Panel2 -> Caption = «Π Π°ΡΡΡΠ°Π²ΡΡΠ΅ ΠΊΠΎΡΠ°Π±Π»ΠΈ»;
Fild1 -> Picture -> LoadFromFile («net.bmp»);
Fild2 -> Picture -> LoadFromFile («net.bmp»);
HE = new HandlersOfEvents (Fild1, Fild2);
}
// ;
UShipBattle.h
// ;
#ifndef UShipBattleH
#define UShipBattleH
// ;
#include
#include
#include
#include
#include
#include
#include
#include
// ;
struct Ship
{
bool destroy;
int col_deck;
bool *decks;
TPoint *desp_of_part;
};
class Flot
{
public:
int i, j, n;
bool destroy;
TImage *Im;
Ship ship[10];
Flot (TImage *I)
{
destroy = false;
Im = I;
n = 1;
for (i = 0; i < 10; i++)
{
if (i < 6) n = 2;
if (i < 3) n = 3;
if (i == 0) n = 4;
ship[i]. destroy = false;
ship[i]. col_deck = n;
ship[i]. decks = new bool[n];
ship[i].desp_of_part = new TPoint[n];
}
}
int GetStatus ();
};
class AI
{
public:
TPoint decks_[20];
int col_decks_;
int Generation (Flot *CPU, int col_ship, int col_deck);
};
class Referee: public AI
{
public:
int i, j, target_player, target_CPU;
bool net1 [10], net2 [10], game_over;
Flot *player, *CPU;
Referee ()
{
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
{
net1 [i] [j] = true;
net2 [i] [j] = true;
}
game_over = false;
target_player = 0;
target_CPU = 0;
col_decks_ = 0;
}
int GoChecking (int x, int y, int n);
int Check (bool net[10] [10], int x, int y);
int GoScaning (int x, int y, int n);
int Scan (Flot *fl, int x, int y);
int Miss (int x, int y, int n);
int EndRaund (int n);
};
class HandlersOfEvents: public Referee
{
public:
bool play;
int col_deck, col_ship, i, j, k;
HandlersOfEvents (TImage *Im1, TImage *Im2)
{
play = false;
col_deck = 4; col_ship = 1;
player = new Flot (Im1);
CPU = new Flot (Im2);
}
int Play (TImage *Im1, TImage *Im2);
int Move ();
int Desposition (int x, int y, TMouseButton Button);
int Draw (String key, int x, int y, int n);
int ShootPlayer (int x, int y, int n);
int Shoot (int x, int y);
};
class TForm1: public TForm
{
__published: // IDE-managed Components
TImage *Fild1;
TImage *Fild2;
TPanel *Panel1;
TBitBtn *BitBtn1;
TBitBtn *BitBtn2;
TBitBtn *BitBtn3;
TPanel *Panel2;
void __fastcall Fild2MouseDown (TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y);
void __fastcall BitBtn2Click (TObject *Sender);
void __fastcall Fild1MouseDown (TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y);
void __fastcall BitBtn3Click (TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1 (TComponent* Owner);
HandlersOfEvents *HE;
};
// ;
extern PACKAGE TForm1 *Form1;
// ;
#endif
1. Π. Π―. ΠΡΡ Π°Π½Π³Π΅Π»ΡΡΠΊΠΈΠΉ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² C++ Builder 6. — ΠΠΠ «ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ
ΠΠΠΠΠ", ΠΠΎΡΠΊΠ²Π°, 2005
2. Π£ΠΈΠ»ΡΡΠΌ Π’ΠΎΠΏΠΏ, Π£ΠΈΠ»ΡΡΠΌ Π€ΠΎΡΠ΄. Π‘ΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ Π² Π‘++.-ΠΠΠ «ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ
ΠΠΠΠΠ", ΠΠΎΡΠΊΠ²Π°, 2000
3. Π. Π. ΠΠΎΠ΄Π±Π΅Π»ΡΡΠΊΠΈΠΉ. Π―Π·ΡΠΊ Π‘, Π‘++. «Π€ΠΈΠ½Π°Π½ΡΡ ΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°», ΠΠΎΡΠΊΠ²Π°, 2003
4. Π’. Π. ΠΠ°Π²Π»ΠΎΠ²ΡΠΊΠ°Ρ. Π‘/Π‘++. «ΠΠΈΡΠ΅Ρ», Π‘Π°Π½ΠΊΡ-ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³, 2002