ΠΠ³ΡΠΎΠ²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Β«Wall on WallΒ»
NET — ΡΡΠΎ ΠΎΠ±ΡΠΈΠΉ ΡΠ΅ΡΠΌΠΈΠ½ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ Π²Π°ΠΆΠ½ΡΡ ΡΠ»ΡΠΆΠ±, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π‘#. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π‘# ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ .NET. ΠΠ΅ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ Π‘# ΡΡ ΠΎΠ΄ΠΈΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΠΊΠΎΡΠ½ΡΠΌΠΈ Π² .NET. ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΠΆΠ½ΡΠ΅ ΡΠ»ΡΠΆΠ±Ρ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΎΠΉ .NET-ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. ΠΠ½Π°Π»ΠΈΠ· Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠ³ΡΠΎΠ²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Β«Wall on WallΒ» (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠΎΡΠΊΠΎΠ²ΡΠΊΠΈΠΉ ΠΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΠΎΡΠ½ΡΠΉ Π£Π½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ ΠΠ°ΡΠ΅Π΄ΡΠ° Π‘ΠΠΠ ΠΡΡΠ΅Ρ ΠΏΠΎ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΠΎ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅ «Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ»
ΠΠ³ΡΠΎΠ²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° «Wall on Wall»
ΠΡΠΏΠΎΠ»Π½ΠΈΠ»:
Π‘ΡΡΠ΄Π΅Π½Ρ Π³ΡΡΠΏΠΏΡ ΠΠ‘Π-Π-11
ΠΠ²Π°Π½ΠΎΠ² Π.Π.
ΠΠΎΡΠΊΠ²Π°, 2013 Π³.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
1. ΠΠ½Π°Π»ΠΈΠ· ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ ΡΡΠΎΡΠ½Π΅Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ
1.1 ΠΠ½Π°Π»ΠΈΠ· Π·Π°Π΄Π°Π½ΠΈΡ, Π²ΡΠ±ΠΎΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΡΠ·ΡΠΊΠ° ΠΈ ΡΡΠ΅Π΄Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
1.2 ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅
1.3 ΠΠ½Π°Π»ΠΈΠ· ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈ Π²ΡΠ±ΠΎΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π΅Π΅ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ
1.4 ΠΠ½Π°Π»ΠΈΠ· ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
2. ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°
2.1 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
2.1.1 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠ΅Π½Ρ
2.1.2 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΡΠΌ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ
- 3. ΠΡΠ±ΠΎΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅ΡΡΠΎΠ²
- 3.1 ΠΠ½Π°Π»ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΈ Π²ΡΠ±ΠΎΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- 3.2 ΠΠ΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
- 4. ΠΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
- 5. ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΊΠ»Π°ΡΡΠΎΠ²
- ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π¦Π΅Π»ΡΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ ΡΠ°Π·Π²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ³ΡΡ Wall on Wall. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ³ΡΠ°ΡΡ ΠΏΡΠΎΡΠΈΠ² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ³ΡΠ°Π΅Ρ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΡΠ²ΠΎΠ΅Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Visual Studio. Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΡΡΠ΅Π½Ρ ΠΌΠΎΠΌΠ΅Π½ΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π»Π΅Π³ΠΊΠΎ ΠΎΡΠ²ΠΎΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ «Π²ΠΈΠ·ΠΈΡΠ½ΠΎΠΉ ΠΊΠ°ΡΡΠΎΡΠΊΠΎΠΉ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
1. ΠΠ½Π°Π»ΠΈΠ· ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ ΡΡΠΎΡΠ½Π΅Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ
1.1 ΠΠ½Π°Π»ΠΈΠ· Π·Π°Π΄Π°Π½ΠΈΡ, Π²ΡΠ±ΠΎΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΡΠ·ΡΠΊΠ° ΠΈ ΡΡΠ΅Π΄Ρ
Π‘# — ΡΡΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ, ΠΏΠΎ Π·Π°ΠΌΡΡΠ»Ρ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Π΅ΠΉ, Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΡΠ΅ΡΠ°ΡΡΡΡ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΠΏΡΠΎΡΡΠΎΡΠ°. ΠΠ³ΠΎ ΡΠ΅Π»Ρ — ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
C# ΡΠΎΠ·Π΄Π°Π²Π°Π»ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Ρ ΠΊΠ°ΡΠΊΠ°ΡΠΎΠΌ Framework .Net ΠΈ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅ΡΠ΅ ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ — ΠΊΠ°ΠΊ FCL, ΡΠ°ΠΊ ΠΈ CLR;
C# ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ, Π³Π΄Π΅ Π΄Π°ΠΆΠ΅ ΡΠΈΠΏΡ, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π² ΡΠ·ΡΠΊ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ;
C# ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΡΠ½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ;
C# ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ ΡΠ·ΡΠΊΠΎΠ² C/C++, ΡΠΎΡ ΡΠ°Π½ΡΡ Π»ΡΡΡΠΈΠ΅ ΡΠ΅ΡΡΡ ΡΡΠΈΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ±ΡΠΈΠΉ Ρ ΡΡΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, Π·Π½Π°ΠΊΠΎΠΌΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ·ΡΠΊΠ° ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΠΎΡ Π‘++ ΠΊ C#; ΡΠΎΡ ΡΠ°Π½ΠΈΠ² ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ΅ΡΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ Π²Π΅Π»ΠΈΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ, ΡΠ·ΡΠΊ ΡΡΠ°Π» ΠΏΡΠΎΡΠ΅ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Π΅Π΅.
ΠΠ»Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘# ΠΈ Π΅Π³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΡΠ΅Π΄Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π²Π°ΠΆΠ½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ²ΡΠ·Π°Π½Π° Ρ Π‘# ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ .NET.
.NET — ΡΡΠΎ ΠΎΠ±ΡΠΈΠΉ ΡΠ΅ΡΠΌΠΈΠ½ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ Π²Π°ΠΆΠ½ΡΡ ΡΠ»ΡΠΆΠ±, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π‘#. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π‘# ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ .NET. ΠΠ΅ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ Π‘# ΡΡ ΠΎΠ΄ΠΈΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΠΊΠΎΡΠ½ΡΠΌΠΈ Π² .NET. ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΠΆΠ½ΡΠ΅ ΡΠ»ΡΠΆΠ±Ρ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΎΠΉ .NET-ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
1. .NET ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Π½Π° Π‘#. ΠΡΠ° ΡΠ°ΡΡΡ .NET Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ΅Π΄ΠΎΠΉ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (execution engine).
2. .NET ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΡΡΠ΅Π΄Ρ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ ΠΊ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ (type safe environment). ΠΠ±ΡΠ°Π·Π½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, .NET ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ «ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΡΠ΅ Π΄ΡΡΠΊΠΈ Π΄Π»Ρ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ², ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ — Π΄Π»Ρ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ²» .
3. .NET ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΠΎΡ ΡΡΠΎΠΌΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈ Π½Π΅ΡΠ΅Π΄ΠΊΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ.
4. .NET ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ ΡΡΠ΅Π΄Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΏΡΡΠ°ΡΡΡ ΡΡΠ»ΠΎΠΆΠ½ΠΈΡΡ ΠΆΠΈΠ·Π½Ρ Ρ Π°ΠΊΠ΅ΡΠ°ΠΌ ΠΈ ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ.
5. Π ΡΠΎΡΡΠ°Π² .NET-ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π²Ρ ΠΎΠ΄ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ ΠΌΠ°ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ . ΠΠ½Π° ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π½Π΅ΠΌΠ°Π»ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΌΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π°. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΎΠ½ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠΎΠ΄, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΈ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌΠΈ Microsoft.
6. Π .NET ΡΠΏΡΠΎΡΠ΅Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ (ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅).
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ»Π° ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ).
ΠΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π²ΡΡΠ΅ ΠΎ .NET — Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΡΠΎΡΠ΅ΡΠ°ΡΡΠ°Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½ΡΠΌ ΡΠ°ΠΊΡΠΎΡΠΎΠΌ, ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΡΡΠΈΠΌ ΡΡΠΏΠ΅Ρ Ρ C#.
Π‘ΡΠ΅Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Visual Studio 2010 Π±ΡΠ»Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π° Π΄Π»Ρ Π½ΡΠΆΠ΄ .NET, ΠΈ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Π²ΡΠ΅ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π² Visual Studio 2010 ΠΈΠΌΠ΅ΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΡΠ΅Π΄ΠΈ ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ Windows Forms. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows Forms ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΠ±ΡΡΠΈΠΉΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ Microsoft .NET Framework.
ΠΠ°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Microsoft Windows Π·Π° ΡΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±Π΅ΡΡΠΊΠΈ Π΄Π»Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Win32 API Π² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΌ ΠΊΠΎΠ΄Π΅.
ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ, Π±ΡΠ»ΠΎ ΠΏΡΠΈΠ½ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ·ΡΠΊ Π‘# ΠΈ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Visual Studio 2010 Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ.
1.2 ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΡΡΡΠΎΠ²Π°Ρ ΡΠ°Π±ΠΎΡΠ°, ΠΊΠ°ΠΊ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Windows Forms. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ°ΡΠΈΠΈ Visual Studio 2010:
System — ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ winAPI. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ²ΡΠ΅ΠΌΠ΅ΡΡΠ½ΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
System.Collections.Generic — ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ ΠΌΠ°ΡΡΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΈΠΌΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ.
System.Drawing — ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ Π² ΡΠ΅Π±Π΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²: ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅, ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ, Π½ΠΎΠ»ΠΈΠΊΠΈ
System.Text — ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ Π² ΡΠ΅Π±Π΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ²ΡΠ΅ΠΌΠ΅ΡΡΠ½ΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
System.Windows.Forms — ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠ»Π°ΡΡΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows Forms. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ.
1.3 ΠΠ½Π°Π»ΠΈΠ· ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈ Π²ΡΠ±ΠΎΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π΅Π΅ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ — ΠΌΠ°ΡΡΠΈΡΠ° 3×3, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΡΠ΅Π΅ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ (ΠΊΡΠ΅ΡΡΠΈΠΊ, Π½ΠΎΠ»ΠΈΠΊ ΠΈΠ»ΠΈ ΠΏΡΡΡΠΎΡΠ°).
ΠΠ»Ρ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ ΡΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡΡ 3×3, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡ 0 Π΄ΠΎ 2 (0 — ΠΏΡΡΡΠΎΡΠ°, 1 — ΠΊΡΠ΅ΡΡΠΈΠΊ, 2 — Π½ΠΎΠ»ΠΈΠΊ).
ΠΡΠΎΠΌΠ΅ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ, Π² ΠΏΠ°ΠΌΡΡΠΈ Ρ ΡΠ°Π½ΡΡΡΡ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π°Π½Π½ΡΡ :
Π’ΠΈΠΏ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΠ°: ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡ 0 Π΄ΠΎ 2 (0- ΠΈΠ³ΡΠ° Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, 1 — «ΡΠ»ΠΎΠΆΠ½ΡΠΉ» ΠΠ, 2 — «ΠΏΡΠΎΡΡΠΎΠΉ» ΠΠ), Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ.
Π’Π΅ΠΊΡΡΠΈΠΉ Ρ ΠΎΠ΄: ΠΊΡΠ΅ΡΡΠΈΠΊ, Π½ΠΎΠ»ΠΈΠΊ ΠΈΠ»ΠΈ ΠΊΠΎΠ½Π΅Ρ ΠΈΠ³ΡΡ, Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ.
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ: 0 — ΠΈΠ³ΡΠ° Π½Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°, 1 — ΠΏΠΎΠ±Π΅Π΄ΠΈΠ»ΠΈ ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ, 2 — ΠΏΠΎΠ±Π΅Π΄ΠΈΠ»ΠΈ Π½ΠΎΠ»ΠΈΠΊΠΈ, 3 — Π½ΠΈΡΡΡ, Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ.
1.4 ΠΠ½Π°Π»ΠΈΠ· Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ΅ΡΠ΅Π½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ Π² ΠΊΠ»Π°ΡΡ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΉ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, Ρ.ΠΊ. ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΈΠ·Π»ΠΈΡΠ½Π΅ΠΉ ΡΠ²ΡΠ·Π½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈ Π΄Π°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π½Π°ΠΆΠ°ΡΠΈΠΉ ΠΊΠ»Π°Π²ΠΈΡ ΠΈ Π²ΡΠ²ΠΎΠ΄ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΡ Π½Π° ΡΠΊΡΠ°Π½.
ΠΡΠΈ ΡΡΠΎΠΌ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²ΡΠ³ΠΎΠ΄Π½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΈΠ³ΡΠΎΠΊΠ° ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Π² Π΄Π²Π° ΡΠ°Π·Π½ΡΡ ΠΊΠ»Π°ΡΡΠ°: ΠΊΠ»Π°ΡΡΠ° ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ³ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π²ΡΡ ΠΈΠ³ΡΠΎΠΊΠΎΠ², ΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ³ΡΠΎΠΊΠ° ΡΠΎΠΆΠ΅ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π²ΡΠ½Π΅ΡΡΠΈ Π² ΠΊΠ»Π°ΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Ρ ΠΏΠ΅ΡΠ²ΡΠΌ.
ΠΠ»Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ Π²ΡΠ½Π΅ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π² ΠΊΠ»Π°ΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ, Ρ.ΠΎ. ΠΎΡΡΠ°Π²ΠΈΠ² Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ Π»ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΈΠ³ΡΠΎΠΊΠΎΠΌ ΠΈ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΡΠΊΡΠ°Π½ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΡ.
ΠΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½Π°Ρ ΡΡ Π΅ΠΌΠ° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ
2. ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°
2.1 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
Π Π°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΡΠ°ΡΡΠ½ΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΠ»Π°Π±ΡΠΉ Π½Π°Π²ΡΠΊ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ, ΠΈ ΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΏΡΠ΅Π΄ΡΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ. Π’Π°ΠΊ ΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ³ΡΠΎΠΉ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Ρ ΠΎΡΠΎΡΠΎ ΠΏΡΠΎΠ΄ΡΠΌΠ°Π½. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ Π½Π°ΡΠ°ΡΡ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
2.1.1 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠ΅Π½Ρ ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±ΡΡΡΡΠΎΠΉ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ-Π°Π½Π°Π»ΠΎΠ³ΠΎΠ², ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ»ΠΈ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ Π½Π° 1 ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π³ΡΡΠΏΠΏΡ Π² ΡΡΠΎΠΉ ΠΈΠ³ΡΠ΅:
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ³ΡΡ
2.1.2 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΡΠΌ Π²Π²ΠΎΠ΄Π° Π²ΡΠ²ΠΎΠ΄Π° ΠΠ»Ρ Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΡΠΌΡ Π²Π²ΠΎΠ΄Π° ΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΡΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π±ΡΠ»Π° Π²ΡΠ±ΡΠ°Π½Π° ΡΠ°Π±Π»ΠΈΡΠ½Π°Ρ ΡΠΎΡΠΌΠ° Π²ΡΠ²ΠΎΠ΄Π° Π΄ΠΈΠ°Π»ΠΎΠ³Π°.
ΠΈΠ³ΡΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π°Π½Π½ΡΠ΅ Π ΠΈΡΡΠ½ΠΎΠΊ 2 — ΠΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π ΠΈΡΡΠ½ΠΎΠΊ 3 — ΠΠ³ΡΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π ΠΈΡΡΠ½ΠΎΠΊ 4 — ΠΠΎΠ½ΡΡΡ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ ΠΊΡΠ°Ρ ΠΏΠΎΠ»Ρ Π ΠΈΡΡΠ½ΠΎΠΊ 5 — ΠΠΎΡΠ΅ΡΡ 1 Π΅Π΄ΠΈΠ½ΠΈΡΡ Health`ΠΎΠ² ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΡ ΠΎΠ΄Π° ΠΌΠΎΠ½ΡΡΡΠ° Π·Π° ΠΏΠΎΠ»Π΅
3. ΠΡΠ±ΠΎΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅ΡΡΠΎΠ² Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ — ΠΏΡΠΎΡΠ΅ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ΅Π»ΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠΈΠΊΠ°ΠΊΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠΊΠ°Π·Π°ΡΡ ΠΎΡΡΡΡΡΠ²ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ ΡΠ°Π³ΠΎΠΌ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°.
3.1 ΠΠ½Π°Π»ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΈ Π²ΡΠ±ΠΎΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΡΠ°Π·Π»ΠΈΡΠ°ΡΡ Π΄Π²Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΊ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ²ΡΡ Π½Π°Π±ΠΎΡΠΎΠ²: ΡΡΡΡΠΊΡΡΡΠ½ΡΠΉ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ.
Π‘ΡΡΡΠΊΡΡΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ («Π±Π΅Π»ΡΠΉ ΡΡΠΈΠΊ»).
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ («ΡΠ΅ΡΠ½ΡΠΉ ΡΡΠΈΠΊ»). ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Ρ ΠΎΠ΄Π° ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ.
ΠΡΠ΅Π½ΠΎΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΠ²ΠΈΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΠ²ΡΡΡΠΈΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ°Π±ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΡΠ΅Π»ΠΎΠΌ.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π±ΡΠ»ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Ρ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΡΠ»ΡΡΡΠ΅Π½Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΡΠ΅Π½ΠΎΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΡΠ»ΠΎ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ»ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΡΡΡΡΠ°Π½Π΅Π½Ρ.
ΠΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΈΠ³ΡΠΎΠ²ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ. ΠΠ±ΡΠ΅ΠΌ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌ — ΠΎΠΊΠΎΠ»ΠΎ 14, 5 ΠΠ.
7 dows: ΠΎ ΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅) ΠΎΡ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ³ΡΠΎΠΊΠ°, ΠΈΠ½Π°ΡΠ΅ Ρ ΠΎΠ΄ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅Ρ ΠΊ ΠΠ ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΡΡΡ ΠΊ
4. ΠΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΠ»Π°ΡΡ ΠΈΠ³ΡΠΎΠΊΠ°
using System;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Graphics;
namespace WoW2
{
public class Player
{
//Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΠ³ΡΠΎΠΊΠ°
private int money = 100;
private int lives = 10;
private Texture2D[] creepTextures;//Π’Π΅ΠΊΡΡΡΡΠ° «ΠΠΎΠ½ΡΡΡΠ°» ΠΈΠ³ΡΠΎΠΊΠ°
private Texture2D bulletTexture;//Π’Π΅ΠΊΡΡΡΡΠ° ΡΠ½Π°ΡΡΠ΄Π°
private List creeps = new List (); //Π‘ΠΏΠΈΡΠΎΠΊ «ΠΠΎΠ½ΡΡΡΠΎΠ²» ΠΈΠ³ΡΠΎΠΊΠ°
private MouseState mouseState;//ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΡΡΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΌΠ°
private MouseState oldState;//ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΡΡΠΈ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΡΠ΅ΠΉΠΌΠ°
//Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ «ΠΠΎΠ½ΡΡΡΠΎΠ²» ΠΈΠ³ΡΠΎΠΊΠ°
private int cellX;
private int cellY;
private int tileX;
private int tileY;
private string newCreepType;//ΡΠΈΠΏ «ΠΌΠΎΠ½ΡΡΡΠ°» Π΄Π»ΡΠ΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ
private int newCreepIndex;//ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½ΠΎΠ²ΠΎΠΉ ΡΠ΅ΠΊΡΡΡΡΡ" ΠΌΠΎΠ½ΡΡΡΠ°"
private Level level;//ΡΠΏΡΠ°Π²ΠΊΠ° ΠΎΠ± ΡΡΠΎΠ²Π½Π΅
public int Money
{
get { return money; }
set { money = value; }
}
public int Lives
{
get { return lives; }
set { lives = value; }
}
public string NewCreepType
{
set { newCreepType = value; }
}
public int NewCreepIndex
{
set { newCreepIndex = value; }
}
/// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²Π³ΠΎ ΠΈΠ³ΡΠΎΠΊΠ°
public Player (Level level, Texture2D[] creepTextures, Texture2D bulletTexture)
{
this.level = level;
this.creepTextures = creepTextures;
this.bulletTexture = bulletTexture;
}
/// Returns wether the current cell is clear
private bool IsCellClear ()
{
bool inBounds = cellX >= 0 && cellY >= 0 &&
cellX < level. Width && cellY < level. Height;
bool spaceClear = true;
// Check that there is no creep in this spot
foreach (Creep creep in creeps)
{
spaceClear = (creep.Position ≠ new Vector2(tileX, tileY));
if (!spaceClear)
{
break;
}
}
bool onPath = (level.GetIndex (cellX, cellY) ≠ 1);
return inBounds && spaceClear && onPath; // If both checks are true return true
}
/// Adds a creep to the player’s collection.
public void AddCreep ()
{
Creep creepToAdd = null;
switch (newCreepType)
{
case «Car Creep» :
{
creepToAdd = new CarCreep (creepTextures[0],
bulletTexture, new Vector2(tileX, tileY));
break;
}
case «Tank Creep» :
{
creepToAdd = new TankCreep (creepTextures[1],
bulletTexture, new Vector2(tileX, tileY));
break;
}
}
// Only add the tower if there is a space and if the player can afford it.
if (IsCellClear () == true && creepToAdd. Cost <= money)
{
creeps.Add (creepToAdd);
money -= creepToAdd. Cost;
// Reset the newTowerType field.
newCreepType = string. Empty;
}
else
{
newCreepType = string. Empty;
}
}
/// Updates the player.
public void Update (GameTime gameTime, List enemies)
{
mouseState = Mouse. GetState ();
cellX = (int)(mouseState.X / 32); // Convert the position of the mouse
cellY = (int)(mouseState.Y / 32); // from array space to level space
tileX = cellX * 32; // Convert from array space to level space
tileY = cellY * 32; // Convert from array space to level space
if (mouseState.LeftButton == ButtonState. Released
&& oldState. LeftButton == ButtonState. Pressed)
{
if (string.IsNullOrEmpty (newCreepType) == false)
{
AddCreep ();
}
}
foreach (Creep creep in creeps)
{
// Make sure the creep has no targets.
if (creep.HasTarget == false)
{
creep.GetClosestEnemy (enemies);
}
creep.Update (gameTime);
}
oldState = mouseState; // Set the oldState so it becomes the state of the previous frame.
}
public void Draw (SpriteBatch spriteBatch)
{
foreach (Creep creep in creeps)
{
creep.Draw (spriteBatch);
}
}
public void DrawPreview (SpriteBatch spriteBatch)
{
// Draw the creep preview.
if (string.IsNullOrEmpty (newCreepType) == false)
{
int cellX = (int)(mouseState.X / 32); // Convert the position of the mouse
int cellY = (int)(mouseState.Y / 32); // from array space to level space
int tileX = cellX * 32; // Convert from array space to level space
int tileY = cellY * 32; // Convert from array space to level space
Texture2D previewTexture = creepTextures[newCreepIndex];
spriteBatch.Draw (previewTexture, new Rectangle (tileX, tileY,
previewTexture.Width, previewTexture. Height), Color. White);
}
}
ΠΠ»Π°ΡΡ ΠΌΠ΅Π½Ρ
using System;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace WoW2
{
public enum ButtonStatus//ΠΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ
{
Normal,
MouseOver,
Pressed,
}
public class Button: Sprite //Π₯ΡΠ°Π½ΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
{
private MouseState previousState;//Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΡΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΡΠ΅ΠΉΠΌΠ°
private Texture2D hoverTexture;
private Texture2D pressedTexture;//Π‘ΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ΅ΠΊΡΡΡΡ
private Rectangle bounds;//ΠΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ, ΠΎΡ Π²Π°ΡΡΠ²Π°ΡΡΠΈΠΉ ΠΊΠ½ΠΎΠΏΠΊΡ
private ButtonStatus state = ButtonStatus. Normal;//Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ
public event EventHandler Clicked;//Π‘ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ
public event EventHandler OnPress;//Π‘ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΡΠΈ Π·Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅
///Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ
/// ΠΠΎΡΠΌΠ°Π»ΡΠ½Π°Ρ ΡΠ΅ΠΊΡΡΡΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ
/// Π’Π΅ΠΊΡΡΡΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°Ρ, ΠΊΠΎΠ³Π΄Π° Π½Π°Π²Π΅Π΄Π΅Π½Π½Π° ΠΌΡΡΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ
/// Π’Π΅ΠΊΡΡΡΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°Ρ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π°ΠΆΠ°ΡΠ°
/// Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π³Π΄Π΅ ΠΊΠ½ΠΎΠΏΠΊΠ° Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠΈΡΠΎΠ²Π°Π½Π½Π°
public Button (Texture2D texture, Texture2D hoverTexture, Texture2D pressedTexture, Vector2 position)
: base (texture, position)
{
this.hoverTexture = hoverTexture;
this.pressedTexture = pressedTexture;
this.bounds = new Rectangle ((int)position.X, (int)position.Y,
texture.Width, texture. Height);
}
///ΠΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ
///Π’Π΅ΠΊΡΡΠ΅Π΅ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
public override void Update (GameTime gameTime)
{
MouseState mouseState = Mouse. GetState ();//ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π»ΠΈ ΠΌΡΡΡ Π½Π°Π΄ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ
int mouseX = mouseState. X;
int mouseY = mouseState. Y;
bool isMouseOver = bounds. Contains (mouseX, mouseY);
if (isMouseOver && state ≠ ButtonStatus. Pressed)//ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ
{
state = ButtonStatus. MouseOver;
}
else if (isMouseOver == false && state ≠ ButtonStatus. Pressed)
{
state = ButtonStatus. Normal;
}
if (mouseState.LeftButton == ButtonState. Pressed &&
previousState.LeftButton == ButtonState. Released)//ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π½Π°ΠΆΠ°ΡΠ° Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΈΠ³ΡΠΎΠΊΠΎΠΌ
{
if (isMouseOver == true)
{
state = ButtonStatus. Pressed;//ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ
if (OnPress ≠ null)
{
OnPress (this, EventArgs. Empty);//ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΠ°ΠΆΠ°ΡΠ° (OnPress)
}
}
}
if (mouseState.LeftButton == ButtonState. Released &&
previousState.LeftButton == ButtonState. Pressed)//ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΠΎΡΠΏΡΡΡΠΈΠ» Π»ΠΈ ΠΈΠ³ΡΠΎΠΊ ΠΊΠ½ΠΎΠΏΠΊΡ
{
if (isMouseOver == true)
{
state = ButtonStatus. MouseOver;//ΠΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ
if (Clicked ≠ null)
{
Clicked (this, EventArgs. Empty);//ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΠ»ΠΈΠΊΠ° (Clicked)
}
}
else if (state == ButtonStatus. Pressed)
{
state = ButtonStatus. Normal;
}
}
previousState = mouseState;
}
/// Π ΠΈΡΡΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ
/// SpriteBatch, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΠ°Ρ
public override void Draw (SpriteBatch spriteBatch)
{
switch (state)
{
case ButtonStatus. Normal:
spriteBatch.Draw (texture, bounds, Color. White);
break;
case ButtonStatus. MouseOver:
spriteBatch.Draw (hoverTexture, bounds, Color. White);
break;
case ButtonStatus. Pressed:
spriteBatch.Draw (pressedTexture, bounds, Color. White);
break;
default:
spriteBatch.Draw (texture, bounds, Color. White);
break;
}
}
}
}
using System;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace WoW2
{
public class Toolbar
{
private Texture2D texture;
private SpriteFont font;//ΠΊΠ»Π°ΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠΈΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅ΠΌ
private Vector2 position;//ΠΌΠ΅ΡΡΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ»Π±Π°ΡΠ°
private Vector2 textPosition;//ΠΌΠ΅ΡΡΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ°
public Toolbar (Texture2D texture, SpriteFont font, Vector2 position)
{
this.texture = texture;
this.font = font;
this.position = position;//ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° Π² ΠΏΡΠ°Π²ΠΎΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΠ³Π»Ρ
textPosition = new Vector2(130, position. Y + 10);
}
public void Draw (SpriteBatch spriteBatch, Player player)
{
spriteBatch.Draw (texture, position, Color. White);
string text = string. Format («Gold :{0} Lives: {1}», player. Money, player. Lives);
spriteBatch.DrawString (font, text, textPosition, Color. White);
}
}
}
ΠΠ»Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠ°
using System;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace WoW2
{
public class Enemy: Sprite
{
private Queue waypoints = new Queue ();
private float speedModifier;
private float modifierDuration;
private float modiferCurrentTime;
protected float startHealth;
protected float currentHealth;
protected bool alive = true;
protected float speed = 0.5f;
protected int bountyGiven;
/// ΠΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ°Π³Π°
public float SpeedModifier
{
get { return speedModifier; }
set { speedModifier = value; }
}
/// ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΡΠΎΠ΄Π»ΠΈΡΡΡ
public float ModifierDuration
{
get { return modifierDuration; }
set
{
modifierDuration = value;
modiferCurrentTime = 0;
}
}
public float CurrentHealth
{
get { return currentHealth; }
set { currentHealth = value; }
}
/// % ΠΎΡΡΠ°Π²ΡΠ΅Π³ΠΎΡΡ Ρ Π²ΡΠ°Π³Π° Π·Π΄ΠΎΡΠΎΠ²ΡΡ
public float HealthPercentage
{
get { return currentHealth / startHealth; }
}
public bool IsDead
{
get { return! alive; }
}
public int BountyGiven
{
get { return bountyGiven; }
}
public float DistanceToDestination
{
get { return Vector2. Distance (position, waypoints. Peek ()); }
}
public Enemy (Texture2D texture, Vector2 position, float health, int bountyGiven, float speed)
: base (texture, position)
{
this.startHealth = health;
this.currentHealth = startHealth;
this.bountyGiven = bountyGiven;
this.speed = speed;
}
public void SetWaypoints (Queue waypoints)
{
foreach (Vector2 waypoint in waypoints)
this.waypoints.Enqueue (waypoint);
this.position = this.waypoints.Dequeue ();
}
public override void Update (GameTime gameTime)
{
base.Update (gameTime);
if (waypoints.Count > 0)
{
if (DistanceToDestination < 1f)
{
position = waypoints. Peek ();
waypoints.Dequeue ();
}
else
{
Vector2 direction = waypoints. Peek () — position;
direction.Normalize ();
float temporarySpeed = speed;//Π‘ΠΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ
if (modiferCurrentTime > modifierDuration)// Π΅ΡΠ»ΠΈ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»Π°ΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ
{
//Π‘Π±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ
speedModifier = 0;
modiferCurrentTime = 0;
}
if (speedModifier ≠ 0 && modiferCurrentTime <= modifierDuration)
{
temporarySpeed *= speedModifier;// ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ°Π³Π°
modiferCurrentTime += (float)gameTime.ElapsedGameTime.TotalSeconds;// ΠΠ±Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ
}
velocity = Vector2. Multiply (direction, temporarySpeed);
position += velocity;
}
}
else
alive = false;
if (currentHealth <= 0)
alive = false;
}
public override void Draw (SpriteBatch spriteBatch)
{
if (alive)
{
base.Draw (spriteBatch, Color. Black);
}
}
}
}
ΠΠ»Π°ΡΡ ΠΈΠ³ΡΡ
using System;
using System.Collections.Generic;
using System. Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
namespace WoW2
{
public class Game1: Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
Level level = new Level ();
WaveManager waveManager;
Player player;
Button carButton;
Button tankButton;
Toolbar toolBar;
public Game1()
{
graphics = new GraphicsDeviceManager (this);
Content.RootDirectory = «Content» ;
graphics.PreferredBackBufferWidth = level. Width * 32;
graphics.PreferredBackBufferHeight = 32 + level. Height * 32;
graphics.ApplyChanges ();
IsMouseVisible = true;
}
protected override void Initialize ()
{
base.Initialize ();
}
protected override void LoadContent ()
{
spriteBatch = new SpriteBatch (GraphicsDevice);
Texture2D topBar = Content. Load («tool bar»);
SpriteFont font = Content. Load («Arial»);
toolBar = new Toolbar (topBar, font, new Vector2(0, level. Height * 32));
Texture2D grass = Content. Load («grass»);
Texture2D path = Content. Load («path»);
level.AddTexture (grass);
level.AddTexture (path);
Texture2D bulletTexture = Content. Load («bullet»);
Texture2D[] creepTexture = new Texture2D[]
{
Content.Load («Car»),
Content.Load («Tank»),
};
player = new Player (level, creepTexture, bulletTexture);
Texture2D enemyTexture = Content. Load («enemy»);
Texture2D healthTexture = Content. Load («health bar»);
waveManager = new WaveManager (player, level, 24, enemyTexture,
healthTexture);
Texture2D carNormal = Content. Load («GUI\Car creep\car button»);
Texture2D carHover = Content. Load («GUI\Car creep\car hover»);
Texture2D carPressed = Content. Load («GUI\Car creep\car pressed»);
Texture2D tankNormal = Content. Load («GUI\Tank creep\tank button»);
Texture2D tankHover = Content. Load («GUI\Tank creep\tank hover»);
Texture2D tankPressed = Content. Load («GUI\Tank creep\tank pressed»);
carButton = new Button (carNormal, carHover,
carPressed, new Vector2(0, level. Height * 32));
tankButton = new Button (tankNormal, tankHover,
tankPressed, new Vector2(32, level. Height * 32));
carButton.OnPress += new EventHandler (carButton_OnPress);
tankButton.OnPress += new EventHandler (tankButton_OnPress);
}
protected override void UnloadContent ()
{
}
private void carButton_OnPress (object sender, EventArgs e)
{
player.NewCreepType = «Car creep» ;
player.NewCreepIndex = 0;
}
private void tankButton_OnPress (object sender, EventArgs e)
{
player.NewCreepType = «Tank creep» ;
player.NewCreepIndex = 1;
}
protected override void Update (GameTime gameTime)
{
waveManager.Update (gameTime);
player.Update (gameTime, waveManager. Enemies);
carButton.Update (gameTime);
tankButton.Update (gameTime);
base.Update (gameTime);
}
protected override void Draw (GameTime gameTime)
{
GraphicsDevice.Clear (Color.CornflowerBlue);
spriteBatch.Begin ();
level.Draw (spriteBatch);
player.Draw (spriteBatch);
waveManager.Draw (spriteBatch);
toolBar.Draw (spriteBatch, player);
carButton.Draw (spriteBatch);
tankButton.Draw (spriteBatch);
player.DrawPreview (spriteBatch);
spriteBatch.End ();
base.Draw (gameTime);
}
}
}
ΠΠ»Π°ΡΡ
using System;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace WoW2
{
public class WaveManager
{
private int numberOfWaves;
private float timeSinceLastWave;
private Queue waves = new Queue ();
private Texture2D enemyTexture;
private bool waveFinished = false;
private Level level;
public Wave CurrentWave
{
get { return waves. Peek (); }
}
public List Enemies
{
get { return CurrentWave. Enemies; }
}
public int Round
{
get { return CurrentWave. RoundNumber + 1; }
}
public WaveManager (Player player, Level level, int numberOfWaves,
Texture2D enemyTexture, Texture2D healthTexture)
{
this.numberOfWaves = numberOfWaves;
this.enemyTexture = enemyTexture;
this.level = level;
for (int i = 0; i < numberOfWaves; i++)
{
int initialNumberOfEnemies = 10;
int numberModifier = (i / 10) + 1;
Wave wave = new Wave (i, initialNumberOfEnemies * numberModifier,
player, level, enemyTexture, healthTexture);
waves.Enqueue (wave);
}
StartNextWave ();
}
private void StartNextWave ()
{
if (waves.Count > 0)
{
waves.Peek ().Start ();
timeSinceLastWave = 0;
waveFinished = false;
}
}
public void Update (GameTime gameTime)
{
CurrentWave.Update (gameTime);
if (CurrentWave.RoundOver)
{
waveFinished = true;
}
if (waveFinished)
{
timeSinceLastWave += (float)gameTime.ElapsedGameTime.TotalSeconds;
}
if (timeSinceLastWave > 30.0f)
{
waves.Dequeue ();
StartNextWave ();
}
}
public void Draw (SpriteBatch spriteBatch)
{
CurrentWave.Draw (spriteBatch);
}
}
}
ΠΠ»Π°ΡΡ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΠ°ΡΡΡ
using System;
using System.Collections.Generic;
using System. Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace WoW
{
public class Level
{
private List tileTextures = new List ();
private Queue waypoints = new Queue ();
int[,] map = new int[,]
{
{1,0,0,0,0,0,0,0,},
{1,0,0,0,0,0,0,0,},
{1,0,0,0,0,0,0,0,},
{1,0,0,0,0,0,0,0,},
{1,0,0,0,0,0,0,0,},
{1,0,0,0,0,0,0,0,},
{1,0,0,0,0,0,0,0,},
{1,0,0,0,0,0,0,0,},
};
public Queue Waypoints
{
get { return waypoints; }
}
public int Width
{
get { return map. GetLength (1); }
}
public int Height
{
get { return map. GetLength (0); }
}
public Level ()
{
waypoints.Enqueue (new Vector2(7, 0) * 32);
waypoints.Enqueue (new Vector2(0, 0) * 32);
}
public int GetIndex (int cellX, int cellY)
// It needed to be Width — 1 and Height — 1.
if (cellX < 0
public void AddTexture (Texture2D texture)
{
tileTextures.Add (texture);
}
public void Draw (SpriteBatch batch)
{
for (int x = 0; x < Width; x++)
{
for (int y = 0; y < Height; y++)
{
int textureIndex = map[y, x];
if (textureIndex == -1)
continue;
Texture2D texture = tileTextures[textureIndex];
batch.Draw (texture, new Rectangle (x * 32, y * 32, 32, 32), Color. White);
}
}
5. ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΊΠ»Π°ΡΡΠΎΠ²
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΠΈΠ³ΡΠΎΠ²Π°Ρ ΠΈΠ³ΡΠ° «Wall on Wall», ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ°Ρ Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π΄Π°Π½Π½ΠΎΠΉ ΠΈΠ³ΡΡ, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΈΠ³ΡΠ°ΡΡ Π² ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΡ.