Курсы по программированию

Формула программиста
основатель — Волосатов Евгений Витольдович

Явный Сапёр / Волшебный метод

  • На этом уроке мы создадим
    волшебный методcellOpen().
    Именно в нём кроется вся магия логики игры.
  • Дата отправки отчёта: 17 сентября 2016 г.
  • Задание выполнено: за 3 час. 30 мин.
  • Чему научился: повторению пройденного
  • Что было сложным: остановиться допиливать игрушку =)
  • Комментарии: Добавлен рекурсивный метод открывания соседних пустых клеток.
    Добавлено описание фаз игры.
    Добавлен метод открывания всех мин и отображение ложных мин при подрыве.
    Если подорвался на мине, под ней появляется красный фон, открываются все мины, открываются ложные мины и игра переключается в фазу поражения.
    Если открыты все пустые ячейки, игра переключается в фазу победы и помечаются все мины флажками.
    Добавлена заготовка типа сложности, но пока только Профессионал.
    Рефактор инициализации игрового поля перед началом игры.
    Добавлен метод startGame(), вызывается если проиграл или выиграл.
    Добавлен метод updateTitle() для обновления информации в тайтле.
    Добавлен метод cellClickCheck() для проверки фазы игры (если проиграл/выиграл начать игру с нуля).
    Пока идёт игра, обрабатываются нажатия левой и правой клавиш мыши, как только нарвался на мину или победил, обрабатывается только средняя клавиша мыши, запускающая игру с начала.
    Теперь в тайтле отображается сообщение о победе/поражении и информация о том, как начать сначала.
    Добавлен счётчика времени, активируется при первом клике по закрытому полю, останавливается при победе/поражении.
    В тайтле отображается сообщение о победе/поражении и информация о том, как начать сначала.
    Так же в тайтле отображается затраченного времени до победы/поражения, пока игра не начата заново.
  • Оценка видео-уроку:
Отчёт от 10558 за Явный Сапёр / Волшебный метод


Отчёт от 10558 за Явный Сапёр / Волшебный метод




Оцени работу

 
Сохранить страницу:

10558. Иван Воронин
Иван Воронин
ответить
→  Константин  # Явный Сапёр / Волшебный метод / 2016-09-17 13:25

Я рад, что они воодушевляют. это же замечательно! =)


10558. Иван Воронин
Иван Воронин
ответить
→  Евгений Волосатов  # Явный Сапёр / Волшебный метод / 2016-09-17 13:25

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


10558. Иван Воронин
Иван Воронин
ответить
→  Новопашин Владимир  # Явный Сапёр / Волшебный метод / 2016-09-17 13:22

Мой перфекционизм не даёт мне покоя =) это я ещё себя останавливаю в итоге, но как оказалось, выполнил и то, что надо было делать в след уроке, но для след урока тоже нашлось чем заняться =)


7238. Константин
Константин
ответить
→  Иван Воронин  # Явный Сапёр / Волшебный метод / 2016-09-17 11:36

Супер. Иван твои решения воодушевляют!


1. Евгений Волосатов
Евгений Волосатов
ответить
→  Иван Воронин  # Явный Сапёр / Волшебный метод / 2016-09-17 08:48

Иван, я в культурном шоке от твоих отчётов, в которых ты исчерпывающе подробно описываешь проделанную работу, и от самой работы тоже, молодец!


7119. Новопашин Владимир
Новопашин Владимир
ответить
→  Иван Воронин  # Явный Сапёр / Волшебный метод / 2016-09-17 07:04

Колоссальная работа проделана.


10558. Иван Воронин
Иван Воронин
ответить
→  Елена  # Явный Сапёр / Волшебный метод / 2016-09-17 06:02

Спасибо, в последнем уроке оказалось, что всё что сделал тут, надо было делать там, поэтому решил добавить звук =)


4004. Елена
Елена
ответить
→  Иван Воронин  # Явный Сапёр / Волшебный метод / 2016-09-17 05:38

Классная игрушка получилась. Не зря допиливал!


  • Отчёт оценивали:
    10558Иван Воронин+1   4699Сергей Витальевич+1   Посетитель+1   3506Алексей|BrisK|Кривицкий+1   5257Антон+1   4004Елена+1   4992Николай+1   7119Новопашин Владимир+1   11017Владимир Петреченко+1   459Сергей Сергеевич+1   1Евгений Волосатов+1   689Igorenzia+1   10157Кирилл Лебедев+1   7645Александр Львович+1   5649Максим Лапшинов+1   6452Кирилл Шмойлов+1   8065Александр0   7238Константин+1   6391Владимир+1   1232Фомичева Наталья+1   8886Михаил Ермишин+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.
Научился: повторению пройденного
Трудности: остановиться допиливать игрушку =)
Добавлен рекурсивный метод открывания соседних пустых клеток. Добавлено описание фаз игры. Добавлен метод открывания всех мин и отображение ложных мин при подрыве. Если подорвался на мине, под ней появляется красный фон, открываются все мины, открываются ложные мины и игра переключается в фазу поражения. Если открыты все пустые ячейки, игра переключается в фазу победы и помечаются все мины флажками. Добавлена заготовка типа сложности, но пока только Профессионал. Рефактор инициализации игрового поля перед началом игры. Добавлен метод startGame(), вызывается если проиграл или выиграл. Добавлен метод updateTitle() для обновления информации в тайтле. Добавлен метод cellClickCheck() для проверки фазы игры (если проиграл/выиграл начать игру с нуля). Пока идёт игра, обрабатываются нажатия левой и правой клавиш мыши, как только нарвался на мину или победил, обрабатывается только средняя клавиша мыши, запускающая игру с начала. Теперь в тайтле отображается сообщение о победе/поражении и информация о том, как начать сначала. Добавлен счётчика времени, активируется при первом клике по закрытому полю, останавливается при победе/поражении. В тайтле отображается сообщение о победе/поражении и информация о том, как начать сначала. Так же в тайтле отображается затраченного времени до победы/поражения, пока игра не начата заново.