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

Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ псСвдослучайных чисСл Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создания ΠΈΠ³Ρ€Ρ‹ Β«Π‘Π°ΠΏΠ΅Ρ€Β»

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

Для Π΅Π³ΠΎ запуска Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠŸΡƒΡΠΊ, Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ ВсС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Microsoft Visual Studio .NET 2005Microsoft Visual Studio .NET 2005. Π”Π°Π»Π΅Π΅ Π² Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ²ΡˆΠ΅ΠΌΡΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Open Project ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊ, Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π‘Π°ΠΏΠ΅Ρ€.sln. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Для измСнСния внСшнСго Π²ΠΈΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ярлыком Design. МоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ псСвдослучайных чисСл Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создания ΠΈΠ³Ρ€Ρ‹ Β«Π‘Π°ΠΏΠ΅Ρ€Β» (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ГосударствСнноС ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΡƒΡ‡Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ образования

«ΠœΠΎΡΠΊΠΎΠ²ΡΠΊΠΈΠΉ государствСнный тСхничСский унивСрситСт ΠΈΠΌ. Π. Π­. Π‘Π°ΡƒΠΌΠ°Π½Π°»

ΠšΠ°Π»ΡƒΠΆΡΠΊΠΈΠΉ Ρ„ΠΈΠ»ΠΈΠ°Π» ΠΊΠ°Ρ„Π΅Π΄Ρ€Π°

«Π‘истСмы Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования»

ΠŸΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ записка ΠΊ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅:

«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ высокого уровня»

Π½Π° Ρ‚Π΅ΠΌΡƒ:

«Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ псСвдослучайных чисСл Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создания ΠΈΠ³Ρ€Ρ‹ „Π‘Π°ΠΏΠ΅Ρ€“»

ΠšΠ°Π»ΡƒΠ³Π° 2007

  • Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅
  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅3
  • 1.Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ4
    • 1.1.Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ псСвдослучайных чисСл
    • 1.2.Π¦Π΅Π»Π΅ΡΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€Π° языка
  • 2.ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ΡΠΊΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ
    • 2.1.Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
    • 2.2. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация основных элСмСнтов C#.
      • 2.2.1.ΠšΠ»Π°ΡΡΡ‹
      • 2.2.2.Π§Π»Π΅Π½Ρ‹ класса
  • 3.ВСхнологичСская Ρ‡Π°ΡΡ‚ΡŒ
    • 3.1.БистСмныС трСбования
    • 3.2.Запуск ΠΈ ΠΏΡ€ΠΎΡ†Π΅ΡΡ ΠΈΠ³Ρ€Ρ‹.
  • Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
  • Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π’Π΅ΠΌΠ° ΠΌΠΎΠ΅ΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ «ΠΈΠ³Ρ€Π° „ВСтрис“». Π’ Ρ…ΠΎΠ΄Π΅ выполнСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ поставлСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ†Π΅Π»ΠΈ:

Ρ• ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ основныС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΈ создании Windows ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ;

Ρ• приобрСсти Π½Π°Π²Ρ‹ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с 2D Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ Π² Windows прилоТСниях Π² Π‘#;

Ρ• ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ псСвдослучайных чисСл.

Π—Π°Π΄Π°Ρ‡Π΅ΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ являСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ³Ρ€Ρ‹ «Π‘Π°ΠΏΠ΅Ρ€» с Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΈΠ½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ случайных чисСл.

Даная Ρ‚Π΅ΠΌΠ° являСтся Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€Ρ‹ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ процСсс создания Windows ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ с 2D Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ, Π° «Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡ случайных чисСл — слишком Π²Π°ΠΆΠ½ΠΎΠ΅ Π΄Π΅Π»ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΅Ρ‘ Π½Π° Π²ΠΎΠ»ΡŽ случая» (Π”ΠΆΠΎΠ½ Ρ„ΠΎΠ½ НСйман).

1.Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ

1.1.Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ псСвдослучайных чисСл

Для расстановки ΠΌΠΈΠ½ Π½Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅ Π² ΠΈΠ³Ρ€Π΅ «Π‘Π°ΠΏΠ΅Ρ€» Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ с ΠΌΠΈΠ½ΠΎΠΉ. Для этого Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ гСнСрирования Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ псСвдослучайных чисСл (Π“ΠŸΠ‘Π§) — Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ чисСл, элСмСнты ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΡ‡Ρ‚ΠΈ нСзависимы Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° ΠΈ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡŽΡ‚ся Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ. 1]

БоврСмСнная ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ псСвдослучайныС числа Π² ΡΠ°ΠΌΡ‹Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… прилоТСниях — ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠœΠΎΠ½Ρ‚Π΅-ΠšΠ°Ρ€Π»ΠΎ Π΄ΠΎ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ псСвдослучайных чисСл ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

Π’Π΅Ρ€ΠΌΠΈΠ½ Π“ΠŸΠ‘Π§ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для описания Π“ΠŸΠ‘Π‘ (PRBG) — Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² псСвдослучайных Π±ΠΈΡ‚, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΡˆΠΈΡ„Ρ€ΠΎΠ². ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π“ΠŸΠ‘Π§ — гСнСрация ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ чисСл, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½Ρ‹Ρ…. Никакой Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ случайныС числа, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ лишь Π°ΠΏΠΏΡ€ΠΎΠΊΡΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ свойства случайных чисСл.

Π‘Π°ΠΌΡ‹Π΅ простыС Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π“Π‘Π§ (АГБЧ) основаны Π½Π° Ρ‚Π΅Ρ… свойствах элСмСнтов элСктронных схСм, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ‚Π°ΠΊ Π΄ΠΎΠ»Π³ΠΎ ΠΈ ΡƒΠΏΠΎΡ€Π½ΠΎ Π±ΠΎΡ€ΠΎΠ»ΠΈΡΡŒ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ — схСмотСхники. Π­Ρ‚ΠΎ свойство — собствСнныС ΡˆΡƒΠΌΡ‹ элСктронного ΠΏΡ€ΠΈΠ±ΠΎΡ€Π°.

Π’ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ подкласс АГБЧ стоит вынСсти Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вмСсто дискрСтного элСктронного ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° примСняСтся ΠΊΡƒΠ΄Π° Π±ΠΎΠ»Π΅Π΅ слоТный источник СстСствСнной случайности. НапримСр, помСщСнная Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ футляр ΠΏΡ€ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌ отсутствии свСта ΠŸΠ—Π‘-ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ приводится ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π² Π½Π°ΠΈΡ…ΡƒΠ΄ΡˆΠΈΠΉ Ρ€Π΅ΠΆΠΈΠΌ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡˆΡƒΠΌΠΎΠ²Ρ‹Π΅ характСристики ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° чистого, ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ хаоса ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Π° ΠΊ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.

Π’Ρ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠΌΡƒ классу АГБЧ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ «Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ». Π—Π΄Π΅ΡΡŒ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ «ΠΈΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠ° энтропии» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ свойства элСктронных ΠΏΡ€ΠΈΠ±ΠΎΡ€ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ счСтчиков Π“Π΅ΠΉΠ³Π΅Ρ€Π°-ΠœΡŽΠ»Π»Π΅Ρ€Π°. НСприятной ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… устройств являСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ примСнСния Ρ€Π°Π΄ΠΈΠΎΠΈΠ·ΠΎΡ‚ΠΎΠΏΠ½Ρ‹Ρ… источников.

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

Π§Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ класс АГБЧ ΠΌΠΎΠΆΠ½ΠΎ условно Π½Π°Π·Π²Π°Ρ‚ΡŒ «ΠΏΠ°Ρ€Π°Π·ΠΈΡ‚Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΌ». К ΠΈΡ… ΡΠ²ΠΎΠΉΡΡ‚Π²Π°ΠΌ относятся ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Ρ‚Π΅ΠΏΠ»ΠΎΠ²Ρ‹Π΅ ΡˆΡƒΠΌΡ‹ ΠΈ Ρ„Π»ΡƒΠΊΡ‚ΡƒΠ°Ρ†ΠΈΠΈ Π² ΠΏΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠ³ΠΎ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°.

Π’ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс «ΠΊΡƒΡ€ΡŒΠ΅Π·Π½Ρ‹Ρ…» АГБЧ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ спСциализированных Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ², ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‡Π½ΠΎ Π±Ρ€ΠΎΡΠ°ΡŽΡ‰ΠΈΡ…… ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΈΠ³Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ кости ΠΈ ΠΎΡΠ½Π°Ρ‰Π΅Π½Π½Ρ‹Ρ… систСмой тСхничСского зрСния для считывания Π²Ρ‹ΠΏΠ°Π²ΡˆΠΈΡ… ΠΎΡ‡ΠΊΠΎΠ².

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ простых арифмСтичСских Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² хотя ΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ большой ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ, Π½ΠΎ ΡΡ‚Ρ€Π°Π΄Π°ΡŽΡ‚ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹Ρ… нСдостатков:

Ρ• Блишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄/ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Ρ‹

Ρ• ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ся нСзависимыми

Ρ• НСкоторыС Π±ΠΈΡ‚Ρ‹ «ΠΌΠ΅Π½Π΅Π΅ случайны», Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅

Ρ• НСравномСрноС ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ΅ распрСдСлСниС

