Как написать игру? Это очень сложный и трудный вопрос. Что же попробуем ответить на него с практической точки зрения или стороны, как Вам угодно. Рассмотрим игру сапер (минер). Готовая флешка игры сапер (минер) онлайн взята с сайта - 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 и имеете опыт работы во флеш, то сможете написть сапер (минер) онлайн.