На этом уроке мы создадим волшебный метод cellOpen(). Именно в нём кроется вся магия логики игры.
Дата отправки отчёта:
13 октября 2019 г.
Задание выполнено: за
1 час. 16 мин.
Чему научился:
рекурсия начинается с операторов прекращения рекурсии, затем в цикле перебирает ячейки справа и слева на единичку, в подцикле ячейки сверху и снизу по одной, если не вышли за пределы игрового поля, то открывает ячейки, вызывая саму себя со сдвигом на единицу снова. Так и открывает, пока не сработает останов, прописанный в начале метода Если его не прописать, этот останов, то конца и края работе рекурсивной функции не будет никогда )
Что было сложным:
Понять, почему при увеличении переменной N_MINES не растет ожидаемо количество мин на игровом поле. Вопрос все еще открытый, советы приветствуются.
Оценка видео-уроку:
Оцени работу
Сохранить страницу:
Отчёт оценивали: 791. Валерий Жданов+122758. Денис+118842. Степан+122875. Леонид+17119. Новопашин Владимир+1
Начинаем практику по языку C#
Чтобы стать хорошим программистом — нужно писать программы.
На нашем сайте очень много практических упражнений.
После заполнения формы ты будешь подписан на рассылку
«C# Вебинары и Видеоуроки»,
у тебя появится доступ к видеоурокам и консольным задачам.
Несколько раз в неделю тебе будут приходить письма —
приглашения на вебинары, информация об акциях и скидках,
полезная информация по C#.
Научился: Išmokau ir supratau kaip reikia žaisti minesweeper, pilnai supratau visus programos elementus ir komponentus. Трудности: Nieko, viskas buvo lengva, nes prieš tai viskas buvo gerai paaiškinta. lange NR1. programa kuri išveda "" :)!!!!YOU WIN GAME!!!! :) "", kai minesCount ==0, bet galima kiekviena karta kai su palite pastatai ant langelio veliava, minesCount-- mažėja vienetu, todėl galima neatverti ne vieno lango ir iškart pastatyti veliavu kiek yra N_MINES ir tu laimejai.
lange NR2. žaidimas baigtas kai paspaudi ant minos.
lange NR3. žaidimo eigoje vaizduojamas minu skaičius.
iki lango numeris 4 yra keli žaidimo trukumai. Pirmas kai pastatai veliavą ir paspaudi ant skaičiaus atsidaro aplink jo laukai, kartai atsidaro miną, nes veliava pastatyta ne tinkamoje vietoje, bet žaidimas tesiasi ir neatsiveria visos minos.
antras minusas laimėjus ar pralaimėjus žaidimą, ir statusvbar išvedus tekstus, su pelite galima atidaryneti laukus ir statyti veliavas.
trečias minusas kad galima pristatyti veliavų ir taip laimeti, bet neatvesus jokio lauko.
Aš šituos trukumus pašalinau ir langai NR4 ir NR5 gerai funkcianuoja.
Kad tai butu pašalinta aš padariau programoje šiuos pakeitimus
sukuriau kintamaji
private int opencell =0;
metoduose leftButton() ir rightButton() parašiau šias kodo eilutes
if(minesCount==0)
opencell = OpenTopCell();
if(( N_ROWS * N_COLS - opencell==N_MINES)) {
result = 1;
statusbar.setText(" :)!!!!YOU WIN GAME!!!! :) ");
}
metode openNear() parašiau:
if (top[mx][my] == IMG_OPEN) {
if (map[mx][my] == IMG_MINE)
openAllMines();
}
metode openAllMines() parašiau
result = -1;
statusbar.setText("GAME OVER");
sukuriau metoda OpenTopCell
public int OpenTopCell()// Metodas skaičiuojantis atvertus laukus
{
int t=0;
for(int y = 0; y < N_ROWS; y++)
for(int x = 0; x < N_COLS; x++)
if(top [x][y]== IMG_OPEN)
t++;
return t;
}
ir į mousePressed() parašiau kiekvienam mygtukui:
if(result!=1 && result!=-1)
pakeitimai pavaizduoti faile NR2.