ΠΠ³ΡΠ° Β«LinesΒ»
SetTimer — ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Windows. ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, hWnd, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΎΠΊΠ½Π°, Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ Π΄Π°Π½Π½ΡΠΌ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠΌ. ΠΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, nIDEvent, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ (Π½ΠΎ Π½Π΅ Π½ΡΠ»Ρ). Π’ΡΠ΅ΡΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, uElapse, Π·Π°Π΄Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π», ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ (ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ) ΠΎΡ 1 Π΄ΠΎ 4 294 967 295 ΠΌΡ, ΡΡΠΎ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠ³ΡΠ° Β«LinesΒ» (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
1. ΠΠ½Π°Π»ΠΈΠ· Π·Π°Π΄Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΈΠ½ΠΈ-ΠΈΠ³ΡΠ° «LINES». ΠΠ³ΡΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ°ΡΡ Π½Π°ΠΌ Π½Π΅ ΠΏΡΠΈΠ΄ΡΡΡΡ, Π½ΡΠΆΠ½ΠΎ Π»ΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΡΠ°Π²ΠΈΠ»Π° ΠΈΠ³ΡΡ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡ. ΠΠΌΠ΅Π΅ΡΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ — 9×9 ΡΡΠ΅Π΅ΠΊ Π² ΠΊΠΎΡΠΎΡΡΡ Π»Π΅ΠΆΠ°Ρ ΡΠ°ΡΠΈΠΊΠΈ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π²Π»ΡΡΡ ΡΠ°ΡΠΈΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ° Π² Π»ΠΈΠ½ΠΈΠΈ ΠΈΠ· 5 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ ΠΈΠ»ΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ. Π Π½Π°ΡΠ°Π»Π΅ ΡΠ°ΡΠΈΠΊΠΎΠ² ΠΌΠ°Π»ΠΎ, Π½ΠΎ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ³ΡΡ ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ.
Π‘ΠΌΡΡΠ» ΠΈΠ³ΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Π±ΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΡΠΊΠΎΠ², ΠΈΠ· ΠΎΠ΄Π½ΠΎΡΠ²Π΅ΡΠ½ΡΡ ΡΠ°ΡΠΎΠ² ΡΠΈΠ³ΡΡΡ.
Π¨Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ ΠΏΠΎ ΠΏΠΎΠ»Ρ ΠΌΡΡΡΡ: cΠ½Π°ΡΠ°Π»Π° Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π΄ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ, Π·Π°ΡΠ΅ΠΌ — ΠΏΡΡΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Π±Ρ Ρ ΠΎΡΠ΅Π»ΠΈ Π΅Π³ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ. ΠΡΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΡΡΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π²Ρ Π²ΡΠ±Π΅ΡΠ΅ΡΠ΅ Π·Π°Π½ΡΡΡΡ, ΡΠΎ ΡΠ°Ρ ΡΡΠΎΡΡΠΈΠΉ Π½Π° Π½Π΅ΠΉ ΡΡΠ°Π½Π΅Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ.
Π¨Π°Ρ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΏΠ°ΡΡΡ ΡΡΠ΄Π° ΠΊΡΠ΄Π° Π²Ρ Π±Ρ Π΅Π³ΠΎ Ρ ΠΎΡΠ΅Π»ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ. ΠΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π΅ΡΡ ΡΡΠΈ ΡΠ°ΡΠ°.
ΠΠ³ΡΠ° Π½Π΅ Π±ΡΠ»Π° Π±Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠΉ, Π½Π΅ Π±ΡΠ΄Ρ Π² Π½Π΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ΡΡΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ ΠΈ Π·Π²ΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ.
Π§ΡΠΎΠ±Ρ Π½Π΅ Π·Π°Π³ΡΠΎΠΌΠΎΠΆΠ΄Π°ΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅, ΠΎΡΠΊΠΎΠ² ΠΈ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠ½Π΅ΡΠ΅Π½ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ, Π²Π²Π΅ΡΡ Ρ ΠΎΠΊΠ½Π°.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄, ΡΡΠΎ Π² Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ:
1. ΠΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ 9*9 ΡΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠ΅ΠΉ ΡΠΈΡΠ΅Π».
2. ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΠΎΠ² ΠΏΠΎ ΠΏΠΎΠ»Ρ.
3. Π£Π½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΠΎΠ².
4. ΠΠ½ΠΈΠΌΠ°ΡΠΈΡ.
5. ΠΠ²ΡΠΊΠΎΠ²ΠΎΠ΅ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅.
6. ΠΠΎΠ΄ΡΡΠ΅Ρ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
7. ΠΠ°ΠΏΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² ΡΠ°ΠΉΠ».
8. ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠΉ ΠΈΠ³ΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π°.
2. Π’Π΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ°ΡΡΡ
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΏΠΎΡΡΠ½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΊΠΈ Ρ ΠΎΡΠ΅ΡΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°Ρ ΠΈ ΡΡΠ½ΠΊΡΠΈΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ Π² ΠΌΠΎΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
1) MyRegisterClass — ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΎΠΊΠ½Π°. Π―Π²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. Π Π½Π΅ΠΉ ΠΌΡ Π·Π°Π΄Π°ΡΠΌ ΡΡΠΈΠ»ΠΈ, ΠΈΠΊΠΎΠ½ΠΊΠΈ, ΡΡΠΈΠ»Ρ ΠΊΡΡΡΠΎΡΠ°, ΡΠ²Π΅Ρ ΡΠΎΠ½Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅… Π Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π½Π°Ρ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
ATOM MyRegisterClass (HINSTANCE hInstance)
WNDCLASSEX wcex;
wcex.cbSize = sizeof (WNDCLASSEX);
wcex.style = CS_HREDRAW
2) CreateWindow — ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠΊΠ½Π°. Π Π½Π΅ΠΉ ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°, Π΅Π³ΠΎ ΡΡΠΈΠ»ΠΈ, ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΈ Π΄Ρ. ΠΠ΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
hWnd = CreateWindow (szWindowClass, szTitle, WS_CAPTION | WS_POPUPWINDOW | WS_OVERLAPPED, 512, 240, 305, 368, NULL, NULL, hInstance, NULL);
Π³Π΄Π΅ hWnd — ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π½Π°ΠΌΠΈ ΠΎΠΊΠ½Π°.
ΠΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΊΠ½Π°:
ShowWindow — ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΡΡ Π΅ΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Π»ΠΈΠ±ΠΎ ΡΠΊΡΡΠ²Π°Π΅Ρ ΠΎΠΊΠ½ΠΎ.
UpdateWindow — ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΎΠΊΠ½Π°.
3) PlaySound (MY_SOUND1, NULL, SND_FILENAME | SND_ASYNC) — ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π·Π²ΡΠΊΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΡΠΎΡΠΌΠ°ΡΠ΅ WAVE.
ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°Π΄Π°Π΅Ρ Π»ΠΈΠ±ΠΎ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Π½Π° Π΄ΠΈΡΠΊΠ΅, Π»ΠΈΠ±ΠΎ ΡΡΡΠΎΠΊΡ ΠΈΠΌΠ΅Π½ΠΈ Π·Π²ΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ°. ΠΡΠ»ΠΈ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ PlaySound ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ°Π²Π΅Π½ NULL, ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ «ΠΈΠ³ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ» ΡΠ°ΠΉΠ»Π°. ΠΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π·Π²ΡΠΊΠ° ΠΈΠ· Π·Π²ΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ°. ΠΡΠ»ΠΈ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·Π²Π°Π½Π° Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π·Π²ΡΠΊΠ° ΠΈΠ· ΡΠ°ΠΉΠ»Π°, ΡΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² NULL. Π’ΡΠ΅ΡΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π·Π²ΡΠΊΠ°.
4) SetTimer — ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Windows. ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, hWnd, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΎΠΊΠ½Π°, Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ Π΄Π°Π½Π½ΡΠΌ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠΌ. ΠΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, nIDEvent, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ (Π½ΠΎ Π½Π΅ Π½ΡΠ»Ρ). Π’ΡΠ΅ΡΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, uElapse, Π·Π°Π΄Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π», ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ (ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ) ΠΎΡ 1 Π΄ΠΎ 4 294 967 295 ΠΌΡ, ΡΡΠΎ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 50 Π΄Π½Π΅ΠΉ. ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ΅ΠΌΠΏ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ Windows Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΠ»Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ WM_TIMER. Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ WM_TIMER Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π»ΠΈΠ±ΠΎ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ Π΄Π»Ρ ΠΎΠΊΠ½Π° hWnd, Π΅ΡΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ IpTimeProc ΡΠ°Π²Π΅Π½ NULL, Π»ΠΈΠ±ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Ρ Π°Π΄ΡΠ΅ΡΠΎΠΌ IpTimeProc — Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅.
5) ImageList_Add — ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΡΠΏΠΈΡΠΎΠΊ. ΠΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ: Ρ ΡΠ½Π΄Π» ΡΠΏΠΈΡΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Ρ ΡΠ½Π΄Π» Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π’ΡΠ΅ΡΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ — Ρ ΡΠ½Π΄Π» ΠΌΠΎΠ½ΠΎΡ ΡΠΎΠΌΠ½ΠΎΠ³ΠΎ bitmap’a, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ°ΡΠΊΠΈ.
ImageList_Draw — ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΡΠ°Π½ΡΡΠ΅Π³ΠΎΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅. ΠΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Ρ ΡΠ½Π΄Π» ΡΠΏΠΈΡΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π²ΡΠΎΡΠΎΠΉ — ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΡΠ΅ΡΠΈΠΉ — Ρ ΡΠ½Π΄Π» ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, Π½Π° ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠ΅ΡΠ²ΡΡΡΡΠΉ ΠΈ ΠΏΡΡΡΠΉ — ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π² ΡΡΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΡΠ΅ΡΡΠΎΠΉ — ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ»Π°Π³ΠΈ ΠΏΡΠΎΡΠΈΡΠΎΠ²ΠΊΠΈ.
6) GetObject — ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡΠ°Ρ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π±ΡΡΠ΅ΡΠ° Π΄Π»Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΎΠ±ΡΠ΅ΠΊΡΠ΅. Π’ΡΠ΅ΡΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π°Π΄ΡΠ΅Ρ Π±ΡΡΠ΅ΡΠ° Π΄Π»Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΎΠ±ΡΠ΅ΠΊΡΠ΅. Π€ΡΠ½ΠΊΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ hgdiobj ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ°ΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠΎ, ΠΊΠΈΡΡΡ, ΡΡΠΈΡΡ, ΠΏΠ°Π»ΠΈΡΡΠ° ΠΈΠ»ΠΈ ΡΠ°ΡΡΡ ΡΠΈΠΏΠ° Π BITMAP.
7) BitBlt — Π€ΡΠ½ΠΊΡΠΈΡ BitBlt ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² Ρ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°-ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° hdcSrc Π½Π° ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°-ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° hdcDest. ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ nXSrc, nYSrc, nWidth, nHeight Π² Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π°-ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°. ΠΡΠΈΠ΅ΠΌΠ½ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ nXDest, nYDest, nWidth, nHeight Π² Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π°-ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°. ΠΠ±Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ°ΡΡΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ RC_BITBLT.
8) DestroyWindow — ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°Π·ΡΡΡΠ΅Π½ΠΈΡ ΠΎΠΊΠ½Π°. ΠΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π½Π°ΠΌΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π΅Π½ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ «ΠΡΡ ΠΎΠ΄». ΠΠΎΠ»Π½ΠΎΡΡΡ ΡΠ°Π·ΡΡΡΠ°Π΅Ρ ΠΎΠΊΠ½ΠΎ, Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΊΠΎΡΠΎΡΠ³ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ Π΅ΠΉ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅.
9) rand () — ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠ°Π½Π΄ΠΎΠΌΠ½ΠΎΠ³ΠΎ (ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ) Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ ΡΠΈΡΠΊΠ°ΠΌΠΈ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΠΎ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π½ΠΎΠ²ΠΎΠ΅, Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ:
srand ((unsigned) time (NULL));
10) DrawImage — ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π°ΡΠΈΡ ΠΈΠ³ΡΠΎΠ²ΡΡ ΡΠΈΡΠ΅ΠΊ.
11):CreateFile — ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ / ΠΈΠ»ΠΈ ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ°ΠΉΠ»Π°. Π€Π°ΠΉΠ» Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ΅ΠΊΠΎΡΠ΄ΠΎΠ².
:ReadFile — ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°.
3. ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
3.1 ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π»Π° Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΡΠΉ Π²ΠΈΠ΄, Π½Π°ΠΌ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ΄Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅.
ΠΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: void Paint (HDC hdc, HDC hdcMem);
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΡΠΊΡΠ°Π½ Π²ΡΠ΅ΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ. POINT * len (int StartX, int StartY, int &length);
Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ΄ΡΡΡΡΠ° ΡΠ°ΡΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ. ΠΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΠΎΠΈΡΠΊ ΡΡΠ΄Π° ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ ΠΈ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ ΠΎΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ StartX ΠΈ StartY. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ length. void EndPathfinder (void);
Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΡΠΈΡΡΠΊΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠ΅ΠΊ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΏΡΡΠΈ Π΄Π»Ρ ΡΠ°ΡΠΈΠΊΠ°. int FindPath (int startX, int startY, int targetX, int targetY).
Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΡΡΠΈ ΠΏΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ A-star. Π Π½Π°ΡΠ°Π»Π΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΡΠ·Π»Ρ, ΡΠΌΠ΅ΠΆΠ½ΡΠ΅ Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ; Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΠΎΡ ΠΈΠ· Π½ΠΈΡ , ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ f (x), ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΡΠΎΡ ΡΠ·Π΅Π» ΡΠ°ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ. ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅Ρ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΡΡΠ΅ΠΉ ΠΈΠ· Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π΄ΠΎ Π²ΡΠ΅Ρ Π΅ΡΡ Π½Π΅ ΡΠ°ΡΠΊΡΡΡΡΡ (Π»ΠΈΡΡΠΎΠ²ΡΡ ) Π²Π΅ΡΡΠΈΠ½ Π³ΡΠ°ΡΠ° («ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ°ΡΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ»), ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ. ΠΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΏΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ f (x) = g (x) + h (x). ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ f (x) ΡΠ΅Π»Π΅Π²ΠΎΠΉ Π²Π΅ΡΡΠΈΠ½Ρ Π½Π΅ ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΌΠ΅Π½ΡΡΠΈΠΌ, ΡΠ΅ΠΌ Π»ΡΠ±ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ (Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΊΠ° Π²ΡΡ Π΄Π΅ΡΠ΅Π²ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅Π½ΠΎ). ΠΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΡΡΠΎΠΈΠΌΠΎΡΡΡΡ.
void dest_len (POINT * PatchDestroy);
Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΡΠΈΡΡΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ· ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΡΠΎΡΠ΅ΠΊ ΡΠ°ΡΠΎΠ² ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ.
void create_bubbles (HWND hWnd);
Π€ΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΡΠΈΠΊΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ². ΠΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ ΡΠ°ΡΠΈΠΊΠ°ΠΌΠΈ, ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΠΆΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π½Π° Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ³ΡΡ (ΠΈΠ³ΡΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²ΡΡ ΠΏΠΎΠ»Π΅). ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ ΠΎΠ΄Π΅ ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΡΠΈ ΡΠ°ΡΠΈΠΊΠ°, Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΡ ΡΠ°ΡΠΈΠΊΠ° Π² Π·Π°Π½ΡΡΡΡ ΡΡΠ΅ΠΉΠΊΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠΈΡΠΊ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ.
3.2 Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΠ°Π½Π½ΡΠ΅ Ρ ΡΠ°Π½ΡΡΡΡ Π² ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ ΡΠΈΠΏΠ° int ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 9×9. ΠΠ»Π°Π΄ΡΠ΅Π΅ ΡΠ»ΠΎΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ°ΡΠΈΠΊΠ°, Π° ΡΡΠ°ΡΡΠΈΠΉ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ, ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ°ΡΠΈΠΊΠ°).
ΠΡΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΠΈΠ³ΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°ΠΏΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Ρ ΡΠ°Π½ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ, ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ°ΡΠΈΠΊΠ°. ΠΠ°ΡΠ΅ΠΌ Π΄ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΎΡΠΊΠΈ Π½Π°Π±ΡΠ°Π½Π½ΡΠ΅ ΠΈΠ³ΡΠΎΠΊΠΎΠΌ ΠΈ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ΅ Π² ΠΈΠ³ΡΠ΅. ΠΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
3.3 ΠΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ
ΠΠ»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠ°ΠΉΠΌΠ΅Ρ Windows, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΡΠ΅Π· Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ WM_TIMER ΠΈ ΡΠ΅ΡΠ΅Π· ΡΡΠΎΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π΄ΡΡΠ³ΠΎΠ³ΠΎ bitmap’Π° ΠΈΠ· Image_List ΠΈ ΡΠ°ΠΊ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈ. Π ΠΌΠΎΡΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° ΡΠ°Π²Π΅Π½ 100ms.
3.4 ΠΠΎΠ΄ΡΡΡΡ ΠΏΡΠΎΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ Π² ΠΈΠ³ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
ΠΠ»Ρ ΠΏΠΎΠ΄ΡΡΡΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ GetTickCount (), ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π·Π°ΠΏΡΡΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ»Ρ ΡΠ°ΡΡΡΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠΊΠ½Π° Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ T1 Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΎΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π² ΠΈΠ³ΡΠ΅ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ T1-T2, Π³Π΄Π΅ T2 ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π·Π°ΠΏΡΡΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΡ.
3.5 ΠΠ°ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΎΡΠΊΠΎΠ²
ΠΠ°ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΎΡΠΊΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π·Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΠ°ΡΠΈΠΊ ΠΏΠΎ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅.
ΠΠΎΠ»Π½ΡΠΉ Π»ΠΈΡΡΠΈΠ½Π³ Π²ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ «ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ».
4. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
4.1 Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΈΠ³ΡΡ
Π ΠΈΡ. 1. «ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ»
4.2 Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΡΠΈΠΊΠΎΠ²
Π‘ΠΎΠ²Π΅ΡΡΠΈΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Ρ ΠΎΠ΄ΠΎΠ² ΠΈ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ°ΡΠΈΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
Π ΠΈΡ. 2. «Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΡΠΎΠ²»
4.3 Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½ΠΎΠ²ΠΎΠΉ ΠΈΠ³ΡΡ
ΠΠ° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠΌΠ΅Π½Ρ «ΠΠ³ΡΠ°» Π²ΡΠ±Π΅ΡΠ΅ΠΌ ΠΏΡΠ½ΠΊΡ «ΠΠΎΠ²Π°Ρ ΠΈΠ³ΡΠ°» ΠΈ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅:
Π ΠΈΡ. 3 «ΠΠΎΠ²Π°Ρ ΠΈΠ³ΡΠ°»
4.4 Π‘ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΡΠΎΠ² Π² Π»ΠΈΠ½ΠΈΡ
Π ΠΈΡ. 4. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°ΡΠΎΠ²
4.5 Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ³ΡΡ
Π ΠΈΡ. 5. Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ°
4.6 Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ΅Π½Ρ «Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅»
Π ΠΈΡ. 6 «ΠΠ΅Π½Ρ — „Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅“»
5. ΠΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
lines ΡΠ°ΡΠΈΠΊ ΠΈΠ³ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
Π’Π΅ΡΡ 1. ΠΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³ΠΎΡΠΎΠ²ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π·Π°Π΄Π°ΡΡ. ΠΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ. Π’Π΅ΡΡ ΠΏΡΠΎΠΉΠ΄Π΅Π½.
Π’Π΅ΡΡ 2. ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΠΈΠΊΠ°
ΠΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° ΡΠ°ΡΠΈΠΊ Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠ»ΠΈΠΊΠΎΠΌ Π½Π° ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΡ ΠΊΠ»Π΅ΡΠΊΡ ΡΠ°ΡΠΈΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ. Π’Π΅ΡΡ ΠΏΡΠΎΠΉΠ΄Π΅Π½.
Π’Π΅ΡΡ 3. ΠΠΎΠΏΡΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΡΠ°ΡΠΈΠΊ Π² Π·Π°ΠΊΡΡΡΡΡ ΠΎΠ±Π»Π°ΡΡΡ
ΠΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΡΠ°ΡΠΈΠΊ ΡΠ΅ΡΠ΅Π· Π½Π΅ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΠΌΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ. Π’Π΅ΡΡ ΠΏΡΠΎΠΉΠ΄Π΅Π½.
Π’Π΅ΡΡ 4. ΠΠΎΠ²Π°Ρ ΠΈΠ³ΡΠ°
ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° Π½ΠΎΠ²ΠΎΠΉ ΠΈΠ³ΡΡ ΠΏΠΎΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΎΡΡ ΡΠ°ΠΉΠΌΠ΅Ρ ΠΈ ΠΎΡΠΊΠΈ Π°Π½Π½ΡΠ»ΠΈΡΠΎΠ²Π°Π½Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΈΠ³ΡΠ°ΡΡ. Π’Π΅ΡΡ ΠΏΡΠΎΠΉΠ΄Π΅Π½.
Π’Π΅ΡΡ 5. ΠΡΡ ΠΎΠ΄
ΠΠΎΡΠ»Π΅ Π²ΡΠ±ΠΎΡΠ° Π² ΠΌΠ΅Π½Ρ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΏΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΡΠ΅ΡΡΠΈΠΊ ΠΈΠ³ΡΠ° Π·Π°ΠΊΡΡΠ²Π°Π΅ΡΡΡ. Π’Π΅ΡΡ ΠΏΡΠΎΠΉΠ΄Π΅Π½.
Π’Π΅ΡΡ 6. Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ
ΠΠΎΡΠ»Π΅ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ³ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π° ΡΠ°ΠΉΠΌΠ΅ΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΊΠΎΠ², ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ²Π΅Ρ ΡΠ°ΡΠΎΠ² Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡ. Π’Π΅ΡΡ ΠΏΡΠΎΠΉΠ΄Π΅Π½.
Π’Π΅ΡΡ 6. Π‘ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΄ ΡΠ°ΡΠΎΠ²
ΠΠΎΡΠ»Π΅ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² ΡΡΠ΄ ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ ΠΈΠ»ΠΈ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ ΠΏΡΡΠΈ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΡ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΡΠΊΠΎΠ².
ΠΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΡΠ»Π° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Π²ΡΠ·Π²Π°Π»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π²ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΎΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ»Π° ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ ΠΈ Π²Π΅ΡΠ½ΠΎ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΠ°ΠΌΠΊΠ°Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ»Π° ΡΠ΅ΡΠ΅Π½Π° ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½Π°Ρ Π·Π°Π΄Π°ΡΠ°. ΠΠ°Π΄Π°ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ windows-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠΌΡΠ»ΠΈΡΡΡΡΠ΅Π΅ ΠΈΠ³ΡΡ «Lines». ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ-ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π Ρ ΠΎΠ΄Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ ΡΠ΅Π±Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΌ ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΌ ΠΊ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΡΠ·ΡΠΊ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ C++. Π‘ΡΠ΅Π΄ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΡΠ»Π° Π²ΡΠ±ΡΠ°Π½Π° ΡΡΠ΅Π΄Π° Microsoft Visual Studio 2008.
1. Win32 API Π©ΡΠΏΠ°ΠΊ
2. Win32API ΠΡΠ½ΠΎΠ²Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
3. Π‘Π°ΠΉΠΌΠΎΠ½ Π . Windows 2000 API.1085 ΡΡΡ.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
Π€Π°ΠΉΠ» h
#pragma once
#include «resource.h»
#define FILE_PATH _T («data.dat»)
HBITMAP hBitmapNum0=(HBITMAP) LoadImage (NULL, _T («data //BKG.BMP»), IMAGE_BITMAP, 0,0, LR_LOADFROMFILE);
HBITMAP hBitmapNum1=(HBITMAP) LoadImage (NULL, _T («data //BALLS1.BMP»), IMAGE_BITMAP, 0,0, LR_LOADFROMFILE);
HBITMAP hBitmapNum2=(HBITMAP) LoadImage (NULL, _T («data //BALLS2.BMP»), IMAGE_BITMAP, 0,0, LR_LOADFROMFILE);
HBITMAP hBitmapNum3=(HBITMAP) LoadImage (NULL, _T («data //BALLS3.BMP»), IMAGE_BITMAP, 0,0, LR_LOADFROMFILE);
HBITMAP hBitmapNum4=(HBITMAP) LoadImage (NULL, _T («data //BALLS4.BMP»), IMAGE_BITMAP, 0,0, LR_LOADFROMFILE);
HBITMAP hBitmapNum5=(HBITMAP) LoadImage (NULL, _T («data //BALLS5.BMP»), IMAGE_BITMAP, 0,0, LR_LOADFROMFILE);
HBITMAP hBitmapNum6=(HBITMAP) LoadImage (NULL, _T («data //BALLS6.BMP»), IMAGE_BITMAP, 0,0, LR_LOADFROMFILE);
HBITMAP hBitmapNum7=(HBITMAP) LoadImage (NULL, _T («data //BALLS7.BMP»), IMAGE_BITMAP, 0,0, LR_LOADFROMFILE);
HBITMAP hBitmapNum8=(HBITMAP) LoadImage (NULL, _T («data //TIME.BMP»), IMAGE_BITMAP, 0,0, LR_LOADFROMFILE);
HBITMAP hBitmapNum9=(HBITMAP) LoadImage (NULL, _T («data //NEXT.BMP»), IMAGE_BITMAP, 0,0, LR_LOADFROMFILE);
HBITMAP hBitmapNum10=(HBITMAP) LoadImage (NULL, _T («data //DIGITS.BMP»), IMAGE_BITMAP, 0,0, LR_LOADFROMFILE);
HBITMAP hBitmapNum11=(HBITMAP) LoadImage (NULL, _T («data //DIGTR.BMP»), IMAGE_BITMAP, 0,0, LR_LOADFROMFILE);
HBITMAP hBitmapNum12=(HBITMAP) LoadImage (NULL, _T («data //TIMTR.BMP»), IMAGE_BITMAP, 0,0, LR_LOADFROMFILE);
HBITMAP hBitmapNum13=(HBITMAP) LoadImage (NULL, _T («data //NEXTTR.BMP»), IMAGE_BITMAP, 0,0, LR_LOADFROMFILE);
TCHAR MY_SOUND0 []=_T («data //move.wav»);
TCHAR MY_SOUND1 []=_T («data //destroy.wav»);
TCHAR MY_SOUND2 []=_T («data //fetus.wav»);
TCHAR MY_SOUND3 []=_T («data //cantmove.wav»);
typedef struct
{
BYTE hour, min, sec;
} TIME;
const int walkability_fetus=1 376 256;
const int zero=0×0000ffff;
const int mapWidth = 9, mapHeight = 9;
int onClosedList = 10;
const int notfinished = 0, notStarted = 0;
const int found = 1, nonexistent = 2;
const int walkable = 0;
int walkability [mapWidth] [mapHeight];
int openList [mapWidth*mapHeight+2];
int whichList [mapWidth+1] [mapHeight+1];
int openX [mapWidth*mapHeight+2];
int openY [mapWidth*mapHeight+2];
int parentX [mapWidth+1] [mapHeight+1];
int parentY [mapWidth+1] [mapHeight+1];
int Fcost [mapWidth+1] [mapHeight+1];
int pathLength;
POINT *pathBank;
static int path=0;
int xPath;
int yPath;
// ;
// Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° A*(A-star)
// ;
int FindPath (int startX, int startY, int targetX, int targetY)
{
int onOpenList=0, parentXval=0, parentYval=0,
a=0, b=0, m=0, u=0, v=0, temp=0, numberOfOpenListItems=0,
path = 0, x=0, y=0,
tempx, pathX, pathY, cellPosition,
newOpenListItemID=0;
if (startX == targetX && startY == targetY)
return found;
numberOfOpenListItems = 1;
openList[1] = 1;
openX[1] = startX;
openY[1] = startY;
do
{
if (numberOfOpenListItems≠ 0)
{
whichList[parentXval] [parentYval] = onClosedList;
numberOfOpenListItems -;
openList[1] = openList [numberOfOpenListItems+1];
v = 1;
do
{
if (2*u+1 <= numberOfOpenListItems)
{
if (Fcost [openX[openList[u]]] [openY [openList[u]]]>=
Fcost [openX[openList [2*u]]] [openY [openList[2*u]]])
v = 2*u;
if (Fcost [openX[openList[v]]] [openY [openList[v]]]>=
Fcost [openX[openList [2*u+1]]] [openY [openList[2*u+1]]])
if (2*u <= numberOfOpenListItems)
if (u≠ v)
{
temp = openList[u];
openList[u] = openList[v];
openList[v] = temp
}
else
break;
}
for (a = parentXval-1; a <= parentXval+1; a++) {
for (b = parentYval-1+abs (parentXval-a); b <= parentYval+1-abs (parentXval-a); b++) {
if (a≠ -1 && b≠ -1 && a≠ mapWidth && b≠ mapHeight) {
if (whichList[a] [b]≠ onClosedList) {
if (walkability [a] [b] == walkable || HIWORD (walkability [a] [b])==HIWORD (walkability_fetus)) {
if (whichList[a] [b]≠ onOpenList)
{
newOpenListItemID++;
m = numberOfOpenListItems+1;
openList[m] = newOpenListItemID;
openX[newOpenListItemID] = a;
openY[newOpenListItemID] = b;
Fcost[a] [b] = 10*(abs (a — targetX) + abs (b — targetY));
parentX[a] [b] = parentXval;
parentY[a] [b] = parentYval;
while (m≠ 1)
{
if (Fcost [openX[openList[m]]] [openY [openList[m]]] <=
Fcost [openX[openList [m/2]]] [openY [openList[m/2]]])
{
temp = openList [m/2];
openList [m/2] = openList[m];
openList[m] = temp;
m = m/2;
}
else
break;
}
numberOfOpenListItems++;
whichList[a] [b] = onOpenList;
}
else
{
if (Fcost[parentXval] [parentYval] < Fcost[a] [b])
{
parentX[a] [b] = parentXval;
parentY[a] [b] = parentYval;
for (int x = 1; x <= numberOfOpenListItems; x++)
{
if (openX [openList[x]] == a && openY [openList[x]] == b)
{
m = x;
while (m≠ 1)
{
if (Fcost [openX[openList[m]]] [openY [openList[m]]] <
Fcost [openX[openList [m/2]]] [openY [openList[m/2]]])
{
temp = openList [m/2];
openList [m/2] = openList[m];
openList[m] = temp;
m = m/2;
}
else
break;
}
break;
}
else
{
path = nonexistent; break;
}
if (whichList[targetX] [targetY] == onOpenList)
{
path = found; break;
}
}
while (1);
if (path == found)
{
pathX = targetX; pathY = targetY;
do
{
tempx = parentX[pathX] [pathY];
pathY = parentY[pathX] [pathY];
pathX = tempx;
pathLength = pathLength + 1;
}
while (pathX≠ startX || pathY≠ startY);
pathBank = (POINT*) realloc (pathBank,
pathX = targetX; pathY = targetY;
cellPosition = pathLength;
do
pathY≠ startY);
return path;
noPath:
xPath = startX;
yPath = startY;
return nonexistent;
}
void EndPathfinder (void)
{
if (pathBank)
{
free (pathBank);
pathBank=NULL;
}
}
POINT * len (int StartX, int StartY, int &length)
{
int north=1, south=1, west=1, east=1, width=0, height=0;
POINT *PatchDestroy=NULL;
length=0;
north++;
while (StartY+south≠mapHeight && walkability[StartX] [StartY]==walkability[StartX] [StartY+south])
south++;
while (StartX-west≠-1 && walkability[StartX] [StartY]==walkability [StartX-west] [StartY])
west++;
while (StartX+east≠mapWidth && walkability[StartX] [StartY]==walkability [StartX+east] [StartY])
east++;
height=north+south-1;
width=west+east-1;
if (height>=5 && width>=5 && height>=width || height>=5)
{
length=height;
PatchDestroy=(POINT*) malloc (sizeof (POINT)*height);
StartY-=north-1;
for (int i=0; i
{
PatchDestroy[i]. x=StartX;
PatchDestroy[i].y=StartY+i;
}
}
else
if (width>=5)
{
length=width;
PatchDestroy=(POINT*) malloc (sizeof (POINT)*width);
StartX-=west-1;
for (int i=0; i
{
PatchDestroy[i]. x=StartX+i;
PatchDestroy[i].y=StartY;
}
}
return PatchDestroy;
}
void dest_len (POINT * PatchDestroy)
{
if (PatchDestroy)
{
free (PatchDestroy);
PatchDestroy=NULL;
}
}