Координати на съседни по връх клетки
Здравейте,
Разработвам малка игра.
В конкретния случай имам двумерен char масив 5 на 5,в който имам Х O или нищо в клетките.Въпроса ми е, как по дадени координати на клетка x и y да намеря координатите на всички съседни по връх клетки, в които има символ О и да ги запазя в речник?
Аз лично реших да създам масив 7 на7,с цел да избегна множеството if случаи,при което да намеря координатите в големия масив на тези клетки и да ги преобразувам в координатите на малкия масив преди да ги запазя в речника.
До тук наклепотих ето това:
https://pastebin.com/8LxM2Vaf
Мисля че някъде при променянето на координатите идва проблема-ако някой има решение по друг начин също ще съм много благодарен.
Мерси много,
Аз вчера доста си блъсках главата,и накрая осъзнах че не ми се запазват всички в map, обаче забравих че трябва ключовете да са различни.Това едното,второто в последствие реших да пробвам просто да прескачам случаите ,при които индекса щеше да е извън матрицата,и го направих с continue, подобно на твоя код и пробвах с масив и правилно работеше,но естествено с масив няма да работи защото няма да може да се прави разлика между координати с 0 и просто 0 от незапълване на масива,за това реших да ползвам лист.А за проверката на самата клетка дали има О в себе си не ми е нужна ,вярно че не обясних особено добре ,но там попринцип няма как да има, защото в самата архитектура на програмата има няколко проверки чрез методи, които изключват варианта в самата клетка да има O.А иначе под съседни по връх имам предвид всички клетки ,които имат общ връх с дадената клетка-примерно на numpad-а на стандартна клавиатура,5-цата е съседна по връх с всички останали цифри без 0
А за клас Cell по принцип бих ползвал, но просто програмата не е особено голяма и за това мисля че с лист би било по-оптимално и просто,а ако беше сериозен проект със сигурност щях да ползвам ООП.Иначе благодаря много за помощта! Ако има нещо пак ще питам :).
Да прав си за масива , че ако е на ред или колона 0, то няма как да се разбере дали е дефолтната стойност или индекса. Това може да се реши като инициализираш масивчетата с стойности -1 в началото и тогава няма как да се обърка, но щом си го измислил с лист значи е ок. Супер е че си правиш такива проекти, защото така се учи най-добре и е доста по-интересно. Успех!