Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ КПК ΠΈ смартфонов Π½Π° .NET Compact FrameworkΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 41

Автор АлСксандр Климов

/// <summary>

/// ОбновляСм состояниС Π²Π΅Ρ‚Ρ‡ΠΈΠ½Ρ‹

/// </summary>

private void hamTick() {

 // Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ, Ссли Π²Π΅Ρ‚Ρ‡ΠΈΠ½Π° Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠ°

 if (!hamPresent) {

  return;

 }

 if (breadRectangle.IntersectsWith(bonusHamRectangle)) {

  // ΠΏΡ€ΠΈ касании ΠΈΠ³Ρ€ΠΎΠΊΠΎΠΌ куска Π²Π΅Ρ‚Ρ‡ΠΈΠ½Ρ‹

  // прибавляСм 100 ΠΎΡ‡ΠΊΠΎΠ²

  scoreValue = scoreValue + 100;

  messageString = "Π‘Ρ‡Π΅Ρ‚: " + scoreValue + " Π–ΠΈΠ·Π½ΡŒ: " + livesLeft;

  // Π·Π²ΡƒΠΊ касания Π²Π΅Ρ‚Ρ‡ΠΈΠ½Ρ‹

  bonusHamSound.Play();

  // прячСм Π²Π΅Ρ‚Ρ‡ΠΈΠ½Ρƒ с экрана

  hamPresent = false;

 } else {

  // ΠžΡ‚Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ врСмя Π½Π°Π·Π°Π΄

  hamTimerCount--;

  if (hamTimerCount == 0) {

   // врСмя Π²Ρ‹ΡˆΠ»ΠΎ - удаляСм Π²Π΅Ρ‚Ρ‡ΠΈΠ½Ρƒ

   hamPresent = false;

  }

 }

}

Π’Π°ΠΊΠΆΠ΅ Π½Π°Π΄ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Form1_Paint ΠΈ updatePosition. Если изобраТСния Π±Π°Ρ‚ΠΎΠ½Π° ΠΈ Π²Π΅Ρ‚Ρ‡ΠΈΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‚ΡΡ, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ счСт ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅Ρ‚Ρ‡ΠΈΠ½Ρ‹. Π’ ΠΈΠ½ΠΎΠΌ случаС Π½Π°Π΄ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ врСмя отобраТСния Π²Π΅Ρ‚Ρ‡ΠΈΠ½Ρ‹ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ это ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ссли ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΡƒΠΆΠ΅ закончился. Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 11.53.

Листинг 11.53

//(Form1_Paint)

// Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π° экран кусок Π²Π΅Ρ‚Ρ‡ΠΈΠ½Ρ‹

if (hamPresent) {

 g.DrawImage(bonusHamImage, bonusHamRectangle.X, bonusHamRectangle.Y);

}

//(updatePosition)

// АктивизируСм Π²Π΅Ρ‚Ρ‡ΠΈΠ½Ρƒ

startHam();

//(timerTick)

hamTick();

Но ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠ³Ρ€Ρ‹, добавляя Π² Π½Π΅Π΅ Π½ΠΎΠ²Ρ‹Π΅ возмоТности. ВсС измСнСния ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Bouncer. Π’Π΅ΠΏΠ΅Ρ€ΡŒ прСдстоит ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π»ΡƒΡ‡ΡˆΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ спрайтов.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²

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

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ понадобится Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° Ρ„ΠΎΡ€ΠΌΠ° для отобраТСния ΠΈΠΌΠ΅Π½ ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ². ΠŸΡ€ΠΈ достиТСнии Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° эта Ρ„ΠΎΡ€ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° экранС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ ввСсти своС имя.

ΠΠΎΠ²ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π·Π°Π΄Π°Ρ‚ΡŒ для Π½Π΅Π΅ имя HighScore.cs. На созданной Ρ„ΠΎΡ€ΠΌΠ΅ слСдуСт Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ тСкстовоС ΠΏΠΎΠ»Π΅ для Π²Π²ΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΠΈ ΠΈ мСню, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сигнализируСт ΠΎΠ± ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ Π²Π²ΠΎΠ΄Π°. Бозданная Ρ„ΠΎΡ€ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ достиТСнии высокого Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Π’ этом случаС ΠΈΠ³Ρ€ΠΎΠΊ-рСкордсмСн Π²Π²ΠΎΠ΄ΠΈΡ‚ своС имя ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ Π½Π° ΠΏΡƒΠ½ΠΊΡ‚ мСню OK для закрытия Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ сохранСния ΠΈΠΌΠ΅Π½ΠΈ.

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ… основной Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ³Ρ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠΊΡƒ ввСсти имя, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΈΠ³Ρ€Π΅. Когда Ρ„ΠΎΡ€ΠΌΠ° с Π»ΡƒΡ‡ΡˆΠΈΠΌΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ появляСтся Π½Π° экранС, основная Ρ„ΠΎΡ€ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ скрыта. И Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΠΊΠ½Π° с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ основная Ρ„ΠΎΡ€ΠΌΠ° восстанавливаСтся.

ΠŸΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹ гСнСрируСтся событиС Load. ΠŸΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ гСнСрируСтся событиС Closing. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти события для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠŸΡ€ΠΈ стартС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ создаСтся экзСмпляр Ρ„ΠΎΡ€ΠΌΡ‹ HighScore. Π”Π°Π½Π½Ρ‹ΠΉ экзСмпляр ΠΈΠΌΠ΅Π΅Ρ‚ ссылку Π½Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ. ΠŸΡ€ΠΈ достиТСнии высокого Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ„ΠΎΡ€ΠΌΠ° HighScore выводится Π½Π° экран. ΠŸΡ€ΠΈ этом выполняСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ HighScore_Load, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ скрываСт Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ. На экранС появляСтся Ρ„ΠΎΡ€ΠΌΠ°, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰Π°Ρ Π»ΡƒΡ‡ΡˆΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, ΠΈΠ³Ρ€ΠΎΠΊ Π²Π²ΠΎΠ΄ΠΈΡ‚ своС имя ΠΈ выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ мСню OK. ΠŸΡ€ΠΈ этом срабатываСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события для мСню OK, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΡƒ HighScore. ΠŸΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ выполняСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ HighScore_Closing. ОсновноС ΠΎΠΊΠ½ΠΎ Ρ„ΠΎΡ€ΠΌΡ‹ снова появляСтся Π½Π° экранС. Код Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ имя ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΈΠ· Ρ„ΠΎΡ€ΠΌΡ‹ HighScore.

Π˜Ρ‚Π°ΠΊ, ΠΌΠ΅Ρ‚ΠΎΠ΄ HighScore_Load Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ. Для этого ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ссылку Π½Π° Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. Бсылка Π½Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ пСрСдаСтся Π² Ρ„ΠΎΡ€ΠΌΡƒ HighScore ΠΏΡ€ΠΈ Π΅Π΅ создании, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² листингС 11.54.

Листинг 11.54

/// <summary>

/// Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ вызываСтся Π΄Π°Π½Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ.

/// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.

/// </summary>

private Form parentForm;


public HighScore(Form inParentForm) {

 // БохраняСм Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΠΊΠ½Π° Π»ΡƒΡ‡ΡˆΠΈΡ…

 // Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

 parentForm = inParentForm;

 InitializeComponent();

}

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ являСтся конструктором Ρ„ΠΎΡ€ΠΌΡ‹ HighScore. Когда ΠΈΠ΄Π΅Ρ‚ созданиС Ρ„ΠΎΡ€ΠΌΡ‹, Ρ‚ΠΎ пСрСдаСтся ссылка Π½Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ.

Код ΠΌΠ΅Ρ‚ΠΎΠ΄Π° HighScore_Load ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 11.55.

Листинг 11.55

private void HighScore_Load(object sender, System.EventArgs e) {

 parentForm.Hide();

}

ΠŸΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ автоматичСски прячСтся. ΠŸΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π°Π΄ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Π½Π° экран. Для этого примСняСтся ΠΊΠΎΠ΄, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² листингС 11.56.

Листинг 11.56

private void HighScore_Closing(object sender,

 System.ComponentModel.CancelEventArgs e) {

 parentForm.Show();

}

ПослС Π²Π²ΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ³Ρ€ΠΎΠΊ выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ мСню OK для закрытия Ρ„ΠΎΡ€ΠΌΡ‹. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ этого события ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 11.57.

Листинг 11.57

private void doneMenuItem_Click(object sender, System.EventArgs e) {

 Close();

}

