- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
public static function findNeighbourEmpty(cx:int, cy:int, checkDebris:Boolean = true):Cell {
var cell:Cell = Cell.getCell(cx, cy);
var i:int = 0;
var distance:int = 1;
var n:int = 8;
while(!cell || !cell.accessible || (checkDebris && !isEmptyTile(cell))) {
if (i < n * distance / 4) {
cell = Cell.getCell(cx + Math.min(i, distance), cy + Math.min(distance * 2 - i, distance));
} else if (i < n * distance / 2) {
cell = Cell.getCell(cx + Math.min(distance * 2 - i + n * distance / 4, distance), cy + Math.max(n * distance / 4 - i, -distance));
} else if (i < 3 * n * distance / 4) {
cell = Cell.getCell(cx + Math.max(n * distance / 2 - i, -distance), cy + Math.max(-distance * 2 + i - n * distance / 2, -distance));
} else if (i < n * distance) {
cell = Cell.getCell(cx + Math.max(-distance * 2 + i - 3 * n * distance / 4, -distance), cy + Math.min(i - 3 * n * distance / 4, distance));
} else {
i = 0;
distance++;
if (distance > MAX_NEIGHBOUR_CELL_DISTANCE) {
return findNeighbourEmpty(cx, cy, false);
}
continue;
}
i++;
}
return cell;
}
Govnocoder#0xFF 06.12.2012 20:57 # −3
Lure Of Chaos 06.12.2012 22:28 # −4
годно, годно. И циклы, и рекурсия, и ифосвитч, и даже чуть математики!
кстати, Cell.getCell(cx, cy) меня тоже порадовал.
wvxvw 07.12.2012 15:04 # −4
wvxvw 07.12.2012 15:38 # −4
kyzi007 10.12.2012 12:05 # 0
Нет, карта большая.
Разнообразных поисков кстати много там написано :).
kyzi007 10.12.2012 12:08 # 0
wvxvw 10.12.2012 12:50 # 0
А вообще, еще лучше, копировать отсюда:
Govnisti_Diavol 06.12.2012 22:44 # −10
Ṫ̼̥̖̙͌̃̒o͔̾ͤ̀̂ͧ̑̓̾ͨ ̤͚̮̻̌i̫̺̞͎̇͂̋ͨͨn̫̥̰̥̠̫͐ͫ̐́ͧ͌͗́ͅv̬̜͊̾̅̅̈́ͤ ̹o̤̫̜̼̥̪͓̱̊͒͑̈̉ͪͣ̈k̖̭͙͉̙̣͚͒̎̾̏̌̒̉̏ėͬ͋̔̚ ̤̠̠̯̤͖̮̗̉̒ͤ ͔̯͕̞̹̥̻̫͌͑̚t̗̯̗̞̮̼͖ͬ̄ͯ̒h̺̜̰͉̱̜̃ͬ̂ͫe͔ͫ͗͐͊ ͕̮̠ ̤̯̙̥̜̺ͯͮh͕̥͈̫̪̀̆͌̋͐ͮ̓ͅi̼̞̐ͩͤͯ̈́̎̽͌́v̓͆̉ͯͬ ̠͍̗͇̅̿̌ͦe̯͕̭̥̦̰̬̥͚̾̑͆ͤͫͪͥ̍-̙̫̭̠̮̳̮̉ͣͯm̝̓̉í̥͈̙͓̠͎̌ͥ̐̎̓̾ͤͩn̖͙͈̥͓̏͗̋̃ ̮d̩̲̙̺̎͊ͨ̽̚ ̣̝̗̻̩͕͇͇̓̾͐̒ͥͨr̥̜̬̱̺̠̖̩̱͂͌̑̃ẽ͚̱̮̣̲̑̃̇͒̓ ̙̙p͈̰ͥͪ̌̏̏̃̎̑ͅr͕̗̉͛͑͊̊͋̾e͉̤̩̠͈̹̹͌ͬ̋̂͗͑̚s ̘̗͎͙͎̽ͨͯͮe̦̝̝̟͕̭͕̻ͧͯͣ̐n̼͕͚̦̭̾̎ṱ̦͖̱͛ͣͣͅi ̻͛̈́ͬ̚ñ͔̣̪̄̅g̫͇͛ͭ ͈̮̙̥͉̹̯̻͚͊͊c͇̱̳̞̓̌͒̒͛̏ͨh̻̗̯̳̫̾ͪ̔ͩ͒a̒̈̒̄ͧ ̖͚̦̝̤̦͕̓́o̖͇̻̓̔s̲̥̝̘̼̺̠̻̜̋͆̇ͥ̔ͩ̏.̌͑̓̐͛͆̃ ͉̭̖͕̲
̻̥͎̺̻̐ͩI͓̟̖̘̥̪͎ͤ͑ñ̖̙̅͂̇ͦ̈́v̫̘͕̹̤̫̎ͅͅö͈́͐ ̣̞͈̬̦̻̤k̞̳̂̓̂̒̚i̙̳͍̝̗͈̺̓̅̅͌̆͐̇ǹ̫̗ͪ̽ğ͑̾ ̝̗̝̺̜̑ ͕̇̑̎̉̇t̜̜̰̬̰ͭ̇̇h͓̝͚͈̩͔͌̉ͬͦͧͮ̈͗ͅê͚̞͚͓̻̫̒ ͉ ̮̘̳̺̙̥̦̫͗͊ͯ̿͊ͧͬ͌f̬̰ͯe̜̙̞̺̯̭̞ͩ̒͒è͔͖̖͚͌̽̔ ̟l͕͉̱̺͒ͤ͒̋ͧ̚i͔̭̥̥̠̞͍͎͆̑͑̈ͯ̎ͅṅ̳̯̞̆̒ͮ́ͅgͪ ̼͓̪̦̱̮͕͂̔͊͂ ̥̺͓̬̳̳̣̽̃ͅo̻̳̭̙̹͍͋̍́͐̚f͙̰̗ͫͧ͒ͬͭ͐ ̤̺ͪ̉̿͒c̹͔̦͈̲̗ͣ͌͌ͨh̙̗̙̞͕̺ͯ͒̉ͮ̔ͧͯͯa̘̻ͨͥ͐ͫ̅ ͍͈͎͙̖ȯ̺̙͖͋̓̎̿̑ͫs̰̲͖͔̤̤̥̹͕ͣ͆̈́̍͋.ͦ̓͆͗͌̅̌͊ ͓̩͉̤̱̌ͅ
͓ͫW̳͇̰̣̭͈̯̭̃̋̎̏͋ͭi͍̪̫͐͐̆́͗̐t͍̰̫͍̆͒͒ͦ͑̒̓ͭ h̪̤͗͗ͪͣ̿͆̽̆ͥ ̱͍̟͔̲̹̗̫́͑̊͋ͦͨͣö͕̻̌̾͌̿u̗͔͍ͬͦͦ̃ͥ͐t̩͖̹̩͇͐ ͎̭͎ ̞͖͗o͎͓̝̱̣̟ͭ͒͐͆̔̆̒̅ͅͅr̖͚̭̝̜̄̎̀̈́ͦͭ̚d̩̰̼̠͆ͤ ͔̬̩ẽ̥̻ͥ̓̍͗̀̐̇r̥̗̳̠͚̟̪͎̮̃.͈̰̜̤̯̲̜̏̋͒ͤͧ͗ͅ
̞͇̪̰̙̖͍ͣͪṰ͕̫̇̑ͧ̌ͫh͎͈͓̀̓́ͭ̑̿͆e̟͇̬̅̓̅͌ͪ͌̆ ̼̺̞͖ͅ ͙̣̍ͥͅN͉̼̘̪̗̳͖̣̋ẹ̦̳̼͉̻̍ͦ̌̑z̥̭ͤ̿̂p̣̲̪͍̱̔̐ e͈͇̱͚̗͙̠̓ͥ͂̂̒̋r̺͐ͩ̀̍ͦ͋̚̚d̖̟̘̹̳̫̞͐̈ͮͩ͆i̒̇ ̼͔̀̊͑͗a̫̗̎ͣ͊̅ͩṉ͋̒ ͓̍͂ͣ̂h͖͍͙̭͍͈̃̐̓ͭ͒ͨ͛ï̖̰̟͒ͯ̐͌v̗̟͙̞̈̈̓̒ͪ̅ͪ e̠͕͓̫̮̬̗̭̯͂ͦ̂́̇̈́ͯ-̺̾ͅm͚͕̐̋́͆ͦͦ̏ï̲̮̘ͧͬ̆͋n̘̺̬̳͌̅̇̌̈́̒́͂d̋͌́͗ ̪̫͙̲͖͎̦ͤͬ ̜̥̻̹ͩ̅ͥͪ̐̍̐͌̋o͓̙ͣ̏ͫ̑̚f̰̟̓̒̊ͭ̑ͥ ͕̺ͩͯ̊͗͗c͓̭͂ͬͤ̒͆ͪ̚h̠͙͖̩͉̅̂ͦȧ̪͔̀o͓̖͇ͥ̓̄́̅ ̼͙̮͇ͅs̮̜̝̣ͨ̐͌ͤ͆̈́.͖͉̮̒̒̅̇ ̙̲̤͉̠̜̭͕̈̋ͥZ̰̗̥̤ͬ͂̾ͪ͌ͅa̭̩̞̽ͧ̐͗̂͒̏̋lͥ͐́͒ͨ ͓̭͓̜ͫg̳̺̼̖͆o̞̬̐̉̑͊͛ͦ.̮̹ͮ̒ͬͫͭ̅ͣ̉ ̝̝̲̤̺͇̱͙ͯ͋ͯͦ̓
̮͖͔̯̻ͣ͛͆͑͊̒̽̇H̫̫̃̎̂e͙̳̺̭͓̗̮̖ͬ̔ͥ̓ ͕̬͖̠͖͉͕̬̀ͣͩ͗w͉̺͚͙̘̞̍̄̌͗̃ͪ͒ͦh͈̦͇̮̟̲͈̋ȯ̓̉ ̰̦̜̲̣͖̲͓͛͊́̋ ̮̝̰̙̦͛͗͐ͥ̑̎ͩW̜̯̳͉͓͓̱̦͊̃̐a̺̺̭̽̾ͭͭ̒̅̓i̤̘͓̅ ̗̙̭̖̦t̩̺̞ͭ̓̎̚s̥͙̞̺̟̝͎̪̠̽̒̾̈́ ͙̰̞̺̈̂̑͌ͨ̆ͅB̭̰̰͖̜̒ͫ̌̾ĕ̗͕͇̤̱̤̹̞ͫͪh͙͎͔̪̓ͨ ̤̱î͙̙̦͎͈̠̓̒̐̑n̠͓͉̭̭̙̎̈́d̥͒͒̋ͥͩͫͧ ̠̖̦̮̹ͭ͛̊ͫT͇̘̫͖̗͓̤ͥ͑̂̑̊ͣͥ͐h͖̦͇̍̓ͩ̅̈́ͫͧͣ͛e͊ ̝̮̤̮̻̼͚̜͂ͬ͋ͧ̌̾͛ͅ ̭̳̩̦̞͎̜͛͑̓͂ͪ͐ͤͅͅW̟͚̫͕͓̺͍̅ả̜͕̭̻͚̗̖̂ͤl͊ͧͦ ͓̙̗͇̜͇̦͆̉ͣ͌̓l̰͍͇̟ͮ̓̇.̭͓̞̙̭̑ͬ͂
̹̘͇̳̘̥͍̉ͬ͆ͨ̃ͪ̿Ż̲̫͉̭̳̘̐̆ͯ̀A̦͖͉͉̪̥͓̋ͧ͊̏̏ͅ L̝͚͖̘̼͙̙͋ͨ̄͌͗̏̽G̟͇̣̺̬͖̭͂̎ͨͮͣ̾ͤO͇̓ͩ͊ͭͭ̐̆ͅ ̳̳̯̳̹̠!͉̤͉̻̫̻͂̿͛ͬ̃
Ответить
zim 09.12.2012 17:21 # −3
wvxvw 07.12.2012 16:55 # −5
Вот, примерно так это было бы, если стараться сделать понятно, и без магических чисел.
guest 08.12.2012 20:40 # −4
Fai 09.12.2012 08:11 # −3
inkanus-gray 09.12.2012 17:23 # −3
scriptin 09.12.2012 17:49 # −3