Абрамов С.А., Гнездилова Г.Г., Капустина Е.Н., Селюн М.И. Задачи по программированию [pdf]
.pdf+
а |
б |
в |
Рис. 95
901. Изменение указываемой точки (см. задачу 900), или, иначе, управление курсором, может выполняться, например, с клавиатуры: нажатие клавиш управления курсором означает смену указываемой точки и вызывает соответствующее изменение формы или положения курсора. Для курсора-перекрестья изменение указываемой точки сопровождается перемещением горизонтальной или вертикальной прямой, образующей курсор, или обеих прямых одновременно. Изменение указываемой точки для курсора-крестика или курсорастрелки сопровождается соответствующим перемещением курсора.
Реализовать процедуры для управления с клавиатуры курсором каждого из типов, описанных в предыдущей задаче.
902. Выбор нужной точки экрана обычно выполняется подводом курсора к этой точке и нажатием клавиши «ввод». Иногда бывает полезно видеть и предыдущую выбранную точку - последнюю точку, зафиксированную клавишей «ввод», и новую точку, на которую указывает курсор. Для этого используются метод резиновой нити и метод резинового прямоугольника.
а) В методе резиновой нити (рис. 96, а) один конец отрезка зафиксирован и указывает последнюю выбранную точку, второй конец перемещается в соответствии с изменением указываемой точки.
б) В методе резинового прямоугольника (рис. 96, б) один угол прямоугольника зафиксирован и указывает последнюю выбранную точку, а противолежащий угол перемещается в соответствии с изменением указываемой точки.
Реализовать метод резиновой нити и метод резинового прямоугольника.
а |
+ |
б |
+ |
|
|
Рис. 96
903. Построить треугольник по заданным вершинам. Точки экрана, являющиеся вершинами треугольника, указываются с клавиатуры по методу
резиновой нити (см. предыдущую задачу).
904. Построить окружность по двум заданным точкам: центру и одной из точек окружности. Обе точки указываются с клавиатуры по методу резинового прямоугольника (см. задачу 900).
905.Построить прямоугольник по двум заданным точкам: левому верхнему и правому нижнему углам. Обе точки указываются с клавиатуры (см. задачу 900).
906.Построить ломаную по заданным вершинам. Вершины указываются с клавиатуры (см. задачу 900).
907.Составить программу для управления размерами окружности и ее положением на экране. Исходная окружность имеет центр в точке (100, 100) и радиус r = 20. Управление выполняется клавишами:
« > » увеличивает радиус окружности на 5 точек; « < » уменьшает радиус окружности на 5 точек;
клавиши управления курсором вызывают перемещение окружности в соответствующем направлении;
«ввод» завершает работу программы.
908. Составить программу для управления размерами прямоугольника и его положением на экране. Левый верхний угол исходного прямоугольника расположен в точке (50,50), правый нижний - в точке (100, 100). Управление выполняется клавишами:
«> » увеличивает ширину прямоугольника на 5 точек;
«< » уменьшает ширину прямоугольника на 5 точек;
«+ » увеличивает высоту прямоугольника на 5 точек;
«- » уменьшает высоту прямоугольника на 5 точек; клавиши управления курсором вызывают перемещение
прямоугольника в соответствующем направлении; «ввод» завершает работу программы.
909. Составить программу для произвольного рисования на экране. Рисунок - это след курсора, перемещаемого с помощью клавиш управления курсором. Должны обеспечиваться возможность стирания изображения и режим, в котором курсор не оставляет след.
910. Составить программу «электронный калейдоскоп». Построение калейдоскопа выполнять следующим образом. В центре экрана должен быть изображен правильный шестиугольник АВСDЕF, вершины которого соединены с его центром О (рис. 97). Треугольник FOA должен быть рассечен несколькими прямыми, количество и расположение которых выбирается с помощью датчика случайных чисел. Каждая из полученных таким образом частей треугольника FOA должна быть закрашена цветом, номер которого также выбирается с помощью датчика случайных чисел. После этого изображение в каждом следующем треугольнике (при движении по или против часовой стрелки) должно быть получено симметричным отображением изображения, сформированного ранее в каждом предыдущем треугольнике, относительно их общей стороны: так, изображение в треугольнике AOB должно быть получено симметричным отображением изображения, сформированного в треугольнике
относительно стороны OA; изображение в треугольнике BOC должно быть получено симметричным отображением изображения, уже сформированного в треугольнике АОВ, относительно стороны OB и т. д.
Рис. 97
§ 31. Звукогенерация*)
*) В задачах 913, 919, 923-925, 927, 930, 931 этого раздела предполагается, что компьютер (подобно школьному компьютеру «Ямаха») оснащен звукогенератором, имеющим три канала, каждым из которых можно управлять независимо.
911.Воспроизвести до-мажорное трезвучие (до-ми-соль) последовательно, по одной ноте.
912.Воспроизвести:
а) хроматическую гамму; б) гамму указанной тональности.
913. Воспроизвести изображенные на рис. 98 аккорды (все ноты аккорда должны звучать одновременно).
а |
б |
Рис. 98
914.Составить игровую программу «музыкальная шкатулка». Программа должна воспроизводить одну из нескольких популярных мелодий по выбору играющего.
915.Составить программу для игры в музыкальную викторину. Программа должна последовательно воспроизводить несколько популярных мелодий, играющие - угадывать, какая мелодия была проиграна.
916.Составить игровую программу, которая воспроизводит три популярные мелодии, а затем одну из них наоборот: последняя нота мелодии звучит первой, первая - последней. Играющие должны
угадать, ноты какой мелодии были воспроизведены в обратном порядке.
917.Составить программу для воспроизведения мелодии, «сыгранной» на клавиатуре компьютера. Как и при игре на фортепианной клавиатуре, каждой клавише ставится в соответствие некоторая нота; длительность звучания ноты определяется длительностью нажатия клавиши.
918.Составить программу для запоминания и последующего воспроизведения мелодии, «сыгранной на фортепианной клавиатуре». Клавиатура изображается на экране (рис. 99.а). Вначале курсором указывается клавиша, а после этого - обозначение длительности (рис. 99, б).
а |
б |
Рис. 99