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

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

Чашка кофе / VIP урок. Змейка

  • Создаём популярную игру «Змейка».
    На примере простых объектов демонстрация основ ООП.
  • Дата отправки отчёта: 13 февраля 2016 г.
  • Задание выполнено: за 5 час. 00 мин.
  • Чему научился: Научился устанавливать связь между отдельными модулями классов, рисовать клетки динамически, программировать движение змеи, добавлять звук.

  • Что было сложным: Пока сложновато для меня. Слишком много классов. Было трудно обращаться из другого модуля класса в модуль Form1.cs, добавить звуки.

  • Комментарии: Я крайне удивлен, что в объектно-ориентированном языке устроена настолько усложненная связь между отдельными модулями (классами). В частности, для обращения из другого модуля класса в модуль Form1.cs пришлось использовать делегат и целый ряд операторов, которые ссылаются друг на друга. Я понимаю, для чего это сделано – чтобы ни один модуль не мог влиять на другой.
    Но если для меня проблема влияния модулей друг на друга не существует, неужели нельзя каким-то облегчить обращение к методам модуля Form1.cs? Хотя бы с помощью создания экземпляра класса Form1.cs. К сожалению, у меня это не получилось.
    Может быть, кто-нибудь подскажет, как это сделать?
  • Оценка видео-уроку:
Отчёт от 7645 за Чашка кофе / VIP урок. Змейка




Оцени работу

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

6203. Николай (nick27m)
Николай (nick27m)
ответить
→  Denis  # Микроигры / VIP урок. Змейка / 2016-02-14 17:20

не обязательно, чтобы пространство имен было одинаковое, можно его явно указать.


1947. Denis
Denis
ответить
→  Александр Львович  # Микроигры / VIP урок. Змейка / 2016-02-14 16:31

По идее, если класс публичный, и методы его публичные, они доступны и из других модулей. Главное, чтобы был одинаковый namespace


  • Отчёт оценивали:
    6195sergey+1   6925Артём+1   5760Мариша +1   459Сергей Сергеевич+1   8886Михаил Ермишин+1   4467Alcatraz+1   8946inward+1   1Евгений Витольдович+1   6458Илья+1   7645Александр Львович+1   8275Tekashnik+1   5649Максим Лапшинов+1   8889Арман +1   7157muxasio+1   4992Николай+1   6203Николай (nick27m)+1   3664данила+1   2721mikemet+1   8837melrouts+1   1947Denis+1  

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: очень много нового почерпнул в процессе доработки игры
Трудности: найти время на реализацию всего, что задумал =)
как обычно создал уникальную иконку для бинарника и форм помимо базовых, добавил текстуры поворота головы/хвоста размещение змейки на поле случайное змейка поворачивает голову туда куда ползёт, хвост поворачивается за телом в левом-верхнем углу экрана показаны яйца текущей змеиной семьи первый кто вылупился, начинает отъедаться на кроликах, чтобы вырасти и отложить яйца при поедании определённого количества кроликов, появляются дополнительный яйца если змейка врезалась в стену или слопала саму себя, рождается следующая змейка и так до тех пор, пока не окончатся яйца, по окончанию игры будет отображена статистика в правом-верхнем углу показано количество слопаных кроликов текущего змеиного выводка вверху-по центру показан рекорд на протяжении всех попыток игры рекорд сохраняется в файл в папке data при запуске игры, если таковой файл имеется, то загружается рекорд из файла, если же файла нет, то рекорд обнуляется (можно сбросить простым удалением файла) поворачивать голову при движении за 1 такт может только под 90 градусов (защита от того, чтобы не повернуть на 180 и не слопать саму себя) игровая статистика выполнена в игровом стиле, добавлены необходимые текстуры если змея врезалась, но при этом ещё есть яйца, то игра не начинается сначала, появляется новая змейка, а текущий счёт не обнуляется, пока не закончится игра после при этом генерируется новое с новым расположением змейки и кролика добавлена новая форма и активирована как основная, форма самой игры теперь вторична на начальной форме добавлено игровое меню из 3 пунктов: Играть, О игре, Выход пункты меню подсвечиваются в стиле ZX Spectrum при наведении мышью пунктами меню можно управлять и стрелками вверх/вниз на клавиатуре выбор пункта осуществляется клавишей Enter или кликом мыши при выборе пункта "Играть" - открывается форма и начинается игра при выборе пункта "О игре" - открывается профиль на проекте videosharp.info звуковые файлы хранятся в папке data, так же они были конвертированы в форма mp3 для экономии места
Смотреть видеозапись: https://www.youtube.com/watch?v=mhCMxpdP3oA
Научился: Научился разделять проект на несколько кусков, каждый из которых отвечает строго за свою часть, друг другу не мешая, а только дополняя и помогая!
Трудности: Понять перемещение почему происходит от хвоста к голове. Я думаю потому что голову перемещаем в конец массива, замещая её частью "кролика".
УРА! Я наконец-то САМОСТОЯТЕЛЬНО придумал и РЕАЛИЗОВАЛ использование ДЕЛЕГАТА!!! У меня в классе Map() идет подсчет "кроликов", а с помощью делегата я выполняю отображение информации о количестве оставшихся "кроликов" на Форме. Правильное применение? Добавил что нельзя самого себя съедать, нельзя врезаться в стенки. Добавил что при окончании уровня(когда съедены все "кролики", у меня это Сердца, а их опр.количество - 20 + 4 на форме), происходит смена уровня и усложняется тем, что на уровне увеличивается количество стен, которые мешают. Уже после шестого уровня становится довольно-таки сложно, поэтому решил не заморачиваться со скоростью змейки.