ΠΠ· ΠΊΠ»Π°ΡΡΠ° Graph Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° GameLogic ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Start. Π Π½ΡΠΌ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π½Π° Π½Π°ΡΡ ΠΊΠ°ΡΡΡ map ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ°, ΡΡΠ΅Π½ΠΊΠΈ ΠΈ ΠΏΡΡΡ ΠΎΡ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ° Π΄ΠΎ ΡΡΠ΅Π½ΠΊΠΈ. ΠΠ°Π»Π΅Π΅ Π² ΡΠΈΠΊΠ»Π΅ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π΅ΠΌ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ° ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ moveCharacter. ΠΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π±ΡΠ»Π° Π»ΠΈ Π²ΡΠ·Π²Π°Π½Π° ΡΡΠ½ΠΊΡΠΈΡ onTouchEvent ΠΈΠ· ΠΊΠ»Π°ΡΡΠ° Graph. ΠΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΊ Π·Π°ΡΡΠΏΠ°Π΅Ρ Π½Π° 33ΠΌΡ ΠΈ ΡΠ½ΠΎΠ²Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ moveCharacter. Π ΡΠ»ΡΡΠ°Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π½Π° ΡΠΊΡΠ°Π½ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅. ΠΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΠΊΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π±ΡΠ»ΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ ΠΊΠ°ΡΠ°Π½ΠΈΠ΅ ΡΠΊΡΠ°Π½Π°. ΠΠ΅ΡΡΠΎΠ½Π°ΠΆ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π² ΡΡΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, Π½Π° ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎΠ΅ Π΅Π³ΠΎ ΡΠΊΠΎΡΠΎΡΡΠΈ, ΠΎΡΡΠ°Π²Π»ΡΡ Π·Π° ΡΠΎΠ±ΠΎΠΉ Π½ΠΈΡΠΎΡΠΊΡ.
Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, ΠΏΠ°ΡΡΠΎΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ ΡΠΎ ΡΡΠ΅Π½ΠΊΠΎΠΉ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΠ°ΡΡΠΊΠ° Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ, Π° Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ map ΠΎΠ½ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡΡ Π² ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΊ ΡΡΠ΅Π½ΠΊΠ΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΡ ΠΈΠ³ΡΠΎΠΊΠ° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ fillMap2. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΠΏΠ»ΠΎΡΠ°Π΄ΠΈ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π²ΡΠΈΡ
ΡΡ Π΄Π²ΡΡ
ΡΠΈΠ³ΡΡ ΠΏΠΎ Ρ
ΠΈΡΡΠΎΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ squareCount. ΠΠΎΡΠ»Π΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π΄Π²ΡΡ
ΠΏΠ»ΠΎΡΠ°Π΄Π΅ΠΉ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΈΠ³ΡΡΠ°, ΠΈΠΌΠ΅ΡΡΠ°Ρ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΡΡ ΠΏΠ»ΠΎΡΠ°Π΄Ρ.
ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΉ, Π½Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ» Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΠ»ΠΎΡΠ°Π΄ΠΈ, ΡΠ°Π±ΠΎΡΠ°Π» ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄ΠΎΠ»Π³ΠΎ. ΠΡΠ»Π° Π·Π°ΠΌΠ΅ΡΠ½Π° ΠΏΠ°ΡΠ·Π° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΡΠΎ ΡΡΠ΅Π½ΠΊΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π»ΡΡ ΡΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ. Π‘ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ ΡΡΠ΅Π» Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠΈΠ³ΡΡ, ΡΠ°ΠΊΠΎΠΉ ΠΏΠ°ΡΠ·Ρ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΎΠ½ Π² ΡΠΎΡΠ½ΠΈ ΡΠ°Π· Π±ΡΡΡΡΠ΅Π΅.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΡΡΠ½ΠΊΠΎΠ² ΠΈ Π±Π»ΠΎΠΊ ΡΡ
Π΅ΠΌ Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡ ΡΠ°Π±ΠΎΡΡ Π΄Π²ΡΡ
Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ².
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΡΠΈΡΠ°ΡΡ ΠΏΠ»ΠΎΡΠ°Π΄Ρ Π΄Π²ΡΡ
ΡΠΈΠ³ΡΡ.
Π ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΠΏΠ»ΠΎΡΠ°Π΄ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ X, Y ΡΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° Π²Π½ΡΡΡΠΈ ΡΠΈΠ³ΡΡΡ. ΠΠ»Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΠ»ΠΎΡΠ°Π΄Ρ ΡΡΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΉ ΠΊΡΠ°ΡΠ½ΡΠΌ ΠΊΡΠ΅ΡΡΠΈΠΊΠΎΠΌ, Π΄Π»Ρ Π²ΡΠΎΡΠΎΠΉ ΡΠΈΠ³ΡΡΡ ΡΠ°ΠΊΠ°Ρ ΡΠΎΡΠΊΠ° ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π°, ΡΠΈΠ½ΠΈΠΌ ΠΊΡΠ΅ΡΡΠΈΠΊΠΎΠΌ. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΏΡΡΡΡΠΌ ΠΊΠ»Π΅ΡΠΊΠ°ΠΌ Π²Π½ΡΡΡΠΈ ΡΠΈΠ³ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΉ ΠΈ ΠΏΡΠΎΡΡΠΎΠΉ. ΠΠ½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΡΠΊΡ, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΠΏΠ»ΠΎΡΠ°Π΄Ρ Π½Π° 1 ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ΅Π±Ρ Π΄Π»Ρ ΡΠΎΡΠ΅Π΄Π½ΠΈΡ
ΠΊΠ»Π΅ΡΠΎΠΊ.
int map[N, N];
boolean visited[N, N];
int calc (int x, int y).
{.
if (visited[x][y] || a[x][y] ≠ 0) return 0;
visited[x][y] = true;
int num = 1;
num += calc (x, y — 1);
num += calc (x, y + 1);
num += calc (x + 1, y);
num += calc (x — 1, y);
return num;
}.
Π Π°Π±ΠΎΡΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅.
ΠΡΠ°ΡΠ½Π°Ρ ΡΠΎΡΠΊΠ°Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π²Π½ΡΡΡΠΈ ΡΠΈΠ³ΡΡΡ. ΠΡΠ°Π½ΠΆΠ΅Π²ΡΠ΅ ΡΠΎΡΠΊΠΈ ΡΡΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΡΡΠΈΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΎΡΠΎΠ³ΠΎ, ΡΡΠ΅ΡΡΠ΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π°. Π―ΡΠΊΠΎ ΡΠΎΠ·ΠΎΠ²ΡΠ΅ — ΡΠ΅ΡΠ²Π΅ΡΡΡΠΉ, ΠΏΡΡΡΠΉ, ΡΠ΅ΡΡΠΎΠΉ Π²ΡΠ·ΠΎΠ²Ρ. ΠΠ»Π΅Π΄Π½ΠΎ ΡΠΎΠ·ΠΎΠ²ΡΠ΅ — ΡΠ΅Π΄ΡΠΌΠΎΠΉ, Π²ΠΎΡΡΠΌΠΎΠΉ, Π΄Π΅Π²ΡΡΡΠΉ, Π΄Π΅ΡΡΡΡΠΉ Π²ΡΠ·ΠΎΠ²Ρ.
Π§ΡΠΎ Π±Ρ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² ΠΊΠ»Π΅ΡΠΊΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ, Ρ ΡΠΎΠ·Π΄Π°Π» ΠΌΠ°ΡΡΠΈΠ² visited, ΠΊΠΎΡΠΎΡΡΡ
Ρ
ΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΡΠ΅ΡΡΠ½Π½ΡΡ
ΠΊΠ»Π΅ΡΠΊΠ°Ρ
. ΠΡΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠΈ Π² ΡΠ°ΠΊΡΡ ΠΊΠ»Π΅ΡΠΊΡ ΡΡΠ½ΠΊΡΠΈΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ.
Π’Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π²Π΅ΡΡΠΌΠ° Π½Π΅ΠΏΠ»ΠΎΡ
ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΉΡΠΈΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΊΠ»Π΅ΡΠΊΠ°ΠΌ Π²Π½ΡΡΡΠΈ ΡΠΈΠ³ΡΡΡ. ΠΠΎ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΠΏΠ»ΠΎΡΠ°Π΄ΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΉΡΠΈΡΡ ΠΏΠΎ ΠΏΠ΅ΡΠΈΠΌΠ΅ΡΡΡ ΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΠΏΠ»ΠΎΡΠ°Π΄Ρ ΡΠΈΠ³ΡΡΡ.