Ρ• ΠžΠ±Ρ€Π°Ρ‚ΠΈΠΌΠΎΡΡ‚ΡŒ НаиболСС распространСны Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ конгруэнтный ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΌΠ΅Ρ‚ΠΎΠ΄ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ с Π·Π°ΠΏΠ°Π·Π΄Ρ‹Π²Π°Π½ΠΈΡΠΌΠΈ, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π‘Π»ΡŽΠΌΠ°, Π‘Π»ΡŽΠΌΠ° ΠΈ Π¨ΡƒΠ±Π°, Π’ΠΈΡ…Ρ€ΡŒ ΠœΠ΅Ρ€ΡΠ΅Π½Π½Π°.

Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ конгруэнтный ΠΌΠ΅Ρ‚ΠΎΠ΄

Π”Π°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±Ρ‹Π» ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π”. Π₯. Π›Π΅ΠΌΠ΅Ρ€ΠΎΠΌ Π² 1948 Π³ΠΎΠ΄Ρƒ. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΡΡ‚Ρ‹Ρ… случаях ΠΈ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ криптографичСской ΡΡ‚ΠΎΠΉΠΊΠΎΡΡ‚ΡŒΡŽ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ стандартного Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ компиляторами.

Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ (1):

(1)

Π³Π΄Π΅ a > 0, c > 0, M > 0 — Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ цСлочислСнныС константы. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ зависит ΠΎΡ‚ Π²Ρ‹Π±ΠΎΡ€Π° стартового числа X0 ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… Π΅Π³ΠΎ значСниях ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ случайных чисСл. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ свойства ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Xj ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ коэффициСнтов Π² Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΡΡ‚ ΠΎΡ‚ Π²Ρ‹Π±ΠΎΡ€Π° стартового числа. Ясно, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ чисСл, гСнСрируСмая Ρ‚Π°ΠΊΠΈΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ, ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½Π° с ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΎΠΌ, Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠΌ m. ΠŸΡ€ΠΈ этом Π΄Π»ΠΈΠ½Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° Ρ€Π°Π²Π½Π° m Ρ‚ΠΎΠ³Π΄Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π°:

1. ΠΠžΠ” (c, m) = 1 (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ c ΠΈ m Π²Π·Π°ΠΈΠΌΠ½ΠΎ просты);

2. a — 1 ΠΊΡ€Π°Ρ‚Π½ΠΎ p Π΄Π»Ρ всСх простых p — Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ m;

3. a — 1 ΠΊΡ€Π°Ρ‚Π½ΠΎ 4, Ссли m ΠΊΡ€Π°Ρ‚Π½ΠΎ 4.

ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ m = 2e, Π³Π΄Π΅ e — число Π±ΠΈΡ‚ Π² ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌ словС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это позволяСт ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ привСдСния ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ.

Π€ΠΎΡ€ΠΌΡƒΠ»Π° (2) для вычислСния n-ΠΉ Ρ‡Π»Π΅Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, зная Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 0-ΠΉ

(2)

ΠœΠ΅Ρ‚ΠΎΠ΄ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ с Π·Π°ΠΏΠ°Π·Π΄Ρ‹Π²Π°Π½ΠΈΡΠΌΠΈ.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ распрСдСлСния случайных чисСл, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌ конгруэнтным Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ, Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΡ‚атистичСских Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ…, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… высокого Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. 2]

Π’ ΡΠ²ΡΠ·ΠΈ с ΡΡ‚ΠΈΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ конгруэнтный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ постСпСнно потСрял свою ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ ΠΈ Π΅Π³ΠΎ мСсто заняло сСмСйство Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈΠ΅Π²Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Ρ‹ для использования Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ…, ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΊ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Ρƒ случайных чисСл.

ΠΠ°ΠΈΠ±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈΠ΅Π²Ρ‹ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π² ΡΠ²ΡΠ·ΠΈ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π²Π΅Ρ‰Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΌΠΈ числами ΡΡ€Π°Π²Π½ΡΠ»Π°ΡΡŒ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ цСлочислСнной Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΈ, Π° Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈΠ΅Π²Ρ‹ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ СстСствСнно Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π² Π²Π΅Ρ‰Π΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠΉ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ΅.

Один ΠΈΠ· ΡˆΠΈΡ€ΠΎΠΊΠΎ распространённых Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈΠ΅Π²Ρ‹Ρ… Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² основан Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ (3):

