Все статьи / Комплексные задачи. Котик следует за мышкой

В этой практике вы начнёте по шагам решать комплексные задачи, двигаясь от математической модели и псевдокода к готовой программе


Выполнять задания надо в парах. Это также называется парным программированием.

Не все программисты умеют правильно заниматься парным программированием. О том, как это делать неправильно, расскажет ролик от Atlassian:

Инструкция к парному программированию

Мы будем выполнять парное программирование иначе:

  1. Сначала вы подготавливаете решение вдвоём:
    • Если задача требует моделирования, вы вдвоём составляете модель и рисуете её в свободной форме (если опыта мало, лучше рисовать на листочке и выписывать все формулы там же)
    • Если же стоит цель разобраться с возможностями библиотеки, вы изучаете документацию и примеры в документации
  2. Затем один из вас пишет псевдокод готовой программы
  3. Наконец, вы кодируете решение по очереди
    • например, можно по очереди писать по одной функции
    • пока один программист пишет, другой должен внимательно следить и аккуратно поправлять его

Задание workshop1.1

Нарисуйте стрелку такую же, какая показана на скриншоте ниже. В этом вам помогут методы Shape::setOutlineColor и sf::Shape::setOutlineThickness, изучите их документацию.

Скриншот

Затем закрасьте фон окна белым цветом. Используйте для этого необязательный параметр метода RenderWindow::clear

Задание workshop1.2

Заставьте стрелку двигаться к текущей позиции курсора мыши, поворачиваясь в сторону курсора. Скорость движения стрелки должна быть ограничена величиной 20 пикселей в секунду, скорость поворота стрелки ограничена величиной 90° в секунду.

Вы должны делать задачу последовательно:

  1. Зарисовать на листочке подробную иллюстрацию решения вместе с формулами
  2. Написать псевдокод на уровне “функции с комментариями вместо инструкций” и сохранить псевдокод в отдельном файле
  3. Затем выполнить кодирование, то есть реализовать тела всех функций

Изучить поведение можете с помощью Интерактивного пример на JavaScript

Справиться с задачей вам поможет слайд из лекции:

Слайд

Задание workshop1.3

С помощью руководства Sprites and textures, а также документации класса sf::Sprite нарисуйте на белом фоне кота. Используйте спрайт, представленный ниже.

Спрайт

Вы можете открыть контекстное меню над картинкой и выбрать пункт Сохранить изображение как.... Так вы получите изображение, которое затем можно загрузить в спрайт. Будьте внимательны, указывая путь к изображению, и не используйте относительный путь — лучше скопировать изображение в каталог программы.

Задание workshop1.4

Требуется разработать программу, в которой кот будет двигаться к лазерной указке, поворачиваясь зеркально строго влево или вправо (т.е. 0° либо 180°) в направлении указки. Отразить кота зеркально можно с помощью метода Sprite::setScale, передав параметры (-1, 1) в качестве нового масштаба спрайта; вернуть обратно можно с помощью параметров (1, 1). Позиция лазерной указки выбирается пользователем путём клика мышью.

Иллюстрация

Спрайт точки попадания лазерной указки:

Спрайт

Вы должны делать задачу последовательно:

  1. Зарисовать на листочке подробную иллюстрацию решения вместе с формулами
  2. Написать псевдокод на уровне “функции с комментариями вместо инструкций” и сохранить псевдокод в отдельном файле
  3. Затем выполнить кодирование, то есть реализовать тела всех функций