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

Π˜Π³Ρ€Π° Β«Π›ΠΈΠ½ΠΈΠΈΒ»

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

ЦСлью курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ являСтся созданиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ «Π›ΠΈΠ½ΠΈΠΈ». На ΠΏΠΎΠ»Π΅ 10×10 ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ строятся Π»ΠΈΠ½ΠΈΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΡ†Π²Π΅Ρ‚Π½Ρ‹Ρ… ΡˆΠ°Ρ€ΠΎΠ². ΠŸΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ³Ρ€ΠΎΠΊΠ° Π½Π° ΠΏΠΎΠ»Π΅ случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π½ΠΎΡ†Π²Π΅Ρ‚Π½Ρ‹Ρ… ΡˆΠ°Ρ€Π°. Π˜Π³Ρ€ΠΎΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΡˆΠ°Ρ€ ΠΏΠΎ ΠΏΠΎΠ»ΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ. Если ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ линию ΠΈΠ· ΠΏΡΡ‚ΠΈ ΡˆΠ°Ρ€ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°, ΠΎΠ½ΠΈ ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚. Π˜Π³Ρ€Π° заканчиваСтся, Ссли Π½Π° ΠΏΠΎΠ»Π΅ Π½Π΅ ΠΎΡΡ‚аСтся свободных… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π˜Π³Ρ€Π° Β«Π›ΠΈΠ½ΠΈΠΈΒ» (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠšΠ£Π Π‘ΠžΠ’ΠΠ― Π ΠΠ‘ΠžΠ’Π По Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π½Π° Π­Π’Πœ»

Π’Π΅ΠΌΠ° Π˜Π³Ρ€Π° «Π›ΠΈΠ½ΠΈΠΈ»

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

2. ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

2.1 Π‘Ρ€Π΅Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

2.2 ОписаниС ΠΎΠ±Ρ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

3. ОписаниС основных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

ЦСлью курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ являСтся созданиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ «Π›ΠΈΠ½ΠΈΠΈ». На ΠΏΠΎΠ»Π΅ 10×10 ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ строятся Π»ΠΈΠ½ΠΈΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΡ†Π²Π΅Ρ‚Π½Ρ‹Ρ… ΡˆΠ°Ρ€ΠΎΠ². ΠŸΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ³Ρ€ΠΎΠΊΠ° Π½Π° ΠΏΠΎΠ»Π΅ случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π½ΠΎΡ†Π²Π΅Ρ‚Π½Ρ‹Ρ… ΡˆΠ°Ρ€Π°. Π˜Π³Ρ€ΠΎΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΡˆΠ°Ρ€ ΠΏΠΎ ΠΏΠΎΠ»ΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ. Если ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ линию ΠΈΠ· ΠΏΡΡ‚ΠΈ ΡˆΠ°Ρ€ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°, ΠΎΠ½ΠΈ ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚. Π˜Π³Ρ€Π° заканчиваСтся, Ссли Π½Π° ΠΏΠΎΠ»Π΅ Π½Π΅ ΠΎΡΡ‚аСтся свободных ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ для Π²Ρ‹Π²ΠΎΠ΄Π° ΡˆΠ°Ρ€ΠΎΠ². Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ статистику ΠΈΠ³Ρ€Ρ‹.

2. ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

2.1 Π‘Ρ€Π΅Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΡΡ€Π΅Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Microsoft Visual Studio 2008 Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Π‘++ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ классов MFC (Microsoft Foundations Classes). ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° создана Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ MFC-прилоТСния с ΠΎΠ΄Π½ΠΎΠ΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π½Ρ‹ΠΌ интСрфСйсом. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°ΠΌΠΈ использования MFC ΠΈ ΠΎΠ΄Π½ΠΎΠ΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ прилоТСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° содСрТит ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΡƒΡŽ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ классов, Π½Π°ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ ΠΎΠΊΠΎΠ»ΠΎ 200 Ρ‡Π»Π΅Π½ΠΎΠ². Они Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Windows-прилоТСния Π½Π° Π±Π°Π·Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°;

Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠΎΠ΄Π°;

ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ взаимодСйствия с ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ интСрфСйсом (API) Windows.

2.2 ОписаниС ΠΎΠ±Ρ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° содСрТит ΠΎΠ΄Π½ΠΎ основноС ΠΎΠΊΠ½ΠΎ: «Untitled-lines». ΠŸΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ появляСтся ΠΎΠΊΠ½ΠΎ «Untitled-lines», ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π½Π° Ρ€ΠΈΡ. 1.

Рис. 1. Π’ΠΈΠ΄ ΠΎΠΊΠ½Π° «Untitled-lines»

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ описаниС элСмСнтов, располоТСнных Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅.

ОписаниС ΠΎΠΊΠ½Π° «Untitled-lines»

Окно «Untitled-lines» прСдставляСт собой основноС ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ отобраТаСтся ΠΈΠ³Ρ€Π° Π›ΠΈΠ½ΠΈΠΈ.

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌ основныС элСмСнты Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°:

1. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ «ΠŸΠΎΠ»Π΅» прСдставляСт собой графичСский элСмСнт, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ производится ΠΈΠ³Ρ€Π° Π›ΠΈΠ½ΠΈΠΈ.

2. Окно содСрТит Π΄Π²Π° мСню «Π˜Π³Ρ€Π°», «Π‘ΠΏΡ€Π°Π²ΠΊΠ°».

МСню «Π˜Π³Ρ€Π°» содСрТит Π½Π°Π±ΠΎΡ€ инструмСнтов для управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ (см. Ρ€ΠΈΡ. 2). Оно ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹:

2.1. ΠŸΡƒΠ½ΠΊΡ‚ «ΠΠΎΠ²Π°Ρ ΠΈΠ³Ρ€Π°» — позволяСт Π½Π°Ρ‡Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ.

2.2 ΠŸΡƒΠ½ΠΊΡ‚ «ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ» — позволяСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ».

2.3 ΠŸΡƒΠ½ΠΊΡ‚ «Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ» — позволяСт ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ³Ρ€Ρƒ.

2.4 ΠŸΡƒΠ½ΠΊΡ‚ «Π‘татистика» — позволяСт вывСсти статистику ΠΈΠ³Ρ€Ρ‹ (см. Ρ€ΠΈΡ 3).

2.5 ΠŸΡƒΠ½ΠΊΡ‚ «Π’Ρ‹Ρ…ΠΎΠ΄» — позволяСт Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΈΠ³Ρ€Ρ‹.

Рис. 2 Π’ΠΈΠ΄ ΠΎΠΊΠ½Π° «Π˜Π³Ρ€Π°»

Рис. 3. Π’ΠΈΠ΄ ΠΎΠΊΠ½Π° «Π‘татистика»

3. МСню «Π‘ΠΏΡ€Π°Π²ΠΊΠ°» содСрТит Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ lines (см. Ρ€ΠΈΡ. 4). Оно ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΏΡƒΠ½ΠΊΡ‚:

3.1 «Πž ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅»: ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ с Ρ‚СхничСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ (см. Ρ€ΠΈΡ.5).

Рис. 4. МСню «Π‘ΠΏΡ€Π°Π²ΠΊΠ°»

Рис. 5. Π’ΠΈΠ΄ ΠΎΠΊΠ½Π° «Πž ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅»

3. ОписаниС основных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠŸΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ появляСтся Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ «Untitled-lines». Π’ ΠΎΠΊΠ½Π΅ ΠΈΠ΄Π΅Ρ‚ рСализация ΠΈΠ³Ρ€Ρ‹.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Алгоритм сначала Π² ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΠΎΠΌ порядкС ΠΊΠΈΠ΄Π°Π΅Ρ‚ 5 ΡˆΠ°Ρ€ΠΈΠΊΠΎΠ².

{

m_iNumOfBalls=0; //Π¨Π°Ρ€ΠΈΠΊΠΎΠ² Π½Π° ΠΏΠΎΠ»Π΅ ΠΏΠΎΠΊΠ° Π½Π΅Ρ‚

m_iNumOfPoints=0;//ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΎΡ‡ΠΊΠΎΠ² (ΠΏΠΎΠΊΠ° ноль)

srand (GetTickCount ()%32 000); //Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ случайных чисСл

for (int j=0;j

for (int i=0;i

m_field[i][j]=0; //заполняСм ΠΏΠΎΠ»Π΅ нулями

}

}

Throw3Balls (5);//ΠΊΠΈΠ΄Π°Π΅ΠΌ ΠΏΡΡ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… ΡˆΠ°Ρ€ΠΈΠΊΠΎΠ².

CString s1;

s1.Format (L" 5 balls, 0 points");

return TRUE;

}

2.Алгоритм дСйствий ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… с ΡˆΠ°Ρ€ΠΈΠΊΠΎΠΌ.

{

int x, y;//мСсто, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΊΠΈΠ΄Π°Π΅ΠΌ ΡˆΠ°Ρ€ΠΈΠΊ

int iColor; //Ρ†Π²Π΅Ρ‚ ΡˆΠ°Ρ€ΠΈΠΊΠ°

if (iNum≠0){

for (int i=0;i

//Π²Ρ‹Π±ΠΎΡ€ свободного мСста

do{

x=rand ()%m_iNumOfRows;

y=rand ()%m_iNumOfRows;

}while (m_field[x][y]≠0);

//Π²Ρ‹Π±ΠΎΡ€ Ρ†Π²Π΅Ρ‚Π°

iColor=rand ()%m_iNumOfColors+1;

SetField (x, y, iColor); //ставим ΡˆΠ°Ρ€ΠΈΠΊ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°

Is5InLine (x, y, false);

}

return true;

{

//ΠΎΠ±ΠΌΠ΅Π½ ΡˆΠ°Ρ€ΠΈΠΊΠ° ΠΈ ΠΏΡƒΡΡ‚ΠΎΠ³ΠΎ мСста

int iTmp;

iTmp = m_field[xTo][yTo];

SetField (xTo, yTo, m_field[xFrom][yFrom]);

SetField (xFrom, yFrom, iTmp);

}

3. Алгоритм провСряСт совпала Π»ΠΈ линия.

{

//провСряСт, Π΅ΡΡ‚ΡŒ Π»ΠΈ 5 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡˆΠ°Ρ€ΠΈΠΊΠΎΠ² подряд

//int x1=x, y1=y;//ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ поля справа, слСва ΠΈ Ρ‚. ΠΏ.

int i;//смСщСниС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ (x, y)

bool bSeeFuther;//смотрим Π»ΠΈ Π΄Π°Π»Π΅Π΅

//число совпадСний Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π»Π΅Π²ΠΎ, Π²Π²Π΅Ρ€Ρ… ΠΈ Π²Π½ΠΈΠ·

int iO=0, iW=0, iN=0, iS=0;

//число совпадСний Π²ΠΏΡ€Π°Π²ΠΎ-Π²Π²Π΅Ρ€Ρ…, Π²Π»Π΅Π²ΠΎ-Π²Π²Π΅Ρ€Ρ…, Π²ΠΏΡ€Π°Π²ΠΎ-Π²Π½ΠΈΠ· ΠΈ Π²Π»Π΅Π²ΠΎ-Π²Π½ΠΈΠ·

int iNO=0, iNW=0, iSO=0, iSW=0;

bool bRes =false;//Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

//смотрим Π²ΠΏΡ€Π°Π²ΠΎ

bSeeFuther=true;

i=1;

while (x+i

{//Ссли ΠΏΠΎΠ»Π΅ справа сущСствуСт

bSeeFuther=false;

if (m_field[x+i][y]==m_field[x][y]){//ΠΈ Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚ совпадаСт с Ρ†Π²Π΅Ρ‚ΠΎΠΌ (x, y)

iO++;//ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ счётчик совпадСний Π²ΠΏΡ€Π°Π²ΠΎ

bSeeFuther=true;

}

i++;

};

//смотрим Π²Π»Π΅Π²ΠΎ

bSeeFuther=true;

i=1;

while (x-i>=0 && bSeeFuther){//Ссли ΠΏΠΎΠ»Π΅ справа сущСствуСт

bSeeFuther=false;

if (m_field[x-i][y]==m_field[x][y]){//ΠΈ Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚ совпадаСт с Ρ†Π²Π΅Ρ‚ΠΎΠΌ (x, y)

iW++;//ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ счётчик совпадСний Π²ΠΏΡ€Π°Π²ΠΎ

bSeeFuther=true;

}

i++;

};

//смотрим Π²Π½ΠΈΠ·

bSeeFuther=true;

i=1;

while (y+i

bSeeFuther=false;

if (m_field[x][y+i]==m_field[x][y]){//ΠΈ Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚ совпадаСт с Ρ†Π²Π΅Ρ‚ΠΎΠΌ (x, y)

iS++;//ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ счётчик совпадСний Π²ΠΏΡ€Π°Π²ΠΎ

bSeeFuther=true;

}

i++;

};

//смотри Π²Π²Π΅Ρ€Ρ…

bSeeFuther=true;

i=1;

while (y-i>=0 && bSeeFuther){//Ссли ΠΏΠΎΠ»Π΅ справа сущСствуСт

bSeeFuther=false;

if (m_field[x][y-i]==m_field[x][y]){//ΠΈ Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚ совпадаСт с Ρ†Π²Π΅Ρ‚ΠΎΠΌ (x, y)

iN++;//ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ счётчик совпадСний Π²ΠΏΡ€Π°Π²ΠΎ

bSeeFuther=true;

}

i++;

};

/////////////ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»Π΅ΠΉ/////////////

//смотрим Π²ΠΏΡ€Π°Π²ΠΎ-Π²Π½ΠΈΠ·

bSeeFuther=true;

i=1;

//Ссли ΠΏΠΎΠ»Π΅ справа Π²Π½ΠΈΠ·Ρƒ сущСствуСт

while (x+i

bSeeFuther=false;

if (m_field[x+i][y+i]==m_field[x][y]){//ΠΈ Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚ совпадаСт с Ρ†Π²Π΅Ρ‚ΠΎΠΌ (x, y)

iSO++;//ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ счётчик совпадСний Π²ΠΏΡ€Π°Π²ΠΎ

bSeeFuther=true;

}

i++;

};

//смотрим Π²Π²Π΅Ρ€Ρ…-Π²Π»Π΅Π²ΠΎ

bSeeFuther=true;

i=1;

while (x-i>=0 && y-i>=0 && bSeeFuther){//Ссли ΠΏΠΎΠ»Π΅ слСва Π²Π²Π΅Ρ€Ρ…Ρƒ сущСствуСт

bSeeFuther=false;

if (m_field[x-i][y-i]==m_field[x][y]){//ΠΈ Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚ совпадаСт с Ρ†Π²Π΅Ρ‚ΠΎΠΌ (x, y)

iNW++;//ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ счётчик совпадСний Π²ΠΏΡ€Π°Π²ΠΎ

bSeeFuther=true;

}

i++;

};

//смотрим Π²ΠΏΡ€Π°Π²ΠΎ-Π²Π²Π΅Ρ€Ρ…

bSeeFuther=true;

i=1;

while (x+i=0 && bSeeFuther){//Ссли ΠΏΠΎΠ»Π΅ справа Π²Π²Π΅Ρ€Ρ…Ρƒ сущСствуСт

bSeeFuther=false;

if (m_field[x+i][y-i]==m_field[x][y]){//ΠΈ Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚ совпадаСт с Ρ†Π²Π΅Ρ‚ΠΎΠΌ (x, y)

iNO++;//ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ счётчик совпадСний Π²ΠΏΡ€Π°Π²ΠΎ

bSeeFuther=true;

}

i++;

};

//смотрим Π²Π½ΠΈΠ·-Π²Π»Π΅Π²ΠΎ

bSeeFuther=true;

i=1;

while (x-i>=0 && y+i

bSeeFuther=false;

if (m_field[x-i][y+i]==m_field[x][y]){//ΠΈ Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚ совпадаСт с Ρ†Π²Π΅Ρ‚ΠΎΠΌ (x, y)

iSW++;//ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ счётчик совпадСний Π²ΠΏΡ€Π°Π²ΠΎ

bSeeFuther=true;

}

i++;

};

//Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ, сколько ΡˆΠ°Ρ€ΠΈΠΊΠΎΠ² Π±Ρ‹Π»ΠΎ Π΄ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ

int iWasNumOfBalls = m_iNumOfBalls;

if (iS+iN+1>=5){//Π΅ΡΡ‚ΡŒ 5 Π² Ρ€ΡΠ΄

Delete5InLine (x, y-iN, x, y+iS);

bRes=true;

//return true;

}

if (iO+iW+1>=5){//Π΅ΡΡ‚ΡŒ 5 Π² Ρ€ΡΠ΄

Delete5InLine (x-iW, y, x+iO, y);

bRes=true;

//return true;

}

//Π΅ΡΡ‚ΡŒ 5 Π² Ρ€ΡΠ΄ ΠΏΠΎ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ слСва-свСрху справа-снизу

if (iNW+iSO+1>=5){

Delete5InLine (x-iNW, y-iNW, x+iSO, y+iSO);

bRes=true;

//return true;

}

//Π΅ΡΡ‚ΡŒ 5 Π² Ρ€ΡΠ΄ ΠΏΠΎ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ справа-свСрху слСва-снизу

if (iSW+iNO+1>=5){

Delete5InLine (x+iNO, y-iNO, x-iSW, y+iSW);

bRes=true;

//return true;

}

if (bAddPoints){

m_iNumOfPoints+=CalcPoints (iWasNumOfBalls-m_iNumOfBalls);

}

return bRes;//Π½Π΅Ρ‚ 5 Π² Ρ€ΡΠ΄

}

int ClinesDoc: CalcPoints (int iNumDeletedBalls)

{

int iRes;

if (iNumDeletedBalls<5){

return 0;

}

else{

iRes = 2* iNumDeletedBalls*iNumDeletedBalls

— 20*iNumDeletedBalls+60;

}

return iRes;

}

void ClinesDoc: Delete5InLine (int x1, int y1, int x2, int y2)

{

//удаляСт 5 ΡˆΠ°Ρ€ΠΈΠΊΠΎΠ², располоТСнных Π² Ρ€ΡΠ΄

//ΠΎΡ‚ поля (x1, y1) Π΄ΠΎ ΠΏΠΎΠ»Ρ (x2, y2).

int i;

//ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ

if (y1==y2){

for (i=x1;i<=x2;i++){

if (m_field[i][y1]≠0){

SetField (i, y1,0);

}

}

}

//ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ

if (x1==x2){

for (i=y1;i<=y2;i++){

if (m_field[x1][i]≠0){

SetField (x1,i, 0);

}

}

}

//ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ свСрху-слСва — снизу-справа

if ((x1

for (i=x1;i<=x2;i++){

if (m_field[i][y1-x1+i]≠0){

SetField (i, y1-x1+i, 0);

}

}

}

//ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ снизу-слСва — свСрху-справа

if ((x1>x2) && (y1

for (i=y1;i<=y2;i++){

if (m_field[x1+y1-i][i]≠0){

SetField (x1+y1-i, i,0);

}

}

}

}

4. Алгоритм окончания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

void ClinesDoc: StopGame (void)

{

AfxMessageBox (L" Π˜Π³Ρ€Π° Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°!");

//MessageBox (L" Π˜Π³Ρ€Π° Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°!+nΠ˜Π³Ρ€Π° Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°!+nΠ˜Π³Ρ€Π° Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°!+nΠ˜Π³Ρ€Π° Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°!+nΠ˜Π³Ρ€Π° Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°!");

/*Form *f = new Form ();

f->*/

}

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΠΌΡ‹ ΡΠ½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΈ запускС ΠΊΠΈΠ΄Π°Π΅ΠΌ 5 ΡˆΠ°Ρ€ΠΈΠΊΠΎΠ² Π² ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΠΎΠΌ порядкС. ΠŸΠΎΡ‚ΠΎΠΌ пСрСтаскиваСм ΡˆΠ°Ρ€ΠΈΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ линию ΠΈΠ· 5 ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΡˆΠ°Ρ€ΠΈΠΊΠΎΠ². Π˜Π³Ρ€Π° заканчиваСтся, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ.

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΠ³Ρ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ

4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

На Ρ€ΠΈΡ. 6 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π²ΠΈΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ ΠΈΠ³Ρ€Ρ‹.

Рис. 6

На Ρ€ΠΈΡ. 7 дСмонстрируСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠΎΠ³Π΄Π° ΠΈΠ³Ρ€Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°.

Рис. 7

Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

Павловская, Π’. А. C/C++. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ высокого уровня / Π’. А. Павловская. — Π‘Пб.: ΠŸΠΈΡ‚Π΅Ρ€, 2010. — 461 с.

ΠŸΡ€Π°Ρ‚Π°, Π‘. Π―Π·Ρ‹ΠΊ программирования Π‘++. Π›Π΅ΠΊΡ†ΠΈΠΈ ΠΈ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΡ / Π‘. ΠŸΡ€Π°Ρ‚Π°. М.: Π’ΠΈΠ»ΡŒΡΠΌΡ, 2006. — 1184 с.

3. Богуславский, А. А. ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ++. Π§Π°ΡΡ‚ΡŒ 4: ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для Microsoft Windows с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Visual C++ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ классов MFC / А. А. Богуславский, Π‘. М. Π‘ΠΎΠΊΠΎΠ»ΠΎΠ². — ΠšΠΎΠ»ΠΎΠΌΠ½Π°: ΠšΠ“ΠŸΠ˜, 2002. — 490 с.

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