ПослС закрытия ΠΎΠΊΠ½Π° вызываСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π½Π° экран.

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ ΠΎΠΊΠ½Π°

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ имя ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΏΡ€ΠΈ достиТСнии ΠΈΠΌ высокого Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Для этого создаСтся копия Ρ„ΠΎΡ€ΠΌΡ‹ HighScore. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ ΠΏΡ€ΠΈ стартС ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ссылку Π½Π° Π½Π΅Π΅. ЭкзСмпляр Ρ„ΠΎΡ€ΠΌΡ‹ HighScore создаСтся ΠΏΡ€ΠΈ стартС основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, вызывая конструктор ΠΈ пСрСдавая ссылку Π½Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, Π² нашСм случаС Π½Π° саму сСбя, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² листингС 11.58.

Листинг 11.58

/// <summary>

/// Π€ΠΎΡ€ΠΌΠ° для Π²Π²ΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ³Ρ€ΠΎΠΊΠ° с Π»ΡƒΡ‡ΡˆΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ.

/// </summary>

private HighScore highScore;

// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΡƒ для Π»ΡƒΡ‡ΡˆΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²

highScore = new HighScore(this);

Π’ этом ΠΊΠΎΠ΄Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово this являСтся ссылкой Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ экзСмпляр основной Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ highScore ΠΈ восстановлСн ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ highScore. Код для отобраТСния Ρ„ΠΎΡ€ΠΌΡ‹ highScore ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 11.59.

Листинг 11.59

if (scoreValue > highScoreValue) {

 timer1.Enabled=false;

 // ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΡƒ для Π»ΡƒΡ‡ΡˆΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²

 highScore.ShowDialog();

 timer1.Enabled=true;

}

Если ΠΈΠ³Ρ€ΠΎΠΊ ΠΏΠΎΠ±ΠΈΠ» Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π»ΡƒΡ‡ΡˆΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° останавливаСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°. Для отобраТСния Ρ„ΠΎΡ€ΠΌΡ‹ highScore вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ ShowDialog. Π˜Π³Ρ€Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ°ΡƒΠ·Ρƒ, ΠΏΠΎΠΊΠ° ΠΈΠ³Ρ€ΠΎΠΊ Π²Π²ΠΎΠ΄ΠΈΡ‚ своС имя. ПослС этого ΠΈΠ³Ρ€Π° продолТаСтся.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ³Ρ€ΠΎΠΊΠ°

Π˜Π³Ρ€ΠΎΠΊ Π²Π²ΠΎΠ΄ΠΈΡ‚ своС имя Π² тСкстовоС ΠΏΠΎΠ»Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ highScore. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π²ΠΎ врСмя ΠΈΠ³Ρ€Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ экзСмпляру Ρ„ΠΎΡ€ΠΌΡ‹ HighScore. Π’ классС HighScore Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свойство, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ имя. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 11.60.

Листинг 11.60

/// <summary>

/// Имя ΠΈΠ³Ρ€ΠΎΠΊΠ°, Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π² тСкстовом ΠΏΠΎΠ»Π΅.

/// </summary>

public string PlayerName {

 get {

  return nameTextBox.Text;

 }

}

Бвойство Name ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ имя ΠΈΠ· тСкстового поля nameTextBox ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΡ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π» Π΄Π°Π½Π½ΠΎΠ΅ свойство. Π­Ρ‚ΠΎ свойство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² листингС 11.61.

Листинг 11.61

/// <summary>

/// Имя ΠΈΠ³Ρ€ΠΎΠΊΠ°, Π΄ΠΎΡΡ‚ΠΈΠ³ΡˆΠ΅Π³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

/// </summary>

private string highScorePlayer = "Rob";


if (scoreValue > highScoreValue) {

 highScoreValue = scoreValue;

 timer1.Enabled = false;

 highScore.ShowDialog();

 timer1.Enabled = true;

 highScorePlayer = highScore.PlayerName;

}

Π’Π΅ΠΏΠ΅Ρ€ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ highScorePlayer ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ имя Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ ΠΈΠ³Ρ€ΠΎΠΊΠ° Π²ΠΎ врСмя ΠΈΠ³Ρ€Ρ‹.

Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π»ΡƒΡ‡ΡˆΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ³Ρ€ΠΎΠΊΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ своС имя ΠΏΡ€ΠΈ достиТСнии Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Но Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ это имя ΠΈ достигнутый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π­Ρ‚Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π±ΡƒΠ΄Π΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΠ΅, Π³Π΄Π΅ ΠΈ саму ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π—Π½Π°Ρ‡ΠΈΡ‚, наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° автоматичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ своС мСстонахоТдСниС Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Ρ‚ΡŒ, Π³Π΄Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Π—Π° это ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠ΄, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² листингС 11.62.