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

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈΠ³Ρ€Ρ‹. 
ВычислСниС ΠΏΠ»ΠΎΡ‰Π°Π΄Π΅ΠΉ

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

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для подсчСта ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ X, Y Ρ‚ΠΎΡ‡ΠΊΠΈ, которая располоТСна Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹. Для ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ это ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½ΠΎΠΉ красным крСстиком, для Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ такая Ρ‚ΠΎΡ‡ΠΊΠ° ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π°, синим крСстиком. Алгоритм ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ проходится ΠΏΠΎ Π²ΡΠ΅ΠΌ пустым ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ ΠΈ ΠΏΡ€ΠΎΡΡ‚ΠΎΠΉ. Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΡƒ, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Π½Π° 1 ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сСбя для сосСдних… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈΠ³Ρ€Ρ‹. ВычислСниС ΠΏΠ»ΠΎΡ‰Π°Π΄Π΅ΠΉ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Из ΠΊΠ»Π°ΡΡΠ° 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, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΡΠ΅Ρ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΊΠ»Π΅Ρ‚ΠΊΠ°Ρ…. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠΈ Π² Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ функция Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ.

Π’Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ вСсьма Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹. Но Π΄Π»Ρ подсчСта ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ эффСктивно Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΠΎ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Ρƒ ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹.

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