OrionXL

Как написать игру сапер (минер)? Алгоритм игры сапер (минер).

Максим К-Петров @ 16:26 02.02.2010

Как написать игру? Это очень сложный и трудный вопрос. Что же попробуем ответить на него с практической точки зрения или стороны, как Вам угодно. Рассмотрим игру сапер (минер). Готовая флешка игры сапер (минер) онлайн взята с сайта - http://flash-game-online.narod.ru/. Луше всего показывать алгоритм игры с примера :-)

Игра сапер (минер) онлайн

- для установки флажка нажмите на флажок сверху левой кнопкой мышки и перенесите его на клетку, для фиксации нажмите еще раз левой кнопкой мыши
- для отмены флажка необходимо его еще раз перенести его на эту клетку
- для начала новой игры нажмите на иконку смайлика

Алгоритм игры сапер (минер)

Всем Вам прекрасно известно про игру сапер (минер) – правильно ее назвыть сапер, а не минер :-) , которая запускается и работает под Windows. Игра представляет собой прямоугольное поле состоящее из клеток. Среди всехэтих полей расположено какое-то количество мин, при попадании на которые игра оканчивается. Здесь уместно выражение – «Сапер ошибается один раз». Соответственно все клетки скрыты и игрок предварительно не знает, под какой клеткой что. После попадания на пустую клетку, где нет мины. Игрок в минера увидит информацию в форме цифр, сколько мин находится рядом. Обладая подобной информацией игрок может просчитать расположение ближайших бомб или отсутствие таковых. Игра оканчивается тогда, когда пользователь находит все мины. Вот в этом и заключен алгоритм игры сапер (минер).

Функциональная структура

Реализация игры сапер следующая:
1. Подготовка, на этом этапе нам необходимо сформировать поле и расставить мины. Следующий момент подготовки – расставить цифры на поле, информирующие нас о количестве бомб.
2. Сам процесс игры. Игрок выбирает клетку. После выбора анализируем, значение проверяем на результат – конец игры, продолжить или выигрыш.

Программная реализация

Рассмотрим программную реализацию. Пока в общих словах, дальше попробуем добавить более подробный пример и коды :-)

Сгенерировать мины на поле можно с помощью следующего псевдо-кода:

int n,m; // размеры поля mxn
int Field[nxm]; // само поле
// расставим мины на поле
for(i=0; i<num_mines;i++) Field[rand()%nxm]=-1;// Установим информацию на пустых клетках о количестве мин находящихся рядом
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
mine_counter=0;
if(Field[i+m*j-1]==-1)mine_counter++; // есть мина слева?
if(Field[i+m*j+1]==-1)mine_counter++; // есть мина справа?
if(Field[i+m*(j-1)]==-1)mine_counter++; // есть мина вверху?
if(Field[i+m*(j+1)]==-1)mine_counter++; // есть мина внизу относительно текущей клетки?
// так же пройдем по краям
if(Field[i+m*(j+1)+1]==-1)mine_counter++;
if(Field[i+m*(j-1)-1]==-1)mine_counter++;
if(Field[i+m*(j+1)-1]==-1)mine_counter++;
if(Field[i+m*(j-1)+1]==-1)mine_counter++;
//  +---------+------------+---------+
//  | клетка1 |   клетка2  | клетка3 |
//  | клетка4 | текущ. поз | клетка6 |
//  | клетка7 |   клетка8  | клетка9 |
//  +---------+------------+---------+
Field[i]=mine_counter; // сохраним о количестве мин
}

Проверить куда нажали кнопкой можно так.

int pos; // входящая позиция от мышки
if(Field[pos]==-1)
user_message="you loose, try again"; // проиграли

Вот собственно и все. Чтобы игрушка сапер (минер) получилась красочной, необходимо добавить чуточку графики. Об этом чуть позже...
К стати, если Вы знаете язык action script и имеете опыт работы во флеш, то сможете написть сапер (минер) онлайн.

Комментариев нет

Комментариев нет.

RSS-лента комментариев к этой записи.

Извините, обсуждение на данный момент закрыто.

алгоритмы, методы, программы - OrionXL