X (k) = left{ begin{matrix} X (k-a)-X (k-b), & mbox{if } X (k-a)geq X (k-b); \ X (k-a)-X (k-b)+1, & mbox{if } X (k-a) < X (k-b);end{matrix}right. (3)

Π³Π΄Π΅ X (k) — вСщСствСнныС числа ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° [0, 1),

a, b — Ρ†Π΅Π»Ρ‹Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π»Π°Π³Π°ΠΌΠΈ.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈΠ΅Π²Ρƒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΡƒ трСбуСтся Π·Π½Π°Ρ‚ΡŒ max (a, b) ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… сгСнСрированных случайных чисСл. ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для хранСния сгСнСрированных случайных чисСл ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конСчная цикличСская ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° Π±Π°Π·Π΅ массива. Для старта Ρ„ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈΠ΅Π²ΠΎΠΌΡƒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΡƒ трСбуСтся max (a, b) случайных чисСл, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сгСнСрированы простым конгруэнтным Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ значСния: a = 55, b = 24; a = 17, b = 5;

a = 97, b = 33.

Алгоритм Π‘Π»ΡŽΠΌΠ°, Π‘Π»ΡŽΠΌΠ° ΠΈ Π¨ΡƒΠ±Π° (Blum Blum Shub, BBS)

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π² 1986 Π³ΠΎΠ΄Ρƒ Π›Π΅Π½ΠΎΡ€ ΠΈ ΠœΠ°Π½ΡƒΡΠ»Π΅ΠΌ Π‘Π»ΡŽΠΌ ΠΈ ΠœΠ°ΠΉΠΊΠ»ΠΎΠΌ Π¨ΡƒΠ±ΠΎΠΌ.

BBS Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ (4):

xn+1 = (xn)2 mod M (4)

Π³Π΄Π΅ M=p*q являСтся ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π΄Π²ΡƒΡ… Π±ΠΎΠ»ΡŒΡˆΠΈΡ… простых p ΠΈ q.

На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ ΠΈΠ· xn ΠΏΡƒΡ‚Ρ‘ΠΌ взятия Π»ΠΈΠ±ΠΎ Π±ΠΈΡ‚Π° чётности, Π»ΠΈΠ±ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ большС Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Ρ… Π±ΠΈΡ‚ xn.

Π”Π²Π° простых числа, p ΠΈ q, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Π° сравнимы с 3 ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ 4 ΠΈ ΠΠžΠ” (?(p-1), ?(q-1)) Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ°Π».

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ для получСния xn Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ всС n — 1 ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… чисСл, Ссли извСстно Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° x0 ΠΈ Ρ‡ΠΈΡΠ»Π° p ΠΈ q. n-Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ вычислСно «Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ (5):

xn = x0 (2 ^ n) mod ((p-1)(q-1)) mod M (5)

Π’ΠΈΡ…Ρ€ΡŒ ΠœΠ΅Ρ€ΡΠ΅Π½Π½Π° (Mersenne twister)

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1997 японскими ΡƒΡ‡Ρ‘Π½Ρ‹ΠΌΠΈ ΠœΠ°ΠΊΠΎΡ‚ΠΎ ΠœΠ°Ρ†ΡƒΠΌΠΎΡ‚ΠΎ ΠΈ Π’Π°ΠΊΡƒΠ΄Π·ΠΈ Нисимура. Он ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ высококачСствСнных псСвдослучайных чисСл, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ ошибок, Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ….

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΠΎ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π΄Π²Π° ΠΎΠ±Ρ‰ΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎΡΡ простого числа ΠœΠ΅Ρ€ΡΠ΅Π½Π½Π°. НовСйший ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённый называСтся Mersenne Twister MT 19 937.

MT 19 937 ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ свойства:

1. Он Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ с Ρ†Π΅Π»ΡŒΡŽ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄, Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 219 937? 1.

2. Он ΠΈΠΌΠ΅Π΅Ρ‚ высокий порядок пространствСнного эквираспространСния.

3. Он Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС, Ρ‡Π΅ΠΌ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ статистичСски-Π΄Π΅Ρ„Π΅ΠΊΡ‚Π½Ρ‹Ρ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

4. Он ΡΡ‚атистичСски случаСн Π²ΠΎ Π²ΡΠ΅Ρ… Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π±ΠΈΡ‚Π°Ρ….

Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ случайных чисСл с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ класса Random Π² Π‘#.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ псСвдослучайных чисСл, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ класс Random. Начало Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ опрСдСляСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ числом, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ автоматичСски прСдоставляСтся классом Random ΠΈΠ»ΠΈ задаСтся явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π’ ΠΊΠ»Π°ΡΡΠ΅ Random ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° конструктора:

public Random ()

public Random (int seed)

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсии конструктора создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Random, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ для вычислСния Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ числа ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ случайных чисСл ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ систСмноС врСмя. ΠŸΡ€ΠΈ использовании Π²Ρ‚ΠΎΡ€ΠΎΠΉ вСрсии конструктора Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ число задаСтся Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ seed.

Класс Random (сокращСно)

//ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹

Random ()

Random (int Π°);

//ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ экзСмпляра

int Next () ;

int Next (int макс_Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) ;

int Next (int ΠΌΠΈΠ½_Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, int макс_Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) ;

double NextDouble () ;

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ случайныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ псСвдослучайных чисСл. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Next Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ число Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ значСниями. NextDouble Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0.0 Π΄ΠΎ 1.0.

Π‘Ρ€Π°Π²Π½ΠΈΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ получСния псСвдослучайных чисСл для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, я Π²Ρ‹Π±Ρ€Π°Π», ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, основанного Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ систСмного класса Random, Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ конгруэнтный ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π‘Π»ΡŽΠΌΠ°, Π‘Π»ΡŽΠΌΠ° ΠΈ Π¨ΡƒΠ±Π°, исходя ΠΈΠ· ΠΏΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π² этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ:

Ρ• Π±ΠΎΠ»Π΅Π΅ простоС матСматичСскоС прСдставлСниС, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация;

Ρ• Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ получСния любого числа, располагая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ стартового.

1.2.Π¦Π΅Π»Π΅ΡΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€Π° языка

Π’ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π±Ρ‹Π»Π° поставлСна Π·Π°Π΄Π°Ρ‡Π°, рСализация ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языков программирования. Π’ ΡΠ²ΡΠ·ΠΈ с ΡΡ‚ΠΈΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ Ρ‚рСбования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ язык. Π­Ρ‚ΠΎ:

1. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания Windows ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ удобства Π² Ρ€Π°Π±ΠΎΡ‚Π΅

3. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ

4. Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ количСство Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

5. ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° изучСния языка Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π·Π½Π°Π½ΠΈΠΉ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ Ρ€Π΅Π·ΠΊΠΎ отсСкаСт большоС количСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языков, Ρ‚. ΠΊ. ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΈ ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΈΡ… языков программирования ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языках. Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ количСство Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π‘Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π² трСбования, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π°Π½Π°Π»ΠΈΠ·Ρƒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… языков программирования.

Π‘ΠΎΡ‚Π½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ языков ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π° Ρ‚Ρ€ΠΈ ΠΎΠ±Ρ‰ΠΈΡ… Ρ‚ΠΈΠΏΠ°: ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅, ассСмблСрныС ΠΈ ΡΠ·Ρ‹ΠΊΠΈ высокого уровня.

ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ языки Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Ρ‹ для восприятия Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ. ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ языки ΡΠ²Π»ΡΡŽΡ‚ΡΡ машинно-зависимыми, Ρ‚. Π΅. ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

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

Для ускорСния процСсса программирования Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ языки высокого уровня, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… для выполнСния слоТных дСйствий достаточно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ программисту-ΠΎΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΠ΅ ΠΈΠ»ΠΈ нСбольшой Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΌΠΎΡ‰Π½Ρ‹Π΅ срСдства, Π²Ρ€ΠΎΠ΄Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… систСм программирования (Visual Basic, C++Builder, Π‘#, Delphi) ΠΈΠ»ΠΈ ΠΆΠ΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΡƒΡŽ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚ΠΈΠΏΠ° Borland C++ Π² ΡΠΎΡ‡Π΅Ρ‚Π°Π½ΠΈΠΈ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ классов, Ρ‚Π°ΠΊΠΎΠΉ, ΠΊΠ°ΠΊ OWL ΠΈΠ»ΠΈ MFC. [3]

Π‘ΡƒΡ€Π½ΠΎΠ΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… срСдствах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡŽ систСм программирования, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π½Π° Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ «Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ», срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Borland Delphi, Microsoft Visual Basic. Π‘ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Visual Basic ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Windows Π½Π΅ ΡΡ‚ановится Π±ΠΎΠ»Π΅Π΅ эффСктивным, Π½ΠΎ ΠΎΠ½ΠΎ становится Π±ΠΎΠ»Π΅Π΅ простым (Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв).

Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΈΠ½Ρ‚СрфСйсом Windows, Ρ‚ΠΎ Π½Π΅Π»ΡŒΠ·Ρ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ срСдства программирования C++Builder. НСсколько Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ рядовому программисту ΠΎΡΡ‚Π°Π²Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‡Ρ‚Π°Ρ‚ΡŒ ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ собствСнных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π² ΡΡ€Π΅Π΄Π΅ Windows, Ρ‚. ΠΊ. СдинствСнным срСдством Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±Ρ‹Π» Borland C++ for Windows, явно ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° ΠΏΡ€ΠΎΡ„Сссионалов, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΡ… ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌΠΈ знаниями ΠΈ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ. C++ Builder Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ навязываСт программисту свой собствСнный ΡΡ‚ΠΈΠ»ΡŒ программирования, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ, Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ особом ΠΆΠ΅Π»Π°Π½ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ с C++ Builder Π½Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΡƒΠΆΠ΅ Π½Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚авляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ. Π‘++ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования.

Delphi — это срСда быстрой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ языка программирования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ язык Delphi. Π―Π·Ρ‹ΠΊ Delphi — строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык, Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π»Π΅ΠΆΠΈΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ программистам Object Pascal. Borland Delphi 7 Studio позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ самыС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: ΠΎΡ‚ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… ΠΎΠ΄Π½ΠΎΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ управлСния распрСдСлСнными Π±Π°Π·Π°ΠΌΠΈ. DelphiΠ½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования, Π½ΠΎ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Однако, ΠΏΡ€ΠΈ всСм этом Π²Ρ‹Π±ΠΎΡ€ ΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° ΡΠ·Ρ‹ΠΊ Π‘#, входящий Π² Visual Studio .Net, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ ряд прСимущСств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ процСсс создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

C# создавался Microsoft, ΠΊΠ°ΠΊ основной язык для .NET Framework. Microsoft спроСктировала C# Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π‘, Π‘++ ΠΈ Java-программисты смогли Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π½Π΅Π³ΠΎ. C# ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΡ€Π½ΠΈ Π² ΡΠ·Ρ‹ΠΊΠ°Ρ… Π‘, Π‘++ ΠΈ Java, поэтому Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΈΠΉ.

Бинтаксис Ρƒ C# Π½Π΅ Ρ‚Π°ΠΊΠΎΠΉ слоТный ΠΊΠ°ΠΊ Ρƒ Π‘++, поэтому Π΅Π³ΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Π³Ρ‡Π΅. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° Π‘++, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ Π½Π° C#, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ доступа ΠΊ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ функциям (это всС-Ρ‚Π°ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нСуправляСмого ΠΊΠΎΠ΄Π°).

Π‘# - ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ язык, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ вСрсиями .NET Framework для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ.

C# ΠΈΠΌΠ΅Π΅Ρ‚ схоТий с C ΡΡ‚ΠΈΠ»ΡŒ синтаксиса (для ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… конструкций, Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π°, описания сигнатуры ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Π΄Ρ€.), ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с Java (отсутствиС мноТСствСнного наслСдования ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½ΠΎΠ², Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ сборщика мусора) ΠΈ Delphi (ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚), Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ»ΠΎΡ€ΠΈΡ‚.

C# ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык, ΠΊΠ°ΠΊ ΠΈ Π²ΡΡ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET[7].

Π’ C# прСдставлСна концСпция пространств ΠΈΠΌΠ΅Π½, аналогичная ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌ Π² Java. Π­Ρ‚ΠΎ позволяСт иСрархичСски ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму Ρ‚ΠΈΠΏΠΎΠ², дСлая ΠΊΠΎΠ΄ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ понятным ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. РСализация структур ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏΠΎΠ², Ρ€Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΠ΄Π΅Ρ‚ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, вмСстС с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ массивы (ΠΊΠ°ΠΊ Π² Java), Π½ΠΎ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ позволяСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π’Π²ΠΈΠ΄Ρƒ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π°, C# являСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ для быстрого конструирования Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .Net содСрТит мноТСство Π²Π°ΠΆΠ½Ρ‹Ρ… слуТб:

1. .Net прСдоставляСт срСдства для исполнСния инструкций, содСрТащихся Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, написанной Π½Π° C#. Π­Ρ‚Π° Ρ‡Π°ΡΡ‚ΡŒ .Net называСтся срСдой исполнСния.

2. .Net ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ срСду, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ ΠΊ Π½Π΅ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ….

3. .Net освобоТдаСт программиста ΠΎΡ‚ ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ приводящСго ΠΊ ΠΎΡˆΠΈΠ±ΠΊΠ°ΠΌ процСсса управлСния ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ.

4. .Net прСдоставляСт Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ срСду исполнСния.

5. Π’ ΡΠΎΡΡ‚Π°Π² .Net входят Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, содСрТащая массу Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. Она экономит Π½Π΅ΠΌΠ°Π»ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ программист ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΊΠΎΠ΄Π°. ЀактичСски, ΠΎΠ½ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄, созданный ΠΈ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ программистами Microsoft.

6. Π’ .Net ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ.

7. .Net обСспСчиваСт прСкрасноС взаимодСйствиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанных Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках. Π›ΡŽΠ±ΠΎΠΉ язык ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ .Net, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками этой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

ΠŸΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² прСимущСства Π‘# ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚воряСт всСм Ρ€Π°Π½Π΅Π΅ ΠΎΠ·Π²ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ трСбованиям.

2.ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ΡΠΊΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ

2.1.Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ состоит ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²

НиТС прСдставлСно описаниС основных Ρ„Π°ΠΉΠ»ΠΎΠ²:

Ρ• Form1. cs — Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТится ΠΊΠΎΠ΄, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹;

Ρ• Form1. resx — Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТится информация ΠΎ Π³Ρ€Π°Ρ„ичСском прСдставлСнии Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ «Π‘Π°ΠΏΠ΅Ρ€»;

Ρ• Form2. cs — Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТится ΠΊΠΎΠ΄, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ„ΠΎΡ€ΠΌΡ‹ настроСк ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля;

Ρ• Form2. resx — Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТится информация ΠΎ Π³Ρ€Π°Ρ„ичСском прСдставлСнии Ρ„ΠΎΡ€ΠΌΡ‹ настроСк ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля;

Ρ• AboutBox1. cs — Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТится ΠΊΠΎΠ΄, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ„ΠΎΡ€ΠΌΡ‹ «Πž ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅»;

Ρ• AboutBox1. resx — Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТится информация ΠΎ Π³Ρ€Π°Ρ„ичСском прСдставлСнии Ρ„ΠΎΡ€ΠΌΡ‹ «Πž ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅»;

Ρ• Π‘ΠΏΡ€Π°Π²ΠΊΠ°. htm — HTML-страница, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ содСрТится справка ΠΏΠΎ ΠΈΠ³Ρ€Π΅;

Ρ• Мина. jpg — ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΈΠ½Ρ‹ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ «Πž ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅»

Ρ• Π‘Π°ΠΏΠ΅Ρ€. exe — Π·Π°ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, находящийся Π² ΠΏΠ°ΠΏΠΊΠ΅ debug, которая находится Π² ΠΏΠ°ΠΏΠΊΠ΅ bin

2.2. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация основных элСмСнтов C#.

Для Π΅Π³ΠΎ запуска Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠŸΡƒΡΠΊ, Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ ВсС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Microsoft Visual Studio .NET 2005Microsoft Visual Studio .NET 2005. Π”Π°Π»Π΅Π΅ Π² Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ²ΡˆΠ΅ΠΌΡΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Open Project ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊ, Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π‘Π°ΠΏΠ΅Ρ€.sln. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Для измСнСния внСшнСго Π²ΠΈΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ярлыком Design. МоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты Ρ„ΠΎΡ€ΠΌΡ‹, ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΠ² ΠΈΡ… ΠΈΠ· ΠΎΠΊΠ½Π° Toolbox. Π’ ΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ это HelpProvider ΠΈ MenuStrip ΠΏΡ€ΠΈ конструировании Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹, Label, TextBox ΠΈ Button ΠΏΡ€ΠΈ создании Ρ„ΠΎΡ€ΠΌΡ‹ настроСк ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля. Бвойства ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, зайдя Π² ΠΌΠ΅Π½ΡŽ View — Properties Windows ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

//задаСтся тСкст ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Ρ„ΠΎΡ€ΠΌΡ‹ О ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

this.Text = String. Format («Πž ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅»);

this.labelProductName.Text = «CΠ°ΠΏΠ΅Ρ€» ;

this.labelVersion.Text = String. Format («Π’Срсия {0}», AssemblyVersion);

this.labelCopyright.Text = «ΠΠ²Ρ‚ΠΎΡ€ Π’Π΅ΠΌΠ΅Ρ€Π΅Π² ΠšΠΈΡ€ΠΈΠ»Π»» ;

this.labelCompanyName.Text = «ΠšΠ€ ΠœΠ“Π’Π£ ΠΈΠΌ. Π. Π­. Π‘Π°ΡƒΠΌΠ°Π½Π°, Π³Ρ€ΡƒΠΏΠΏΠ° БАПР-31» ;

this.textBoxDescription.Text ="ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° создана Π² Microsoft Visual Studio

Π©Π΅Π»ΠΊΠ½ΡƒΠ² Π·Π½Π°Ρ‡ΠΎΠΊ Молния Π² ΠΌΠ΅Π½ΡŽ Properties ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ всС события ΠΈ Π΄Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² Π½Π° ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ…, Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ.

2.2.1.ΠšΠ»Π°ΡΡΡ‹

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ любая Ρ„ΠΎΡ€ΠΌΠ°, ΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ основным элСмСнтом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΈ ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ для построСния прилоТСния, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ ΠΊΠ»Π°ΡΡ, поэтому удаСтся ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ экзСмпляры Ρ„ΠΎΡ€ΠΌ ΠΈ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ…. Π’ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ классы, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°ΠΌ Windows прилоТСния.

public partial class Form1: Form //главная Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

{

public Form1() //конструктор Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹

{

InitializeComponent ();

//присваиваСм Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния полям

MR = 10;

MC = 10;

NM = 10;

W = 40;

H = 40;

this.newGame (1);//Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° newGame (int r)

}

}

public partial class Form2: Form //Ρ„ΠΎΡ€ΠΌΠ° настроСк ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля

{

public Form2()//конструктор Ρ„ΠΎΡ€ΠΌΡ‹ Настройки

{

InitializeComponent ();

}

}

partial class AboutBox1: Form //Ρ„ΠΎΡ€ΠΌΠ° «Πž ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅»

{

public AboutBox1()//конструктор Ρ„ΠΎΡ€ΠΌΡ‹ О ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

{

InitializeComponent ();

//задаСтся тСкст ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Ρ„ΠΎΡ€ΠΌΡ‹ О ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

this.Text = String. Format («Πž ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅»);

this.labelProductName.Text = «CΠ°ΠΏΠ΅Ρ€» ;

this.labelVersion.Text = String. Format («Π’Срсия {0}», AssemblyVersion);

this.labelCopyright.Text = «ΠΠ²Ρ‚ΠΎΡ€ Π’Π΅ΠΌΠ΅Ρ€Π΅Π² ΠšΠΈΡ€ΠΈΠ»Π»» ;

this.labelCompanyName.Text = «ΠšΠ€ ΠœΠ“Π’Π£ ΠΈΠΌ. Π. Π­. Π‘Π°ΡƒΠΌΠ°Π½Π°, Π³Ρ€ΡƒΠΏΠΏΠ° БАПР-31» ;

this.textBoxDescription.Text ="ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° создана Π² Microsoft Visual Studio 2005 для срСды .NET Framework" ;

}

}

2.2.2.Π§Π»Π΅Π½Ρ‹ класса

Поля

ПолСм называСтся Ρ‡Π»Π΅Π½-пСрСмСнная, содСрТащий Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ ΠžΠžΠŸ поля ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Для классов

public partial class Form1: Form

public partial class Form2: Form

полями ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

private int

MR,//ΠΊΠΎΠ»-Π²ΠΎ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ

MC,//ΠΊΠΎΠ»-Π²ΠΎ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ

NM,//ΠΊΠΎΠ»-Π²ΠΎ ΠΌΠΈΠ½

W,//ΡˆΠΈΡ€ΠΈΠ½Π° ΠΊΠ»Π΅Ρ‚ΠΊΠΈ поля

H;//высота ΠΊΠ»Π΅Ρ‚ΠΊΠΈ поля

private int

nMin,//ΠΊΠΎΠ»-Π²ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΌΠΈΠ½

nFlag;//ΠΊΠΎΠ»-Π²ΠΎ поставлСнных Ρ„Π»Π°Π³ΠΎΠ²

private int status;/*ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ этапы Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

0-Π½Π°Ρ‡Π°Π»ΠΎ ΠΈΠ³Ρ€Ρ‹,

1-ΠΈΠ³Ρ€Π°,

2-ΠΊΠΎΠ½Π΅Ρ† ΠΈΠ³Ρ€Ρ‹*/

private int[,] Pole;/*элСмСнт массива Π·Π°Π΄Π°Π΅Ρ‚ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ поля ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ значСния

0−8 -ΠΊΠΎΠ»-Π²ΠΎ ΠΌΠΈΠ½ Π² ΡΠΎΡΠ΅Π΄Π½ΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΊΠ°Ρ…,

9 -Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ΅ ΠΌΠΈΠ½Π°,

100−109 -ΠΊΠ»Π΅Ρ‚ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π°,

200−209 -Π² ΠΊΠ»Π΅Ρ‚ΠΊΡƒ поставлСн Ρ„Π»Π°Π³*/

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ пСрСмСнная Pole Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² ΡΠ΅Π±Π΅ ссылку Π½Π° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² C# Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° Π΄Π²Π° Ρ‚ΠΈΠΏΠ°: ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π°Π±ΠΎΡ€ΠΎΠΌ индСксов — «ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚» Π² ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ пространствС. КаТдоС ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ свою Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ, Π½Π΅ Π·Π°Π²ΠΈΡΡΡ‰ΡƒΡŽ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ….

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ

Pole = new int[MR + 2, MC + 2];

происходит Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅

private void newGame (int r)

{

}

ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСн Π΄Π°Π»Π΅Π΅.

Доступ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ производится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° [ ], Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ индСксы ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ. ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ элСмСнтам присваиваСтся Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅:

private void newGame (int r)

{

/*Π½Π΅ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΌ элСмСнтам массива ΠΌΠΈΠ½Π½ΠΎΠ³ΠΎ поля присваиваСм

Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -3 для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ процСсса открытия ΠΊΠ»Π΅Ρ‚ΠΎΠΊ*/

for (row = 0; row <= MR + 1; row++)

{

Pole[row, 0] = -3;

Pole[row, MC + 1] = -3;

}

for (col = 0; col <= MC + 1; col++)

{

Pole[0, col] = -3;

Pole[MR + 1, col] = -3;

}

//ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ элСмСнтов массива ΠΌΠΈΠ½Π½ΠΎΠ³ΠΎ поля

for (row = 1; row <= MR; row++)

{

for (col = 1; col <= MC; col++)

{

Pole[row, col] = 0;

}

}

}

Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ….

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ называСтся Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π²ΠΎΠ·Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (ΠΈΠ»ΠΈ поля). ΠŸΡ€ΠΈ объявлСнии ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструкция Π²ΠΈΠ΄Π°:

<οΏ½ΠΌΠΎΠ΄ΠΈΡ„_дост><οΏ½Ρ‚ΠΈΠΏ_Π²ΠΎΠ·Π²Ρ€_Π·Π½Π°Ρ‡><οΏ½ΠΈΠ΄Π΅Π½Ρ‚_ΠΌΠ΅Ρ‚ΠΎΠ΄Π°>(<οΏ½Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½_ΠΏΠ°Ρ€Π°ΠΌ>opt)

{

<οΏ½Ρ‚Π΅Π»ΠΎ_ΠΌΠ΅Ρ‚ΠΎΠ΄Π°>

}

ΠœΠ΅Ρ‚ΠΎΠ΄ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ поля ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½ΠΎ ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния. Если Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ значСния Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Ρ‚ΠΎ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Ρ‚ΠΈΠΏΠ° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния указываСтся void.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ процСсс ΠΈΠ³Ρ€Ρ‹:

private void newGame (int r)//ΠΌΠ΅Ρ‚ΠΎΠ΄, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ Π½ΠΎΠ²ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ

{

//Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° расстановки ΠΌΠΈΠ½

int random = r;

if (random == 1)

{

this.Rand ();//Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Rand ()

}

if (random == 2)

{

this.Lin ();//Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Lin ()

}

if (random == 3)

{

this.BBS ();//Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° BBS ()

}

}

//способы расстановки ΠΌΠΈΠ½

private void Rand ()//ΠΌΠ΅Ρ‚ΠΎΠ΄, основанный Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ класса Random

{

int n = 0;//ΠΊΠΎΠ»-Π²ΠΎ поставлСнных ΠΌΠΈΠ½

int row, col;

Random rnd = new Random ();//Π³Π΅Π½Π΅Ρ€Π΅Ρ‚ΠΎΡ€ случайных чисСл

//расстановка ΠΌΠΈΠ½

do

{

row = rnd. Next (MR) + 1;

col = rnd. Next (MC) + 1;

if (Pole[row, col] ≠ 9)

{

Pole[row, col] = 9;

n++;

}

}

while (n ≠ NM);

}

private void Lin ()//ΠΌΠ΅Ρ‚ΠΎΠ΄, основанный Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ конгруэнтного ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

{

int n = 0;

int row, col;

double a = Convert. ToInt64(Math.Exp ((double)5 * Math. Log (7))),

m = Convert. ToInt64(Math.Exp ((double)31 * Math. Log (2))) — 1;

int x = 27 011 989, c = 19;

//расстановка ΠΌΠΈΠ½

do

{

//для нахоТдСния пвСвдослучайного числа Π₯ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° x (k+1)=(a * x (k) + c) mod m

x = (int)((a * x + c) % m);

//находится пвСвдослучайный индСкс ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π½Π° [0,MR]

row =Convert.ToInt32(Math.Ceiling ((double) MR * x / (m-1)));

x = (int)((a * x + c) % m);

//находится пвСвдослучайный индСкс ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π½Π° [0,MΠ‘]

col = Convert. ToInt32(Math.Ceiling ((double)MC * x / (m-1)));

if (Pole[row, col] ≠ 9)

{

Pole[row, col] = 9;

n++;

}

}

while (n ≠ NM);

}

private void BBS ()//ΠΌΠ΅Ρ‚ΠΎΠ΄, основанный Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π‘Π»ΡŽΠΌΠ°, Π‘Π»ΡŽΠΌΠ° ΠΈ Π¨ΡƒΠ±Π°

{

int n = 0;

int row, col;

int x = 2701;

int p=2047,q=8191;

int M = p * q;

//расстановка ΠΌΠΈΠ½

do

{

//для нахоТдСния пвСвдослучайного числа Π₯ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° x (k+1)=(x (k)^2) mod m

x = Math. Abs ((int)((x * x) % M));

//находится пвСвдослучайный индСкс ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π½Π° [0,MR]

row = Convert. ToInt32(Math.Ceiling ((double)MR * x / (M-1)));

x = Math. Abs ((int)((x * x) % M));

//находится пвСвдослучайный индСкс ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π½Π° [0,MΠ‘]

col = Convert. ToInt32(Math.Ceiling ((double)MC * x / (M-1)));

if (Pole[row, col] ≠ 9)

{

Pole[row, col] = 9;

n++;

}

}

while (n ≠ NM);

}

private void showPole (Graphics g, int status)//ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»Π΅

{

for (int row = 1; row <= MR; row++)

{

for (int col = 1; col <= MC; col++)

{

this.kletka (g, row, col, status);//Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° kletka ()

}

}

}

private void kletka (Graphics g, int row, int col, int status)

//ΠΌΠ΅Ρ‚ΠΎΠ΄, выводящий содСрТимоС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

{

// Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ΅ Ρ„Π»Π°Π³

if (Pole[row, col] >= 200)

this.flag (g, x, y);

//отрисовываСм Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

g.DrawRectangle (Pens.Black, x — 1, y — 1, x + W, y + H);

// Ссли ΠΈΠ³Ρ€Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π° (status=2), ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠΈΠ½Ρ‹

if ((status == 2) && ((Pole[row, col] % 10) == 9))

this.mina (g, x, y);

}

private void open (int row, int col)//ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΈ Π²ΡΠ΅ сосСдниС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ ΠΌΠΈΠ½

{

//рСкурсивный процСсс открытия всСй пустых сосСдих ΠΊΠ»Π΅Ρ‚ΠΎΠΊ

if (Pole[row, col] == 0)

{

Pole[row, col] = 100;

//ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ содСрТимоС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

this.Invalidate (new Rectangle (x, y, W, H));

//ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΡ‹ΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ слСва, справа, свСрху, снизу

this.open (row, col — 1);

this.open (row — 1, col);

this.open (row, col + 1);

this.open (row + 1, col);

//ΠΏΡ€ΠΈΠΌΡ‹ΠΊΠ°ΡŽΡ‰ΠΈΠ΅ диагонально

this.open (row — 1, col — 1);

this.open (row — 1, col + 1);

this.open (row + 1, col — 1);

this.open (row + 1, col + 1);

}

}

Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, основанных Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ:

private void mina (Graphics g, int x, int y)//ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ€ΠΈΡΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΈΠ½Ρƒ

{

//корпус

g.FillRectangle (Brushes.Green, x + 16, y + 26, 8, 4);

g.FillRectangle (Brushes.Green, x + 8, y + 30, 24, 4);

g.DrawPie (Pens.Black, x + 6, y + 28, 28, 16, 0, -180);

g.FillPie (Brushes.Green, x + 6, y + 28, 28, 16, 0, -180);

//полоса Π½Π° ΠΊΠΎΡ€ΠΏΡƒΡΠ΅

g.DrawLine (Pens.Black, x + 12, y + 32, x + 28, y + 32);

//Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ «ΡƒΡ»

g.DrawLine (Pens.Black, x + 20, y + 22, x + 20, y + 26);

//Π±ΠΎΠΊΠΎΠ²Ρ‹Π΅ «ΡƒΡΡ‹»

g.DrawLine (Pens.Black, x + 8, y + 30, x + 6, y + 28);

g.DrawLine (Pens.Black, x + 32, y + 30, x + 34, y + 28);

}

private void flag (Graphics g, int x, int y)//ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ€ΠΈΡΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π»Π°Π³

{

Point[] p = new Point[3];

Point[] m = new Point[5];

//Ρ„Π»Π°ΠΆΠΎΠΊ

p[0]. X = x + 4;

p[0]. Y = y + 4;

p[1]. X = x + 30;

p[1]. Y = y + 12;

p[2]. X = x + 4;

p[2]. Y = y + 20;

g.FillPolygon (Brushes.Red, p);

//Π΄Ρ€Π΅Π²ΠΊΠΎ

g.DrawLine (Pens.Black, x + 4, y + 4, x + 4, y + 35);

//Π±ΡƒΠΊΠ²Π° М Π½Π° Ρ„Π»Π°ΠΆΠΊΠ΅

m[0]. X = x + 8;

m[0]. Y = y + 14;

m[1]. X = x + 8;

m[1]. Y = y + 8;

m[2]. X = x + 10;

m[2]. Y = y + 10;

m[3]. X = x + 12;

m[3]. Y = y + 8;

m[4]. X = x + 12;

m[4]. Y = y + 14;

g.DrawLines (Pens.White, m);

}

Бобытия

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ исполнСниС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π°. Бобытия — Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ программирования для Microsoft Windows. НапримСр, события Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΌΡ‹ΡˆΠΈ, Ρ‰Π΅Π»Ρ‡ΠΊΠ΅ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΎΠΊΠ½Π°. Π’Π°ΠΆΠ½Π΅ΠΉΡˆΡƒΡŽ Ρ€ΠΎΠ»ΡŒ ΠΈΠ³Ρ€Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий— ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, исполняСмыС ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ событий:

private void Π‘Π°ΠΏΠ΅Ρ€_MouseDown (object sender, MouseEventArgs e)//Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ Π½Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅

{

}

private void Π½ΠΎΠ²Π°ΡΠ˜Π³Ρ€Π°ToolStripMenuItem1_Click (object sender, EventArgs e) //Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π½Π° ΠΏΡƒΠ½ΠΊΡ‚Π΅ мСню Новая ΠΈΠ³Ρ€Π°

{

this.newGame (1);

this.Invalidate ();

}

//ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠ² Π½Π° ΠΏΡƒΠ½ΠΊΡ‚Π°Ρ… мСню, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… указываСтся Ρ€Π°Π·ΠΌΠ΅Ρ€ поля ΠΈ ΠΊΠΎΠ»-Π²ΠΎ ΠΌΠΈΠ½

private void ΠΌΠΈΠ½ToolStripMenuItem_Click (object sender, EventArgs e)

{

}

private void ΠΌΠΈΠ½ToolStripMenuItem1_Click (object sender, EventArgs e)

{

}

private void ΠΌΠΈΠ½ToolStripMenuItem2_Click (object sender, EventArgs e)

{

}

private void ΠΌΠΈΠ½ToolStripMenuItem3_Click (object sender, EventArgs e)

{

}

private void ΠΌΠΈΠ½ToolStripMenuItem4_Click (object sender, EventArgs e)

{

}

private void ΠΌΠΈΠ½ToolStripMenuItem5_Click (object sender, EventArgs e)

{

}

private void особыСToolStripMenuItem_Click (object sender, EventArgs e) //Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π½Π° ΠΏΡƒΠ½ΠΊΡ‚Π΅ мСню ΠžΡΠΎΠ±Ρ‹Π΅

{

Настройки settings = new Настройки ();//созданиС экзСмпляра Ρ„ΠΎΡ€ΠΌΡ‹ Настройки

settings.ShowDialog ();//появлСниС Ρ„ΠΎΡ€ΠΌΡ‹ Настройки

//присваиваСм значСния полям Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ Настройки

MR = settings. MR;

MC = settings. MC;

NM = settings. NM;

W = 30;

H = 30;

this.newGame (1);

this.Invalidate ();

}

//ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠ² Π½Π° ΠΏΡƒΠ½ΠΊΡ‚Π°Ρ… мСню, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… указываСтся способ расстановки ΠΌΠΈΠ½

private void randomToolStripMenuItem_Click (object sender, EventArgs e)

{

}

private void ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉΠšΠΎΠ½Π³Ρ€ΡƒΡΠ½Ρ‚Π½Ρ‹ΠΉΠœΠ΅ΠΎToolStripMenuItem_Click (object sender, EventArgs e)

{

}

private void Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌToolStripMenuItem_Click (object sender, EventArgs e)

{

}

private void Π²Ρ‹Ρ…ΠΎΠ΄ToolStripMenuItem_Click (object sender, EventArgs e)

//Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π½Π° ΠΏΡƒΠ½ΠΊΡ‚Π΅ мСню Π’Ρ‹Ρ…ΠΎΠ΄

{

this.Close ();

}

private void справкаToolStripMenuItem_Click (object sender, EventArgs e) //Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π½Π° ΠΏΡƒΠ½ΠΊΡ‚Π΅ мСню Π‘ΠΏΡ€Π°Π²ΠΊΠ°

{

Help.ShowHelp (this, this. helpProvider1.HelpNamespace);//Π²Ρ‹Π·ΠΎΠ² Ρ„Π°ΠΉΠ»Π° справки

}

private void ΠΎΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ToolStripMenuItem_Click (object sender, EventArgs e) //Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π½Π° ΠΏΡƒΠ½ΠΊΡ‚Π΅ мСню О ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

{

AboutBox1 saper = new AboutBox1();//созданиС экзСмпляра Ρ„ΠΎΡ€ΠΌΡ‹ О ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

saper.ShowDialog ();//появлСниС Ρ„ΠΎΡ€ΠΌΡ‹ О ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

}

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ внимания заслуТиваСт событиС Paint, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сообщаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎ Π½Π΅ΠΎΠ±Ρ…одимости ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΠΎΠΊΠ½Π΅. Paint ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ вся клиСнтская ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΈΠ»ΠΈ Π΅Π΅ Ρ‡Π°ΡΡ‚ΡŒ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π° (invalid) ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ пСрСрисовки. Когда Ρ„ΠΎΡ€ΠΌΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создана, вся клиСнтская ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΅Ρ‰Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π² Π½Π΅ΠΉ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»Π°. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ происходит ΠΏΠ΅Ρ€Π²ΠΎΠ΅ событиС Paint, ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰Π΅Π΅ ΠΎ Π½Π΅ΠΎΠ±Ρ…одимости ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚ской области. Когда ΠΎΠΊΠ½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΡΠΊΡ€Π°Π½Ρƒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, Windows Π½Π΅ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π²ΠΈΠ΄ клиСнтской области, Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠΊΠ½ΠΎΠΌ. ΠŸΠΎΡ‚ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° клиСнтская ΠΎΠ±Π»Π°ΡΡ‚ΡŒ снова открываСтся, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅ Π²ΠΈΠ΄. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π½Π΅ΠΉ ΠΈ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ событиС Paint. Когда ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ послС свСртывания возвращаСтся Π² Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ состояниС, Π² Π½Π΅ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ происходит событиС Paint.

private void Form1_Paint (object sender, PaintEventArgs e)//ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события

Paint

{

this.showPole (e.Graphics, status); //Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° showPole

}

3.ВСхнологичСская Ρ‡Π°ΡΡ‚ΡŒ

3.1.БистСмныС трСбования

Для запуска ΠΈΠ³Ρ€Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ систСмныС трСбования:

1. ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ Pentium 3.

2. Частота процСссора 800 ΠœΠ³Ρ†.

3. 256 Мб ΠžΠ—Π£.

4. Π’ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€ Radeon 9600 ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅.

5. Visual Studio 2003 ΠΈΠ»ΠΈ 2005.

6. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма Windows 2000 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠ΅ вСрсии

3.2.Запуск ΠΈ ΠΏΡ€ΠΎΡ†Π΅ΡΡ ΠΈΠ³Ρ€Ρ‹.

Для запуска ΠΈΠ³Ρ€Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

1.Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ диск «ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° Π’Π΅ΠΌΠ΅Ρ€Π΅Π²Π° К., Π³Ρ€. БАПР-31. Π˜Π³Ρ€Π° „Π‘Π°ΠΏΠ΅Ρ€“» Π² Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΄.

2.

— Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠŸΡƒΡΠΊ

— Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠΌ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Мой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€

— Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠΌ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅

3.На экранС появится ΠΎΠΊΠ½ΠΎ (см. Ρ€ΠΈΡ. 3.1)

4.Если Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π½Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ Microsoft .NET Framework 3.0 ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ установочный Ρ„Π°ΠΉΠ» dotnetfx3.exe

5.Запуск ΠΈΠ³Ρ€Ρ‹ осущСствляСтся Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠΌ Π½Π° Ρ„Π°ΠΉΠ»Π΅

ЦСль ΠΈΠ³Ρ€Ρ‹ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ быстрСС Π½Π°ΠΉΡ‚ΠΈ всС ΠΌΠΈΠ½Ρ‹ Π½Π° ΠΌΠΈΠ½Π½ΠΎΠΌ ΠΏΠΎΠ»Π΅, Π½Π΅ Π²ΡΠΊΡ€Ρ‹Π² Π½ΠΈ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π½ΠΈΡ….

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Π² ΠΌΠ΅Π½ΡŽ Π˜Π³Ρ€Π° Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Новая ΠΈΠ³Ρ€Π° (рис. 3.2).

Π˜Π³Ρ€ΠΎΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ячСйку, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² Π΅Π΅ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ. Если открываСмая ячСйка содСрТит ΠΌΠΈΠ½Ρƒ, ΠΈΠ³Ρ€Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ.

Если ΠΌΠΈΠ½Ρ‹ Π½Π΅Ρ‚, Π² ΡΡ‡Π΅ΠΉΠΊΠ΅ появится Ρ†ΠΈΡ„Ρ€Π°, которая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, сколько ΠΌΠΈΠ½ находится Π² Π²ΠΎΡΡŒΠΌΠΈ смСТных с Π½Π΅ΠΉ ячСйках.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ячСйку, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎ ΠΌΠ½Π΅Π½ΠΈΡŽ ΠΈΠ³Ρ€ΠΎΠΊΠ° находится ΠΌΠΈΠ½Π°, Π½ΡƒΠΆΠ½ΠΎ Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ Π΅Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π² ΠΌΠ΅Π½ΡŽ Π˜Π³Ρ€Π° слСдуСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π˜Π³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ (рис. 3.2), Π° Π΄Π°Π»Π΅Π΅:

Ρ• Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ поля 10 * 10 ΠΈΠ»ΠΈ 20 *20, Π·Π°Ρ‚Π΅ΠΌ количСство ΠΌΠΈΠ½ 10, 15, 20, 40, 60

ΠΈΠ»ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠžΡΠΎΠ±Ρ‹Π΅ ΠΈ Π·Π°Π΄Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ поля, ΡƒΠΊΠ°Π·Π°Π² количСство ΠΊΠ»Π΅Ρ‚ΠΎΠΊ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ввСсти число ΠΌΠΈΠ½. (рис. 3.3)

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ способ расстановки ΠΌΠΈΠ½ Π½Π° ΠΏΠΎΠ»Π΅, Π² ΠΌΠ΅Π½ΡŽ Π˜Π³Ρ€Π° Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Бпособ расстановки ΠΌΠΈΠ½, Π° Π΄Π°Π»Π΅Π΅:

Ρ• Random

Ρ• Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ конгруэнтный ΠΌΠ΅Ρ‚ΠΎΠ΄

Ρ• Алгоритм Π‘Π»ΡŽΠΌΠ°, Π‘Π»ΡŽΠΌΠ° ΠΈ Π¨ΡƒΠ±Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎ ΠΈΠ³Ρ€Π΅, Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π² ΠΌΠ΅Π½ΡŽ Π‘ΠΏΡ€Π°Π²ΠΊΠ°, Π° Π΄Π»Ρ ознакомлСния с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ

О ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

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

Π’ Ρ…ΠΎΠ΄Π΅ выполнСния курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ рассмотрСны ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ основныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ гСнСрирования псСвдослучайных чисСл: Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ конгруэнтный ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΌΠ΅Ρ‚ΠΎΠ΄ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ с Π·Π°ΠΏΠ°Π·Π΄Ρ‹Π²Π°Π½ΠΈΡΠΌΠΈ, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π‘Π»ΡŽΠΌΠ°, Π‘Π»ΡŽΠΌΠ° ΠΈ Π¨ΡƒΠ±Π°, Π’ΠΈΡ…Ρ€ΡŒ ΠœΠ΅Ρ€ΡΠ΅Π½Π½Π°.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Π±Ρ‹Π»ΠΈ Π²Ρ‹Π±Ρ€Π°Π½Ρ‹: ΠΌΠ΅Ρ‚ΠΎΠ΄, основанный Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ систСмного класса Random, Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ конгруэнтный ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π‘Π»ΡŽΠΌΠ°, Π‘Π»ΡŽΠΌΠ° ΠΈ Π¨ΡƒΠ±Π° Π² ΡΠ²ΡΠ·ΠΈ с ΠΈΡ… Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎ простым матСматичСским прСдставлСниСм ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ получСния любого числа, располагая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ стартового.

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

Π’ ΠΊΠΎΠ½ΡΡ‚рукторской части Π±Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. На ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ ΠΎΠ± ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Ρ… структурах языка Π‘# Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΠ³Ρ€Ρ‹ ΠΈ Π³Ρ€Π°Ρ„ичСский интСрфСйс.

ВСхнологичСская Ρ‡Π°ΡΡ‚ΡŒ состояла ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… инструкций ΠΏΠΎ Π·Π°ΠΏΡƒΡΠΊΡƒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ сформулированы Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ трСбования ΠΊ ΡΠΈΡΡ‚Π΅ΠΌΠ΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ.

Π—Π°Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΊΡƒΡ€ΡΠΎΠ²ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ.

1. ΠšΠ½ΡƒΡ‚ Π”. Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования, Ρ‚. 2. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹Πœ.: «Π’ΠΈΠ»ΡŒΡΠΌΡ», 2007. — Π‘. 832.

2. Зубинский А. Π’ ΠΏΠΎΠΈΡΠΊΠ°Ρ… случайности. — ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ΅ ΠžΠ±ΠΎΠ·Ρ€Π΅Π½ΠΈΠ΅,

29 (2003)

3. Π¨ΠΈΠ»Π΄Π³ Π“. ΠŸΠΎΠ»Π½Ρ‹ΠΉ справочник ΠΏΠΎ Π‘#/ΠŸΠ΅Ρ€. с Π°Π½Π³Π». — Πœ.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ «Π’ΠΈΠ»ΡŒΡΠΌc», 2004. — 752 с.

4. Ватсон К. Π‘#. — Πœ.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ «Π›ΠΎΡ€ΠΈ», 2005

5. Π ΠΈΡ…Ρ‚Π΅Ρ€ Π”ΠΆ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Microsoft .NET Framework. — Πœ.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎ-Ρ‚ΠΎΡ€Π³ΠΎΠ²Ρ‹ΠΉ Π΄ΠΎΠΌ «Π ΡƒΡΡΠΊΠ°Ρ РСдакция», 2003.-464 с.

6. Π€Ρ€ΠΎΠ»ΠΎΠ² А. Π’. Π€Ρ€ΠΎΠ»ΠΎΠ² Π“. Π’. Π―Π·Ρ‹ΠΊ Π‘#. Π‘Π°ΠΌΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒ. — Πœ: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ «Π”Π˜ΠΠ›ΠžΠ“-МИЀИ», 2003. — 560 с.

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

Код ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

public partial class Form1: Form //главная Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

{

private int

MR,//ΠΊΠΎΠ»-Π²ΠΎ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ

MC,//ΠΊΠΎΠ»-Π²ΠΎ ΠΊΠ»Π΅Ρ‚ΠΎΠΊ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ

NM,//ΠΊΠΎΠ»-Π²ΠΎ ΠΌΠΈΠ½

W,//ΡˆΠΈΡ€ΠΈΠ½Π° ΠΊΠ»Π΅Ρ‚ΠΊΠΈ поля

H;//высота ΠΊΠ»Π΅Ρ‚ΠΊΠΈ поля

private int

nMin,//ΠΊΠΎΠ»-Π²ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΌΠΈΠ½

nFlag;//ΠΊΠΎΠ»-Π²ΠΎ поставлСнных Ρ„Π»Π°Π³ΠΎΠ²

private int status;/*ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ этапы Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

0-Π½Π°Ρ‡Π°Π»ΠΎ ΠΈΠ³Ρ€Ρ‹,

1-ΠΈΠ³Ρ€Π°,

2-ΠΊΠΎΠ½Π΅Ρ† ΠΈΠ³Ρ€Ρ‹*/

private int[,] Pole;/*элСмСнт массива Π·Π°Π΄Π°Π΅Ρ‚ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ поля ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ значСния

0−8 -ΠΊΠΎΠ»-Π²ΠΎ ΠΌΠΈΠ½ Π² ΡΠΎΡΠ΅Π΄Π½ΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΊΠ°Ρ…,

9 -Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ΅ ΠΌΠΈΠ½Π°,

100−109 -ΠΊΠ»Π΅Ρ‚ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π°,

200−209 -Π² ΠΊΠ»Π΅Ρ‚ΠΊΡƒ поставлСн Ρ„Π»Π°Π³*/

private void newGame (int r)/*ΠΌΠ΅Ρ‚ΠΎΠ΄, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ Π½ΠΎΠ²ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ;

Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° r ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΡΠΏΠΎΡΠΎΠ± расстановки ΠΌΠΈΠ½

1-ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ систСмный класс Random,

2-ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ конгруэнтный ΠΌΠ΅Ρ‚ΠΎΠ΄,

3-ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π‘Π»ΡŽΠΌΠ°, Π‘Π»ΡŽΠΌΠ° ΠΈ Π¨ΡƒΠ±Π°*/

{

this.ClientSize = new Size (W * MC + 1, H * MR + 1+25);/*устанавливаСм Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„ΠΎΡ€ΠΌΡ‹ Π² ΡΠΎΠΎΡ‚вСтствии

с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля*/

int row, col;//индСксы ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

int k;//ΠΊΠΎΠ»-Π²ΠΎ ΠΌΠΈΠ½ Π² ΡΠΎΡΠ΅Π΄Π½ΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΊΠ°Ρ…

Pole = new int[MR + 2, MC + 2]; //инициализация массива ΠΌΠΈΠ½Π½ΠΎΠ³ΠΎ поля

/*Π½Π΅ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΌ элСмСнтам массива ΠΌΠΈΠ½Π½ΠΎΠ³ΠΎ поля присваиваСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -3

для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ процСсса открытия ΠΊΠ»Π΅Ρ‚ΠΎΠΊ*/

for (row = 0; row <= MR + 1; row++)

{

Pole[row, 0] = -3;

Pole[row, MC + 1] = -3;

}

for (col = 0; col <= MC + 1; col++)

{

Pole[0, col] = -3;

Pole[MR + 1, col] = -3;

}

//ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ элСмСнтов массива ΠΌΠΈΠ½Π½ΠΎΠ³ΠΎ поля

for (row = 1; row <= MR; row++)

{

for (col = 1; col <= MC; col++)

{

Pole[row, col] = 0;

}

}

//ΠΌΠ΅Ρ‚ΠΎΠ΄ расстановки ΠΌΠΈΠ½

int random = r;

if (random == 1)

{

this.Rand ();//Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Rand ()

}

if (random == 2)

{

this.Lin ();//Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Lin ()

}

if (random == 3)

{

this.BBS ();//Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° BBS ()

}

//для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ вычисляСм ΠΊΠΎΠ»-Π²ΠΎ ΠΌΠΈΠ½ Π² ΡΠΎΡΠ΅Π΄Π½ΠΈΡ… ΠΊΠ»Π΅Ρ‚ΠΊΠ°Ρ…

for (row = 1; row <= MR; row++)

{

for (col = 1; col <= MC; col++)

{

if (Pole[row, col] ≠ 9)

{

k = 0;

if (Pole[row — 1, col — 1] == 9)

k++;

if (Pole[row — 1, col] == 9)

k++;

if (Pole[row — 1, col + 1] == 9)

k++;

if (Pole[row, col — 1] == 9)

k++;

if (Pole[row, col + 1] == 9)

k++;

if (Pole[row + 1, col — 1] == 9)

k++;

if (Pole[row + 1, col] == 9)

k++;

if (Pole[row + 1, col + 1] == 9)

k++;

Pole[row, col] = k;

}

status = 0;//Π½Π°Ρ‡Π°Π»ΠΎ ΠΈΠ³Ρ€Ρ‹

nMin = 0;//Π½Π΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΈΠ½

nFlag = 0;//Π½Π΅Ρ‚ поставлСнных Ρ„Π»Π°Π³ΠΎΠ²

}

}

}

//способы расстановки ΠΌΠΈΠ½

private void Rand ()//ΠΌΠ΅Ρ‚ΠΎΠ΄, основанный Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ систСмного класса Random,

{

int n = 0;//ΠΊΠΎΠ»-Π²ΠΎ поставлСнных ΠΌΠΈΠ½

int row, col;

Random rnd = new Random ();//Π³Π΅Π½Π΅Ρ€Π΅Ρ‚ΠΎΡ€ случайных чисСл

//расстановка ΠΌΠΈΠ½

do

{

row = rnd. Next (MR) + 1;

col = rnd. Next (MC) + 1;

if (Pole[row, col] ≠ 9)

{

Pole[row, col] = 9;

n++;

}

}

while (n ≠ NM);

}

private void Lin ()//ΠΌΠ΅Ρ‚ΠΎΠ΄, основанный Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ конгруэнтного ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

{

int n = 0;

int row, col;

double a = Convert. ToInt64(Math.Exp ((double)5 * Math. Log (7))), m = Convert. ToInt64(Math.Exp ((double)31 * Math. Log (2))) — 1;

int x = 27 011 989, c = 19;

//расстановка ΠΌΠΈΠ½

do

{

//для нахоТдСния пвСвдослучайного числа Π₯ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° x (k+1)=(a * x (k) + c) mod m

x = (int)((a * x + c) % m);

//находится пвСвдослучайный индСкс ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π½Π° [0,MR]

row =Convert.ToInt32(Math.Ceiling ((double) MR * x / (m-1)));

x = (int)((a * x + c) % m);

//находится пвСвдослучайный индСкс ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π½Π° [0,MΠ‘]

col = Convert. ToInt32(Math.Ceiling ((double)MC * x / (m-1)));

if (Pole[row, col] ≠ 9)

{

Pole[row, col] = 9;

n++;

}

}

while (n ≠ NM);

}

private void BBS ()//ΠΌΠ΅Ρ‚ΠΎΠ΄, основанный Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π‘Π»ΡŽΠΌΠ°, Π‘Π»ΡŽΠΌΠ° ΠΈ Π¨ΡƒΠ±Π°

{

int n = 0;

int row, col;

int x = 2701;

int p=2047,q=8191;

int M = p * q;

//расстановка ΠΌΠΈΠ½

do

{

//для нахоТдСния пвСвдослучайного числа Π₯ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° x (k+1)=(x (k)^2) mod m

x = Math. Abs ((int)((x * x) % M));

//находится пвСвдослучайный индСкс ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π½Π° [0,MR]

row = Convert. ToInt32(Math.Ceiling ((double)MR * x / (M — 1)));

x = Math. Abs ((int)((x * x) % M));

//находится пвСвдослучайный индСкс ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π½Π° [0,MΠ‘]

col = Convert. ToInt32(Math.Ceiling ((double)MC * x / (M — 1)));

if (Pole[row, col] ≠ 9)

{

Pole[row, col] = 9;

n++;

}

}

while (n ≠ NM);

}

private void showPole (Graphics g, int status)//ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»Π΅

{

for (int row = 1; row <= MR; row++)

{

for (int col = 1; col <= MC; col++)

{

this.kletka (g, row, col, status);//Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° kletka (Graphics g, int row, int col, int status)

}

}

}

private void kletka (Graphics g, int row, int col, int status)//ΠΌΠ΅Ρ‚ΠΎΠ΄, выводящий содСрТимоС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

{

//ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ области Π²Ρ‹Π²ΠΎΠ΄Π°

int x = (col — 1) * W + 1, y = (row — 1) * H + 1 + 25;

//Π½Π΅ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ — сСрыС

if (Pole[row, col] < 100)

{

g.FillRectangle (SystemBrushes.ControlLight, x — 1, y — 1, x + W, y + H);

}

//ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

if (Pole[row, col] >= 100)

{

//ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅-Π±Π΅Π»Ρ‹Π΅

if (Pole[row, col] ≠ 109)

g.FillRectangle (Brushes.White, x — 1, y — 1, x + W, y + H);

//ΠΏΠΎΠ΄Ρ€Ρ‹Π² Π½Π° ΠΌΠΈΠ½Π΅, ΠΊΠ»Π΅Ρ‚ΠΊΠ° красная

else

g.FillRectangle (Brushes.Red, x — 1, y — 1, x + W, y + H);

//Ссли рядом с ΠΊΠ»Π΅Ρ‚ΠΊΠΎΠΉ Π΅ΡΡ‚ΡŒ ΠΌΠΈΠ½Ρ‹, подписываСм ΠΈΡ… ΠΊΠΎΠ»-Π²ΠΎ

if ((Pole[row, col] >= 101) && (Pole[row, col] <= 108))

g.DrawString ((Pole[row, col] - 100).ToString (), new Font («Tahoma», 20, FontStyle. Bold), Brushes. Blue, x + 3, y + 2);

}

// Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ΅ Ρ„Π»Π°Π³

if (Pole[row, col] >= 200)

this.flag (g, x, y);

//отрисовываСм Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

g.DrawRectangle (Pens.Black, x — 1, y — 1, x + W, y + H);

// Ссли ΠΈΠ³Ρ€Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π° (status=2), ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠΈΠ½Ρ‹

if ((status == 2) && ((Pole[row, col] % 10) == 9))

this.mina (g, x, y);

}

private void open (int row, int col)//ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΈ Π²ΡΠ΅ сосСдниС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ ΠΌΠΈΠ½

{

//ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ области Π²Ρ‹Π²ΠΎΠ΄Π°

int x = (col — 1) * W + 1, y = (row — 1) * H + 1 + 25;

if (Pole[row, col] == 0)

{

Pole[row, col] = 100;

//ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ содСрТимоС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

this.Invalidate (new Rectangle (x, y, W, H));

//ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΡ‹ΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ слСва, справа, свСрху, снизу

this.open (row, col — 1);

this.open (row — 1, col);

this.open (row, col + 1);

this.open (row + 1, col);

//ΠΏΡ€ΠΈΠΌΡ‹ΠΊΠ°ΡŽΡ‰ΠΈΠ΅ диагонально

this.open (row — 1, col — 1);

this.open (row — 1, col + 1);

this.open (row + 1, col — 1);

this.open (row + 1, col + 1);

}

else

if ((Pole[row, col] < 100) && (Pole[row, col] ≠ -3))

{

Pole[row, col] += 100;

//ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ содСрТимоС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ

this.Invalidate (new Rectangle (x, y, W, H));

}

}

private void mina (Graphics g, int x, int y)//ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ€ΠΈΡΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΈΠ½Ρƒ

{

//корпус

g.FillRectangle (Brushes.Green, x + 16, y + 26, 8, 4);

g.FillRectangle (Brushes.Green, x + 8, y + 30, 24, 4);

g.DrawPie (Pens.Black, x + 6, y + 28, 28, 16, 0, -180);

g.FillPie (Brushes.Green, x + 6, y + 28, 28, 16, 0, -180);

//полоса Π½Π° ΠΊΠΎΡ€ΠΏΡƒΡΠ΅

g.DrawLine (Pens.Black, x + 12, y + 32, x + 28, y + 32);

//Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ «ΡƒΡ»

g.DrawLine (Pens.Black, x + 20, y + 22, x + 20, y + 26);

//Π±ΠΎΠΊΠΎΠ²Ρ‹Π΅ «ΡƒΡΡ‹»

g.DrawLine (Pens.Black, x + 8, y + 30, x + 6, y + 28);

g.DrawLine (Pens.Black, x + 32, y + 30, x + 34, y + 28);

}

private void flag (Graphics g, int x, int y)//ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ€ΠΈΡΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π»Π°Π³

{

Point[] p = new Point[3];

Point[] m = new Point[5];

//Ρ„Π»Π°ΠΆΠΎΠΊ

p[0]. X = x + 4;

p[0]. Y = y + 4;

p[1]. X = x + 30;

p[1]. Y = y + 12;

p[2]. X = x + 4;

p[2]. Y = y + 20;

g.FillPolygon (Brushes.Red, p);

//Π΄Ρ€Π΅Π²ΠΊΠΎ

g.DrawLine (Pens.Black, x + 4, y + 4, x + 4, y + 35);

//Π±ΡƒΠΊΠ²Π° М Π½Π° Ρ„Π»Π°ΠΆΠΊΠ΅

m[0]. X = x + 8;

m[0]. Y = y + 14;

m[1]. X = x + 8;

m[1]. Y = y + 8;

m[2]. X = x + 10;

m[2]. Y = y + 10;

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