суббота, 16 октября 2010 г.

Осень

Хм, вот и прошел месяц с даты последнего поста.
Что же я успел сделать за это огромное время.


 Что было сделано
1. Добавил кнопку Auto для авторасстановки корабликов на поле игрока. В игре оно наверно мало кому понадобится, но вот тестить мне помогало ))
2. После расстановки кораблей можно смело жать кнопку Done, и переходить к игровому процессу. Появляется игровое поле противника. Правила классические. Попали - стреляем еще раз. Промахнулись, идет переход хода.


Итак, вот ссылка на флешку .
Если честно, я потратил совсем мало времени на разработку. А в основном я читал блоги наших флешеров, смотрел сериалы и занимался своей жизнью. В итоге все что я успел сделать, заняло у меня примерно 8-10 человеко-часов. И это за месяц! OMG!

Теперь по игре. Все планомерно движется к завершению. Осталось решить 2 большие проблемы и одну небольшую.
1. Так и не сделал разворот корабликов, то есть они пока могут располагаться только горизонтально.
2. Надо доработать AI в плане добивания корабликов игрока. Есть определенные идеи в этом направлении, но если бы кто-то подсказал свои идеи, я был бы признателен.
3. Теперь небольшая проблема, это создание окантовки вокруг кораблика противника, при его потоплении.

После завершения этих задач я буду считать что main (главная часть игры) завершен. Дальше будет уже допиливание, такое как, добавить прелоадер (загрузочный экран, на котром вы обычно нажимаете кнопку Play), сделать графику (то есть все с нуля, потому что все что сейчас в игре, это обычные "заглушки"), доработать код до конца (убрать все логические несоответствия, типа продолжения игры, после того как все корабли подбиты, и т.п.).


Ну а теперь общие наблюдения и впечатления накопленные за это время.

Математика. Я и раньше читал и знал, что в программировании, в частности геймдеве требуется определенное знание математики. Теперь я убедился в этом на собственном опыте.
Простейший пример:
имеем оператор dx=((shipCell4a.x-7)/fieldHorSpacing)-1;
В некоторых случаях требуется узнать значение shipCell4a.x если известны все остальные, Знающий человек посмотрит и улыбнется. Но если в школе уроки математики вы прогуливали и не можете в этом случае составить обратную формулу, то вам будет очень и очень тяжело в дальнейшем.
Очень много приходится работать с 2-мерными матрицами.
(matrix[ix][iy]!=6||matrix[ix+1][iy]!=6||matrix[ix+2][iy]!=6||
matrix[ix+3][iy]!=6||matrix[ix-1][iy-1]!=6||matrix[ix][iy-1]!=6||
matrix[ix+1][iy-1]!=6||matrix[ix+2][iy-1]!=6||matrix[ix+3][iy-1]!=6||
matrix[ix+4][iy-1]!=6||matrix[ix+4][iy]!=6||matrix[ix+4][iy+1]!=6||
matrix[ix+3][iy+1]!=6||matrix[ix+2][iy+1]!=6||matrix[ix+1][iy+1]!=6||
matrix[ix][iy+1]!=6||matrix[ix-1][iy+1]!=6||matrix[ix-1][iy]!=6)

Это условие из проверки 4-палубника на соседство с другими кораблями при размещении.
Опять же, если вы не понимаете по какому принципу осуществляется проверка, вам будет крайне тяжело.

1 комментарий:

  1. Стоило бы написать функцию, которая выполняет проверку для одного квадрата, а потом загнать все в цикл).

    ОтветитьУдалить