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

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

Игры со Спрайтами / Домино. Rolling Stones

  • На этом уроке мы сделаем анимацию раскладывания всех плашек домино на столе.
    Для этого напишем метод RollDomino(), а ещё нам потребуется отлавливать
    момент, когда все доминошки уже выложены на стол. Для этого мы добавим
    поле string mode, чтобы в таймере отловить этот момент.
  • Дата отправки отчёта: 3 ноября 2015 г.
  • Задание выполнено: за 1 час. 10 мин.
  • Чему научился: Так как работа анимации привязана к таймеру и не зависит от основного потока управления программы, то научился определять момент завершения анимации, с помощью проверки статуса stopped.
  • Что было сложным: Придумать свой вариант анимации, в моем случае четные строки появляются слева, нечетные справа.
  • Комментарии: В начале урока был разговор об альтернативных вариантах дизайна классов анимаций. На мой взгляд, анимация это некий процесс, действие, которое не привязано к домино. Текущий дизайн не позволяет мне использовать эту иерархию классов для того же самого Аполлона, так как в базовом классе Animate мы явно указали зависимость от SpriteDomino.

    В качестве возможного решения, можно разделить данные от алгоритмов. Данные - это спрайты. Алгоритмы - это анимации. Данные реализовать в виде иерархии классов Sprite. В классе Sprite добавить поле Animate, которое будет означать текущую анимацию, которую можно потом гибко менять по ситуации.

    struct Point {
        int x;
        int y;
    }

    interface Animate {
        void play();
        Point position();
    }

    class AnimateStatic : Animate{}
    class AnimateMove : Animate{}
    class AnimateTurn : Animate{}

    class Sprite {
        Animate animation;
        int x, y;

        public void set_animation(Animate a)
        {
            animation = a;
        }

        public virtual void Draw()
        {
            animation.play();
            Point location = animation.position();
            x = location.x;
            y = location.y;
        }
    }

    class SpriteDomino : Sprite {}
    class SpriteFlower : Sprite {}

    void test()
    {
        Sprite domino = new SpriteDomino();

        domino.set_animation(new AnimateMove());
        domino.Draw();

        domino.set_animation(new AnimateTurn());
        domino.Draw();

        Sprite flower = new SpriteFlower();
        flower.set_animation(new AnimateMove());
        flower.Draw();
    }
  • Оценка видео-уроку:
Отчёт от 7276 за Игры со Спрайтами / Домино. Rolling Stones


Отчёт от 7276 за Игры со Спрайтами / Домино. Rolling Stones




Оцени работу

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

1. Евгений Витольдович
Евгений Витольдович
ответить
→  Ильшат  # Игры со Спрайтами / Домино. Rolling Stones / 2015-11-04 00:07

Ну ты насочинял :)
Думаю, ты сам понял, что придумал.


7276. Ильшат
Ильшат
ответить
→  Оля  # Игры со Спрайтами / Домино. Rolling Stones / 2015-11-03 20:10

Это просто мысли вслух, идея, не законченная реализация. Кроме того, я думаю тут полно синтаксических и прочих ошибок, C# слабо знаю, а приводить законченный код для C++ было бы неуважительно, тут ведь проект, где обучаются на C# ) Спасибо за оценку)


24. Оля
Оля
ответить
→  Ильшат  # Игры со Спрайтами / Домино. Rolling Stones / 2015-11-03 20:03

Ильшат, круто!!! Спасибо за свой код! Молодец! :)


  • Отчёт оценивали:
    24Оля+1   4004Елена+1   6391Владимир+1   3850Григорий+1   6925Артём+1   3664данила+1   4889Валера Луцевич+1   7645Александр Львович+1   7036Рома Дячук0   7788Ксения+1   5419Роман+1   6458Илья+1   1Евгений Витольдович+1   6080annaka+1   6644valerys Nikola0   1901Neverwinter 2+1   7871Мария+1   6987MichGar+1   1947Denis+1   6452Lik_Kirill+1   4395Денис+1   2457kristalic+1  

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Делать анимацию при показе плашек.
Трудности: Ничего сложного, все понятно.
Хороший урок. Все было понятно. Классно получилось с анимацией.
Научился: задавать алгоритм для плавного появления домино
Трудности: устройство метода RollDomino
даже если случайным образом менять значения в методе RollDomino получаются довольно интересные паттерны.