Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб раб2_Balls.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2 Мб
Скачать
☆

Модель с двумя мячами

Добавим в модель второй мяч. Перейдите на диаграмму класса активного объекта Root и перенесите мышью на него еще один экземпляр мяча. Появившийся объект автоматически получит имя ball1 (рис. 2.4). При этом в окне свойств нового экземпляра мяча мы увидим те же значения параметров мяча, которые были определены для активного объекта Ball.

Рис. 2.3

Рис. 2.4

Установите начальные значения х0 и у0 нового мяча равными 200 и 300 соответственно.

Чтобы на презентации показать движение второго мяча, продублируйте изображение первого мяча с помощью клавиш <Ctrl+C> и <Ctrl+V>. Параметры нового изображения и овала (координаты и цвета) связаны с характеристиками объекта ball. Их нужно связать с новым объектом – шаром с именем Ball1. То есть, вместо Bаll.x, Ball.у и Bаll.t0 в соответствующих полях нужно записать Bаll1.x, Ball1.у и Bаll1.t0 (рис. 2.5). А для значения радиусов Радиус X и Радиус Y нужно установить Ball1.r вместо Ball.r.

Рис. 2.5

Теперь при запуске модели будут имитироваться независимые движения двух шаров.

Произвольные перемещения мяча

В нашей модели мячи движутся строго вертикально, отскакивая от горизонтальной поверхности. Это происходит потому, что начальная скорость мячей по координате x равна 0. Если мы изменим начальные скорости мячей по x, нам необходимо будет описать поведение мячей при столкновении с вертикальными стенками и потолком.

Зададим случайные начальные значения скоростей Vx и Vy. Для этого перейдите на диаграмму класса активного объекта Ball, выделите переменную Vx и в поле Начальное значение этой переменной замените значение 0 на значение uniform(-100, 100). При этом у различных экземпляров активного объекта Ball начальная скорость по координате х будет задана случайно из диапазона (-100, +100) метров в секунду. То же самое сделайте для переменной Vy.

Для моделирования отскока мяча от потолка нужно на переходе стейтчарта изменить условие столкновения мяча с поверхностью. Мячи двигаются в пространстве, размером 500х500 метров. В поле При выполнении условия панели свойств перехода стейтчарта активного объекта Ball выражение:

у <= r && vy < 0

измените на:

у <= r && vy < 0 || у >= 500 - r && vy > 0

При этом, выполняемое действие должно остаться без изменения, а именно: смена направления скорости Vy с частичной ее потерей.

Для того чтобы мяч отскакивал от вертикальных стен, нужно записать это условие в стейтчарте добавлением дополнительного перехода. Откройте палитру Диаграмма состояний и сделайте двойной щелчок мышью по иконке Переход, включив, тем самым, режим рисования. Нарисуйте переход внутри состояния Movement, как показано на рис. 2.6.

Рис. 2.6

В окне свойств этого перехода в поле Происходит нужно выбрать вариант При выполнении условия, в поле При выполнении условия следует записать условие касания мяча о вертикальную стенку:

х <= r && vx < 0 || х >= 500 - r && vx > 0

а в поле Действие записать изменение направления составляющей Vx скорости мяча и запомнить момент времени, когда произошло касание стенки для последующего изменения цвета мяча, рис. 2.7:

vx = -(1 - k) * vx;

t0 = time();

Рис. 2.7

Запустите модель. Поэкспериментируйте с ней, используя слайдеры.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]