В погоне
Покуда с ячейками мы разобрались, давайте двигаться дальше. Нужно как-то увязать ячейки с игровым полем. Когда я об этом думаю, мне представляется свойство типа Dictionary<Coordinate, Cell> у класса Field. То есть словарь ключ-значение, где ключём будут координаты, а значением — сама ячейка.
Этот тип описан в .net framework’е, и потому такое моё представление поля уже становится в некотором смысле платформозависимым. В общем, пришла, видимо, пора подумать о платформе, на которой всё это дело будет реализовываться. И этот вопрос я решу быстро. Дело в том, что я — разработчик на C#. Казалось бы, выбор сделан? Что знаешь, на том и пиши? Возможно. Но мне, конечно же, хотелось бы, чтобы готовую игру смогли скачать как можно больше людей. Ведь коль скоро мы говорим о бизнесе, именно люди приносят деньги. А людей больше, пожалуй, всё-таки не на платформе от Microsoft. Короче говоря, хорошо бы попасть в iTunes App Store, то есть написать приложение под iOS, совершенно незнакомую мне платформу на вражьем этом Objective-C, о котором я и слышал то всего половиной уха. С другой стороны, Microsoft Marketplace тоже существует и им, надо думать, тоже кто-нибудь да пользуется. Я даже поискал конкретные цифры:
iOS
- Количество проданных iOS устройств: 160 миллионов (на середину января нынешнего,
2011-го года, вот ссылка) - Количество приложений: 400 000
- Разработчиков: 43 185 (ссылка)
WindowsPhone 7
- Количество проданных WindowsPhone7 устройств: 2 миллиона
- Программ в Marketplace: 6 500
- Разработчиков: 24 000 (ссылка)
Как говорится, почувствуйте разницу.
План действий я всё-таки выбираю такой. Разрабатывать игру на .net’е под WindowsPhone7, поскольку эти технологии мне уже знакомы. А паралелльно изучать iOS и Objective-C. Думается мне, переносить существующее приложение на другую, пусть и малознакомую платформу будет проще, чем сразу писать под неё. Ну и, конечно, потом будет интересно сравнить результаты.
А теперь вернусь обратно к своим баранам в поле. Или ячейкам. Надо придумать реализацию координат и самого поля. Итак, поле содержит словарь с ячейками, конструктор, инициализирующий этот словарь (принимать параметрами он будет размеры поля и количество бомб) и метод, открывающий ячейку по её координате.

Написав это, я открыл свой проект в Visual Studio и начал описывать классы координат и алгоритм генерации поля... Но очень скоро запутался, пытаясь при генерации абстрагироваться от конкретной реализации координат. Как только как будто разобрался... рухнула студия. Ключевые изменения пропали. А ещё я подумал, что в день по чайной ложке — это убогий подход. Так можно целый год писать этого несчастного сапёра, которого я выбрал как умышленно простую задачу. Когда я смотрел фильм «В погоне за счастьем» с Уиллом Смитом в главной роли, я представлял себя на его месте. Но мои обстоятельства в разы лучше. Практически тепличные. И это странно: когда как будто бы всё есть, но хочется большего... просто чтобы было — это дурацкая мотивация. Это не работает. Когда нужно сделать что-то во что бы то ни стало, чтобы выжить — это другой разговор. Хоть умышленно загоняй себя в невыносимые рамки...
Как изменить подход?
Сейчас третий час ночи и я отправляюсь спать.
03.03.2011