Задачи по программированию. Проекты с GUI
- Конвертер валют. Пользователь вводит сумму, выбирает две валюты и получает эквивалент во второй валюте.
- Бег. Пользователь указывает количество км за каждый день в течение некоторого периода времени. Программа находит общий пробег, среднее значение в день, наименьшее и наибольшее значения.
- Средняя температура. Пользователь вводит данные о температуре за некоторый период времени. Программа находит среднее значение.
- Пользователь указывает цвет и радиус круга. Программа показывает прямоугольник, в котором круг данного размера и цвета движется горизонтально, меняя направление при касании границы.
- Создать калькулятор, аналогичный калькулятору Windows (вид: а) обычный; б) инженерный).
- Изобразить на форме круг, который то удаляется, то приближается. Параметры анимации изменяются пользователем (цвет, скорость, размер, расположение)
- Изобразить на форме отрезок, который вращается вокруг своей концевой точки. Вокруг произвольной своей точки. Вокруг произвольной точки плоскости.
- Изобразить на форме отрезок, цвет которого плавно меняется.
- Изобразить треугольник, который вращается вокруг своего центра тяжести.
- Создать форму, на которой набранный пользователем текст. Начинает постепенно постепенно появляться, а затем двигаться по вертикали, меняя направление при достижении границ формы.
- Создать приложение, в котором моделируется процесс бросания тела под данным углом к горизонту. Пользователь задает начальные данные и видит движение тела вместе с траекторией.
- Создать приложение “Ежедневник”. Возможности: создание записей двух видов: задача и заметка. Для задачи указывается срок выполнения. Заметка относится к одной из категорий. Список категорий можно изменять. Для заметки указываются метки, характеризующие тему заметку. Добавить поиск по меткам и содержанию заметок/задач в рамках выбранных категорий.
- Создать приложение “Каталог книг”. Пользователь добавляет книгу в каталог. Сам файл копируется из указанной директории в папку каталога. При добавлении указывается категория, статус (прочитана, прочитать, в процессе чтения (номер страницы)), рейтинг (если прочитана). Добавить возможность поиска и сортировки по каждому из параметров описания. Добавить возможность добавления к данной книге описания и цитат из книг. Добавить возможность поиска похожих книг в каталоге.
- Создать приложение, которое позволяет загружать текстовый файл с html-кодом или css-кодом и выводить список всех ссылок, встречающихся в этом коде. Ссылки должны быть без повторов, однако с указанием количества повторений. Добавить возможность выбора ссылки и замены на другую по всему файлу. Добавить возможность создания списка запрещенных сайтов. Все ссылки, попадающие в черный список, можно автоматически заменить на [запрещенная ссылка].
- Напишите программу, способную высчитывать тригонометрические функции sin, cos, tg заданных углов от 0 до 90º. Создайте интерфейс программы: в таблице 3 поля – «угол в градусах», «угол в радианах» и «результат», три кнопки – «sin», «cos», «tg» – выполняют действия и выводят результат в третье поле таблицы. Данные углов выбрать с шагом 5º. В таблице использовать выравнивание элементов справа.
- Напишите программу, выполняющую сортировку случайным образом полученного массива 3 х 10 методами «пузырька» и «вставок». Создайте интерфейс программы: в таблице 3х10 числа получить случайным образом по сигналу от предусмотренной кнопки; обеспечить выбор метода сортировки; сортировку чисел в столбце начинать по клику левой кнопки мыши в этом столбце; предусмотреть вывод количества сравнений.
- Напишите программу, способную определять следующие параметры массива 7х7: максимальное и минимальное значение, их местоположение, сумму значений элементов массива и среднее арифметическое значение. Создайте интерфейс программы: в таблице 7х7 числа получить случайным образом по сигналу от предусмотренной кнопки; кнопки «Max» и «Min» должны выполнять поиск соответствующих значений и их местоположение, которое должно быть подсвечено цветом в таблице; кнопки «Сумма» и «СА» должны высчитывать указанные значения и выводить результат в поля надписи
- Напишите программу, выполняющую операции сложения, вычитания и умножения матриц 3х3. Создайте интерфейс программы: в 2-х таблицах 3х3 числа получить случайным образом по сигналу от предусмотренной кнопки; кнопки «Сумма», «Разность» и «Произведение» должны выполнять соответствующие действия над массивами, результат должен быть выведен в третий массив, в котором подсветить цветом максимальное и минимальное значение.
- Напишите программу, которая находит в массиве 15х15 числа являющиеся степенью 2 и 3. Создайте интерфейс программы: в таблице 15х15 числа получить случайным образом; создать кнопки выполняемых действий; результат действий подсвечивать цветом; в поле надписи выводить количество найденных чисел.
- Создать приложение, которое позволяет добавлять указанному изображению заданную надпись (шрифт, размер, цвет, координаты указывает пользователь). Добавить возможность автоматического добавления надписи ко всем изображениям заданного формата в выбранной директории (с учетом вложенных папок).
- Создать игру “Капли дождя“. Пользователь должен успеть ввести ответ задачи до того, как капля дождя достигнет нижней части области. Программа предназначена для закрепления навыков арифметических вычислений. Условия задач должны генерироваться так, что сложность постепенно возрастала (но только если пользователь не ошибается). При ошибках пользователя примеры не усложняются. Ответы задач могут быть отрицательными. Скорость падения и количество капель увеличиваются. Кроме четырех арифметических действий добавить работу с модулем, с корнями, линейные уравнения. Темы задач выбираются в настройках. Добавить возможность вести статистику пользователя.
- Создать игру “Matrix Memory“. Пользователь запоминает расположение цветных квадратов в матрице и затем пытается восстановить расположение. Сложность постепенно возрастает. В случае неудачи следующая попытка либо содержит меньшее число цветных квадратов, либо состоит из более простого расположения. Программа должна допускать регистрацию пользователя, сохранение текущего состояния игры, ведение статистики. Большинство уровней должны генерироваться случайно, но с заданными ограничениями, чтобы уровни содержали некоторую закономерность в узоре.
- Логическая игра “Крестики-нолики” на неограниченном поле. Приложение является реализацией известной логической игры “Крестики-нолики”. В данной реализации предусматривается игра двух игроков на неограниченном поле. Цель игры построить непрерывную линию из пяти или более фишек (крестиков или ноликов) по горизонтали, вертикали или диагонали.
Возможны два режима игры, когда выигрывает тот, кто первым построит линию, или кто больше наберет очков за определенное количество времени. Во втором случае количество построенных линий не ограничено, каждая фишка в линии приносит игроку одно очко. Приложение должно обеспечивать начало новой игры на чистом поле, а также проверку соответствия действий игроков правилам игры и условия окончания игры. Роль одного из игроков (по выбору пользователя) может выполнять компьютер. Для исключения возможности образования изолированных игр на одном поле и неоправданного увеличения размера поля следует установить максимально допустимое расстояние (не более пяти) от уже существующих фишек до новой, размещаемой игроком.• начало игры на чистом поле, сброс предыдущей игры;
• выбор противника (человек, компьютер) (если применимо);
• сохранение текущей игры в любой момент игры в файл, восстановление
состояния игры из файла;
• отмену ходов;
• контроль правильности ходов игрока(ов);
• определение конца игры, отслеживание патовых ситуаций;
• возможность задания произвольного размера поля (если применимо);
• индикацию текущего счета (если применимо);
• ведение списка чемпионов для каждого размера поля; - Игра Жизнь
Правила игры. Экран разделен на клетки. На каждой клетке поля живет, рождается или погибает животное. Это зависит от условий «Среды», т. е. от того, сколько соседей у него на ближайших восьми клетках (четырех по сторонам и четырех по углам).
Действуют следующие правила существования животных:
1. Каждое животное, у которого два или три соседа, живет и сохраняется до следующего поколения.
2. Животное погибает, если у него более нежели три соседа (от недостатка места), совсем нет соседей или только один сосед (от одиночества).
3. Когда рядом с какой-нибудь клеткой есть три животных (соседа), то на этой клетке рождается новое животное.
4. Животные погибают и рождаются одновременно. Они образуют одно поколение. За один ход в игре в соответствии с упомянутыми правилами осуществляется переход от одного поколения к другому.
Рекомендуется следующий способ осуществления ходов:
1) начать с желаемой конфигурации (колонии животных;
2) найти всех животных, которые должны погибнуть;
3) найти все свободные клетки, на которых должно родиться животное;
4) удалить с доски всех погибших животных, а новорожденных отобразить. Выполнив эти операции, т. е. после первого хода, получим второе поколение. Аналогичным образом происходит и все остальные ходы в игре. Так получаются все новые поколения.
Напишите программу, моделирующую колонию «Жизни». Исходными данными служит начальное расположение животных (заданное пользователем или получаемое случайно – реализовать оба случая), а в качестве результата нужно получить вид сверху в графическом режиме всех поколений колонии.
Некоторые колонии разрастаются невероятным образом при весьма скромных начальных размерах. Есть другие колонии, которые медленно перемещаются по пустыне, переходя на все новые и новые территории. В программе нельзя определить бесконечно большое поле. Должно хватать поля некоторой известной величины m*n. Если эволюция достигает границ поля, то эволюция прерывается или устраняются границы поля: соединяются любые два противоположных края поля. - Солнечная система
Объектное построение астрономической модели солнечной системы. Модель описывает Солнце и планеты Меркурий, Венеру, Землю, Марс и их спутники. Программа работает следующим образом: на экране изображается Солнце и планеты со своими спутниками располагаются вокруг Солнца на своих астрономических местах. Планеты начинают вращаться вокруг Солнца по своим орбитам с правильным соотношением скоростей. В то же время спутники начинают вращаться вокруг своих планет по траекториям, складывающимся из двух вращательных движений: вращение планеты вокруг Солнца и вращение спутника вокруг планеты. Для определения объектов необходимо описать класс Tbody. Планеты и спутники так же, как и Солнце, – это небесные тела. Их надо определить, как объекты-наследники от Tbody. Объекты-наследники должны содержать поля: 1) текущие координаты тела; 2) центр, вокруг которого тело вращается; 3) радиус орбиты; 4) список спутников; 5) скорость вращения; 6) размер; 7) цвет тела.
Вращение как планет, так и спутников вокруг центрального тела происходит по одним и тем же законом природы. Для планет телом, вокруг которого они вращаются, является Солнце, а для каждого спутника некоторая планета. Перемещение каждого тела вычисляется в виде относительной величины, зависящей от значения его скорости. При каждом изменении угла вычисляются новые координаты положения тела. Каждая планета, начав вращаться должна запустить соответствующий метод вращения для своих спутников. Относительные параметры для планет и спутников:Название Радиус Скорость Размер Меркурмй 58 0.416 3 Венера 108 0.416 5 Земля 150 0.1 6 Марс 228 0.053 4 Луна 15 1.3 2 Фобос 7 114.4 1 Деймос 12 30.4 1 - Множество Мандельброта – H
В Книге рекордов Гиннеса самым сложным математическим объектом названо множество Мандельброта. Это плоское множество является ярким примером фрактала. Фракталы – это математические объекты, имеющие дробную размерность в отличие от традиционных геометрических фигур целой размерности (например, одномерных линий или двухмерных поверхностей). Фракталы – это нечто больше, чем математический курьез. Они дают чрезвычайно компактный способ описания объектов и процессов. Многие структуры обладают фундаментальным свойством геометрической регулярности, известной как инвариантность по отношению к масштабу, или самоподобие. Если рассматривать эти объекты в различном масштабе, то постоянно обнаруживаются одни и те же фундаментальные элементы. Эти повторяющиеся закономерности определяют дробную, или фрактальную, размерность структуры. В природе все фрактально: облака, изрезанная линия побережья, кромка листа, нервные и кровяные сосуды и т. д.
Множество Мандельброта описывает поведение динамического процесса, определенного на комплексных числах формулой:
z(n+1) = z(n)*z(n) + c. (1)
Алгоритм построения окрашенного в черный цвет множества Мандельброта с окружением, раскрашенным в разные цвета состоит в следующем. Для произвольного комплексного числа c = x + i*y положим z(0) = 0 и устроим итерацию по формуле 1. Максимальное число итераций Max =150. Для последовательности z(n) имеются две возможности:
1. Числа становятся все большими и большими, стремясь к бесконечности.
2. Точки находятся и продолжают оставаться на расстоянии меньшим 2 от 0. Множество Мандельброта – это множество тех чисел c, для которых выполняется вторая возможность. Граница множества сильно изрезанна. Она напоминает линию морского берега, многие естественные границы, которые становятся тем длиннее, чем более мелкий масштаб используется для измерения. Одной из характерных особенностей этой границы является её самоподобие. Если взглянуть на любой из её поворотов или заливов, то можно обнаружить, что одна и та же форма встречается в различных местах и имеет разные размеры.
В программе каждая точка (пиксел) экрана представляет соответствующее комплексное число c. Если число Max увеличить, то граница множества определится точнее, так как для некоторых точек c последовательности z(n) уйдут на бесконечность. Все точки множества Мандельброта отметим черным цветом. Для всех других точек c соответствующая последовательность z(n) уходит на бесконечность, причем скорость ухода оценивается соответствующим цветом точки c, пропорциональным количеству итераций, достаточным для того, чтобы z(n)*z(n) стало большим 4. Всего используется цветовая палитра из 16 цветов и так как
Max-1 значительно больше 15, то цвета периодически повторяются.
Множество Мандельброта строится в прямоугольнике с координатами xmin= -2.25, xmax=0.75, ymin=-1.5, ymax=1.5 (т. е. пиксел с координатами (0,0) представляет комплексное число -2.25 + i*1.5). Программа должна позволять пользователю менять координаты вершин прямоугольника, чтобы можно было изобразить в увеличенном виде отдельные фрагменты множества Мандельброта. Так как множество Мандельброта строится достаточно медленно, то необходимо предусмотреть возможность записи создаваемого изображения в файл. Такой файл хранит цвета всех пикселей экрана. Необходимо предусмотреть функцию извлечения предварительно созданного изображения из файла и отображения его на экране. Необходимо предусмотреть динамическое изменение цветовой палитры для получения изображения множества Мандельброта. - Перенос слов
Разбиение русского слова на части для переноса с одной строки на другую с большой вероятностью выполняются правильно, если пользоваться следующими приемами:
1) Две идущие подряд гласные можно разделить, если первой из них предшествует согласная, а за второй идет хотя бы одна буква (буква й при этом рассматривается вместе с предшествующей гласной как единое целое).
2) Две идущие подряд согласные можно разделить, если первой из них предшествует гласная, а в той части слова, которая идет за второй согласной, имеется хотя бы одна гласная (буквы ь, ъ вместе с предшествующей согласной рассматриваются как единое целое).
3) Если не удается применить пункты 1), 2), то следует попытаться разбить слово так, чтобы первая часть содержала более чем одну букву и оканчивалась на гласную, а вторая содержала хотя бы одну гласную. Вероятность правильного разбиения увеличивается, если предварительно воспользоваться неполным списком приставок, содержащих гласные, и попытаться прежде всего выделить из слова такую приставку.
Реализовать простейший текстовый редактор с возможностью выполнения форматирования русского текста его строк по длине с помощью переноса слов. - Мультфильм
В рисованных мультфильмах иллюзия движения создается последовательной сменой кадров, каждый из которых фиксирует очередное положение движущегося объекта.
Необходимо реализовать:
1) редактор для проектирования объектов и их действий из заданного списка;
2) мультфильм необходимо записывать в файл (реализовать свой собственный формат файла);
3) Проигрыватель мультфильма, который использует файл реализованный в редакторе. - Морской бой
На поле 10 на 10 позиций стоят невидимые вражеские корабли: 4 корабля по одной клетке, три корабля по 2 клетки, 2 корабля по 3 клетки, 1 корабль в 4 клетки. Позиции указываются русскими буквами от А до К (по строкам) и цифрами от 1 до 10 (по столбцам). Конфигурация и положение кораблей на поле выбираются с помощью датчика случайных чисел. Если клетка корабля угадана играющим верно, она отмечается крестиком; в противном случае точкой.
Написать программу для игры в морской бой игрока с компьютером. Программа должна позволять расставлять корабли на поле 10×10, контролировать правильность их расстановки, давать противнику возможность
поочередно делать ходы и выдавать соответствующие информационные сообщения. Программа должна анализировать предыдущие ходы и следующий делать на основе проведенного анализа. Для игры компьютера реализовать стратегию в виде дерева. Корабли реализовать в виде объектов. - Инженерный калькулятор
Написать программу, которая бы вычисляла арифметическое выражение, введенное с клавиатуры. Арифметическое выражение может содержать числа (в том числе и в экспоненциальной форме, например, 1.2е-10), символы арифметических операций, скобки, функции синуса, косинуса, тангенса, логарифма, экспоненты, предусмотреть возможности редактора ввода арифметического выражения для ввода степени и квадратного корня - Баллистическая игра
В разных концах экрана расположены несколько баллист, принадлежащие разным войскам. Игроки ходят по очереди. Ход заключается в выборе массы камня для баллисты, начальной скорости камня и угла между вектором начальной скорости и горизонтом. По этим данным программа должна произвести расчет траектории полета камня и смоделировать полет на экране.
После первого игрока ходит второй и т.д. Игра заканчивается, когда войска одного из игроков выбьют все баллисты противника. В программе реализовать графический интерфейс с реализацией объектов: игроков, камней различных размеров. Реализовать функцию расстановки войск (баллист, камней). Предусмотреть возможность выдачи призов (камней) при успешном попадании в баллисту противника. - Программа для алгебраических вычислений
Объекты – это многочлены от нескольких переменных, представленных в символьном виде с вещественными коэффициентами. Многочлены должны изображаться как арифметические выражения, так умножение изображается знаком *, а возведение в степень – знаком ^. Для манипуляций с многочленами нужны некоторые команды, чтобы пользователь мог получать ответы на вопросы, на которые не удается ответить с помощью традиционных языков программирования. Для понадобится обозначать многочлены идентификаторами. Команды выполняют некоторые операции над своими операндами и помещают результат в качестве значения некоторого имени многочлена. Список команд.
1. Ввести многочлен и записать его под некоторым именем.
2. Образовать алгебраическую сумму (разность, произведение) двух многочленов и записать полученный многочлен под некоторым именем.
3. Возвести данный многочлен в целую степень и результат записать под некоторым именем.
4. Заменить каждое вхождение некоторой переменной в многочлене на данный многочлен и результат записать под некоторым именем.
5. Вычислить производную многочлена по переменной и результат записать под некоторым именем.
6. Напечатать данный многочлен.
Многочлен представлять в виде суммы членов, включающих только операции умножения и возведения в степень. В каждом таком одночлене все константы перемножены и образуют числовой коэффициент (первый сомножитель), переменные упорядочены по алфавиту и все степени одной переменной объединены так, что каждая переменная встречается лишь один раз. Следует приводить подобные члены, т. е. объединять одночлены, имеющие одинаковые наборы переменных и степеней, с соответствующим изменением коэффициентов. Для представления многочленов в памяти необходимо использовать списковые структуры. - Волчий остров
Волчий остров размером 20×20 заселен дикими кроликами, волками и волчицами. Имеется по нескольку представителей каждого вида. Кролики довольно глупы: в каждый момент времени они с одинаковой вероятностью 1/9 передвигаются в один из восьми соседних квадратов (за исключением участков, ограниченных береговой линией) или просто сидят неподвижно. Каждый кролик с вероятностью 0,2 превращается в двух кроликов. Каждая волчица передвигается случайным образом, пока в одном из соседних восьми квадратов не окажется кролик, за которым она охотится. Если волчица и кролик оказываются в одном квадрате, волчица съедает кролика и получает одно очко. В противном случае она теряет 0,1 очка. Волки и волчицы с нулевым количеством очков умирают.
В начальный момент времени все волки и волчицы имеют 1 очко. Волк ведет себя подобно волчице до тех пор, пока в соседних квадратах не исчезнут все кролики; тогда, если волчица находится в одном из восьми близлежащих квадратов, волк гонится за ней. Если волк и волчица окажутся в одном квадрате и там нет кролика, которого нужно съесть, они производят потомство случайного пола.
Запрограммировать предполагаемую экологическую модель популяции в течение некоторого периода времени - Карточная игра
Составить программу, которая раздает игральные карты заданному количеству игроков (одним из игроков является человек, за остальных играет компьютер) и моделирует игру в «дурака». Компьютерная программа играет случайным образом, без анализа уже вышедших карт. - Крестики-нолики
Составить программу, позволяющую играть на бесконечном поле в «крестики- нолики»:
а) игроку с компьютером;
б) двум игрокам.
Если в качестве игрока выступает компьютер, программа делает первый ход. Делая очередной ход, программа анализирует ситуацию, рассчитывая возможные ходы противника вперед на 1 — 2 хода, и в результате проведенного анализа поступает оптимальным образом. Стратегию компьютера реализовать в виде дерева. Предусмотреть возможность рисования крестика или нолика (в зависимости первого хода) пользователем и его распознавание программой. - Быки и коровы
Составить программу, позволяющую играть в «Быки и коровы»:
а) игроку с компьютером;
б) двум игрокам.
Суть игры в следующем. Каждый из противников задумывает четырехзначное число, все цифры которого различны (первая цифра числа отлична от нуля). Необходимо разгадать задуманное число. Выигрывает тот, кто отгадает первый.
Противники по очереди называют друг другу числа и сообщают о количестве «быков» и «коров» в названном числе («бык» — цифра есть в записи задуманного числа и стоит в той же позиции, что и в задуманном числе; «корова» — цифра есть в записи задуманного числа, но не стоит в той же позиции, что и в задуманном числе).
Например, если задумано число 3275 и названо число 1234, получаем в названном числе одного «быка» и одну «корову». Очевидно, что число отгадано в том случае, если имеем 4 «быка». - Игра в слова
Составить программу, позволяющую компьютеру и человеку играть в слова. Предварительно программа объясняет правила игры и позволяет уточнить их в любой момент. Тематикой игры могут быть по выбору города, животные, растения и т. д. Тема выбирается из предложенных компьютером (не менее 3). - Построение графика функции
Составить программу, которая позволяет пользователю строить графики элементарных функций (список функций уточнить с преподавателем). После ввода выражения соответствующей функции и отрезка, на котором выполняется построение, программа строит указанный график. Затем выражение и положение графика можно менять (например, с помощью клавиш управления курсором), после чего график перестраивается и записывается обновленное уравнение соответствующей кривой. - Игра «Судоку»
Игровое поле представляет собой квадрат размером 9×9, разделённый на меньшие квадраты со стороной в 3 клетки. Таким образом, всё игровое поле
состоит из 81 клетки. В них уже в начале игры стоят некоторые числа (от 1 до 9), называемые подсказками. От игрока требуется заполнить свободные клетки цифрами от 1 до 9 так, чтобы в каждой строке, в каждом столбце и в каждом малом квадрате 3×3 каждая цифра встречалась бы только один раз.
Написать программу реализующую игру «Судоку» с возможностью ввода цифр как с клавиатуры, так и рисуя цифру в выбранной ячейке. Для нарисованных цифр реализовать алгоритм распознавания данной цифры. - Система тестирования
Система тестирования, комплекс программ, включающий приложения для создания и редактирования электронных тестов (Редактор), клиент-серверное программное обеспечение для проведения тестирования. Клиентское приложение 2-ух видов: для персонала, проводящего тестирование, и субъектов тестирования.
Редактор реализует функционал, необходимый для создания и редактирования файлов тестов. Для хранения тестов реализован собственный формат файлов. Формат файла представляет собой два XML документа, структурированные по блокам вопросы и мета-информацию, и файл с ответами, сжатые в единый архив формата ZIP, который позволяет реализовать шифрование.
Сервер тестирования, серверное программное обеспечение, используемое для хранения тестов, хранения промежуточных результатов, авторизация пользователей, чьи учетные данные хранятся в базе данных, сбор данных и генерация статистики. Взаимодействие с клиентами должно происходить по протоколу TCP, в следующем виде: сначала отправляется 4 байта, хранящие длину сообщения, и сообщение. Сообщение представляет собой XML документ в кодировке Unicode.
Клиентское приложение для персонала, проводящего тестирование, включает в себя следующие возможности: авторизация на сервере тестирования, загрузку файлов тестов, и распределение их по субъектам тестирования, контроль промежуточных и итоговых результатов, сбор данных.
Клиентское приложение для субъектов тестирования, реализует следующий набор функций: авторизация на сервере тестирования, просмотра списка доступных тестов и прохождение выбранных тестов с регистрацией ответов в реальном времени, продолжение уже начатых тестов, выполнение которых было прекращено в следствии какой-либо технической ошибки. - Гонки по городу
Обеспечить графическое представление решения следующей задачи. В некотором населенном пункте при движении по дорогам запрещены левые повороты (развороты при этом не запрещены). За каждый поворот налево установлен штраф в 100 руб. За движением автомобилей ведется компьютерное слежение, в результате чего фиксируются координаты автомобиля в начале и конце его движения, а также в те моменты, когда автомобиль выполняет какой-либо поворот. Написать программу, которая с помощью пользователя (клавишами или мышкой) осуществляет проезд автомобиля, отмечает пункты нарушений и начисляет штрафы его водителю. Предусмотреть возможность создания карты города расставляя на ней графические объекты: здания, дороги, деревья, светофоры (светофоры работают автономно, переключая цвета по времени, определяемому рандомно для каждого светофора). - Игра «Болото»
Дано поле NxM клеток (размеры задаются произвольно) – участки болота. Некоторые клетки – кочки (их местоположение определяется при помощи генератора случайных чисел). На одной из кочек сидит лягушка (ею будет управлять игрок, указывая мышью место, куда она будет прыгать). Над болотом
летает комар (он управляется программой). Первый ход за лягушкой – она может прыгать с кочки на кочку по горизонтали, вертикали или диагоналям, максимальная длина прыжка – 5 клеток. Если лягушка попадает в воду, она плывет до ближайшей кочки (это должно автоматически выполняться программой). Комара лягушка может съесть в полете или если он сам залетит на ее клетку. После каждого хода лягушки следует ход комара. За один ход комар случайным образом перемещается на одну из клеток вокруг его предыдущего положения. Как только лягушка настигнет комара, программа выдает сообщение и прекращает свою работу. Стратегию полета комара реализовать в виде дерева. - Игра «Прыгающие шарики»
После запуска приложения на экране отображаются строки, расположенные в хаотическом порядке, а также шарики, двигающиеся по принципу броуновского движения. При столкновении шарика с буквой должен изменятся ее цвет. Выбор цвета определяется случайным образом. Программа должна позволять пользователю вводить строки и изменять размер шрифта строки - Увеличительное стекло
Написать программу, которая дает возможность использовать указатель мыши как центр увеличительного стекла для увеличения фонового изображения на экране. Программа должна позволять интерактивно вводить коэффициент увеличения (2, 4, 5, 10, 20, 25) и выводить увеличенное изображение (его центр отмечает указатель мыши) в рамках области 100х100 пикселей. При движении мыши “увеличительное стекло” также должно двигаться по экрану. Форму приложения реализовать в виде увеличительного стекла. При увеличении или уменьшении изображения его необходимо масштабировать. - Создание информационной системы
Информационная система должна содержать от 4 до 6 таблиц базы данных и клиентского приложения к ней. Клиентское приложение должно обеспечивать возможность ввода, редактирования, удаления, поиска, фильтрации данных, а также вывода отчетов по заданным критериям (не менее 3х отчетов) в MS Word и в MS Excel. Базу данных реализовать с помощью файловой системы (текстовые, битовый или файлы-XML). Для обращения к записям таблиц использовать систему классов. - Моделирование движения на автостраде. Рассматривается движение автомобилей на прямом однорядном (однополосном) участке автострады без перекрестков, в течение некоторого времени. Автомобили появляются на одном конце дороги и проезжают по ней до другого конца, стараясь по возможности сохранить начальную (заданную при их появлении) скорость. Автомобили могут иметь разную начальную скорость: начальная скорость – случайная величина, изменяющаяся в заданном диапазоне (например, от 50 до 100 км/час). Интервалы между появлениями автомобилей на дороге также являются случайными величинами из определенного интервала (например, от 1 до 5 секунд). Считается, что минимальное допустимое сближение двух автомобилей составляет одну длину (корпус) автомобиля, в ином случае происходит авария. Когда автомобиль приближается к идущей впереди машине на утроенное допустимое расстояние, он начинает притормаживать по определенному закону, пока его скорость не сравняется со скоростью передней машины. Пусть в таком потоке машин организована искусственная кратковременная задержка одного автомобиля: автомобиль сначала резко замедляется, сбрасывая за некоторое время скорость, а затем после некоторой паузы вновь набирает первоначальную скорость. В результате, если следующий автомобиль не успел притормозить, возникает авария. Может возникнуть и так называемая пробка – область с высокой плотностью автомобилей, включающая чередование притормаживаний и ускорений до прежней скорости. Действительно, если какой-то автомобиль начинает резко замедляться, идущий за ним автомобиль тоже через некоторое время тормозит. После торможения следует замедленное движение автомобиля, но как только дорога перед ним освобождается, автомобиль ускоряется до первоначальной скорости. Пробка обычно возникает, если плотность потока автомобилей достаточно велика, и существует некоторое время, медленно двигаясь навстречу потоку автомобилей и постепенно рассеиваясь. Заметим, что в аварию может попасть не тот автомобиль, что был искусственно задержан, а идущие за ним машины. В случае аварии должно пройти некоторое фиксированное время, прежде чем движение на этом участке вновь станет возможным, и после вынужденной остановки машины вновь набирают первоначальную скорость. Необходимо разработать систему моделирования движения машин на автостраде, позволяющую наблюдать за возникновением и скоростью рассасывания возникающей пробки в зависимости от нескольких факторов- параметров. В число параметров моделирования следует включить: диапазон скоростей автомобилей, возможный интервал между их появлениями на дороге (от этого параметра зависит плотность потока), величину уменьшения скорости 11 искусственно притормаживаемой машины и время её движения с меньшей скоростью. При визуализации движения автомобилей по дороге следует учесть, что изображения самих автомобилей необходимо сделать крупнее, чем это определяется масштабом, иначе эти изображения будут слишком мелкими. Полезно использовать разные цвета для изображения различных состояний автомобиля (ускорение, торможение, движение с постоянной скоростью, авария). Интерфейс с программой моделирования движения должен обеспечивать один из способов указания автомобиля, который необходимо притормозить: например, нужный автомобиль отмечается мышью, или же задается отметка на дороге – тогда тормозится машина, пересекающая первой эту отметку. Возможны усложнения задания, включающие:
• движение автомобилей в несколько рядов (полос);
• наличие на дороге одного или нескольких светофоров.
В первом случае потребуется определить правила перехода автомобилей с одного ряда на другой, во втором – задать законы работы светофоров (от них зависит скорость рассасывания возникающих заторов). Допускается вместо прямого участка дороги организовать автомобильный круг, поскольку при этом можно дольше наблюдать за рассасыванием пробок.