Программа, моделирующая прыгающий мяч

Разработка игровой программы, моделирующей поведение мяча в закрытом безвоздушном пространстве. Изменение значения гравитации и трения о стены. Интерфейс программы, ее основная форма. Блок-схема программы и ее основной код. Добавление третьего измерения.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 27.08.2012
Размер файла 111,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

Моделирование - исследование объектов познания на их моделях; построение и изучение моделей реально существующих предметов, процессов или явлений с целью получения объяснений этих явлений, а также для предсказания явлений, интересующих исследователя.

Модель - объект произвольной природы, который отражает главные, с точки зрения решаемой задачи, свойства объекта моделирования.

Моделирование повсеместно используется в науке, так как является упрощенным, а иногда и единственным методом получении информации о свойствах объекта, его диагностики, а также прогнозировании.

В данном примере мы рассматриваем мяч - мягкий упругий предмет сферической либо овальной формы, в основном используемый в спортивных играх.

Цель работы

Целью работой является разработка программы на языке C#, моделирующей поведение мяча в закрытом безвоздушном пространстве. Пользователь должен иметь возможность изменять значения гравитации, и трения о стены.

программа схема блок код

Описание проекта

Интерфейсом программы является форма (рис.1).

Рис.1. Интерфейс программы

Основная форма содержит:

1. Основное поле, по которому прыгает мяч.

2. Полосы прокрутки Gravity и Friction, отвечающие за гравитацию и трение соответственно. Значения выбираются по десятибалльной шкале. Значение 0 означает полное отсутствие гравитации или трения о стенки.

3. Кнопка Bounce придаёт мячу случайную скорость в случайном направлении.

4. Кнопка Defaults возвращает первоначальные значения гравитации и трения.

5. Щелчком правой кнопкой мыши по полю вызывается контекстное меню. Stop обнуляет скорость мяча. Pause приостанавливает движение мяча. Повторный щелчок на Pause возобновит движение мяча.

6. Если движение мяча приостановлено, то в нижнем правом углу появляется надпись "Paused”.

Если кинетическая энергия мяча близка к нулю, и он лежит на нижней границе поля, то он автоматически прыгнет в произвольную сторону с произвольной скоростью.

Пользователь также может перетаскивать мяч левой кнопкой мыши по его полю.

Окно формы можно растянуть, либо развернуть во весь экран.

Блок-схема программы
Блок-схема программы имеет вид (рис.2).
Рис.2. Блок-схема программы
Основной код программы
Следующим образом мяч совершает прыжки по полю.
public void timer1_Tick (object sender, EventArgs e)
{
// Создаётся Bitmap, из которого будет рисоваться мяч.
bmp = new Bitmap (pictureBox1. Width, pictureBox1. Height);
g = Graphics. FromImage (bmp);
rand = new Random ();
// При первой загрузке, мяч появляется из случайного места поля.
if (l! =true) {
X = rand. Next (6, pictureBox1. Size. Width - 56);
Y = rand. Next (6, pictureBox1. Size. Height - 56);
}
l = true;
col = pictureBox1. BackColor;
col2 = Color. Black;
p = new Pen (col1);
black = new Pen (col2,6);
SolidBrush redBrush = new SolidBrush (col1);
SolidBrush white = new SolidBrush (col);
// Вычисление трения по значениям trackBar2. Как видно, фронтальное столкновение забирает больше энергии, чем поперечное.
if (trackBar2. Value! = 0)
{
trenieX = (trackBar2. Value - ( (trackBar2. Value - 1) + (trackBar2. Value - 1) / 10.0)) * 0.75;
trenieY = (trackBar2. Value - ( (trackBar2. Value - 1) + (trackBar2. Value - 1) / 10.0)) * 0.95;
}
else { trenieX = 1; trenieY = 1; }
moveY += gravity;
// Очистка поля.
g. Clear (pictureBox1. BackColor);
X += moveX;
Y += moveY;
X1 = (float) X;
Y1 = (float) Y;
// Отрисовка мяча.
g. DrawEllipse (black, X1, Y1, 50, 50);
g. FillEllipse (redBrush, X1, Y1, 50, 50);
pictureBox1. Image = bmp;
// Проверка столкновения с границами поля.
if (X <= 0)
{
X = 0;
moveX = - moveX;
moveX *= trenieX;
moveY *= trenieY;
}
if (X >= pictureBox1. Size. Width - 56)
{
X = pictureBox1. Size. Width - 56;
moveX = - moveX;
moveX *= trenieX;
moveY *= trenieY;
}
if (Y <= 0)
{
Y = 0;
moveY = - moveY;
moveY *= trenieX;
moveX *= trenieY;
}
if (Y >= pictureBox1. Size. Height - 56)
{
Y = pictureBox1. Size. Height - 56;
moveY = - moveY;
moveY *= trenieX;
moveX *= trenieY;
}
if ( (! pss) && (! tah))
{
// Заставляем мяч прыгнуть.
if ( (Math. Abs (moveX) <= 0.1 && Math. Abs (moveY) <= 0.86 && DateTime. Now. Second % 3 == 0 && Y >= pictureBox1. Size. Height - 60) && (bounc))
{
moveX = (rand. NextDouble () + rand. NextDouble ()) - 1;
moveY = - (rand. NextDouble ());
moveX *= 50;
moveY *= 50;
X += moveX;
Y += moveY;
}
}
}
}

Вывод

Итак, мы получили простую и увлекательную программу, моделирующую прыгающий мяч. С помощью ввода различных значений трения и гравитации, а также изменения размера поля, можно получить и исследовать различные результаты.

Дальнейшее развитие программы можно вести в двух направлениях: в улучшении физической части, и графической. В физической части можно добавить сопротивление воздушной среды, вывод реальной скорости мяча, а также привязать значения гравитации и трения к конкретным значениям g и µ. В графической части можно добавить третье измерение, и рассматривать поведения мяча в пространстве.

Список используемой литературы

1. Жарков В.А. Самоучитель Жаркова по анимации и мультипликации в Visual C#.net 2003. - М.: Жарков Пресс, 2003. - 432 с.

Размещено на Allbest.ru


Подобные документы

  • Программа для выбираемой единицы измерения (градусы Фаренгейта или Цельсия) и для задаваемого значения температуры в этой единице измерения. Среда Delphi. Системные требования. Блок схема программы. Интерфейс. Тестирование и сопровождение программы.

    курсовая работа [447,6 K], добавлен 04.02.2009

  • Разработка программы, моделирующей процесс падения шариков в Доске Гальтона - приборе, наглядно иллюстрирующем некоторые законы теории вероятностей. Структура метода решения. Блок-схема меню программы. Процедуры, интерфейс, руководство пользователя.

    курсовая работа [1,4 M], добавлен 15.01.2013

  • Прототип интерфейсов программы. Mind map диаграмма. Политика реализации безопасности и сохранности данных. Блок-схема реализации функционала программы. Форма, интерфейс личного кабинета пользователя. Проверки во время заполнения регистрационной формы.

    курсовая работа [3,3 M], добавлен 14.09.2016

  • Разработка алгоритма решения задачи численного интегрирования методом трапеции. Словесное описание и блок-схема разработанного алгоритма программы. Описание интерфейса, главного окна и основных форм программы. Проверка работоспособности программы.

    курсовая работа [1,4 M], добавлен 16.03.2012

  • Разработка эскизного и технического проектов программы, моделирующей игру "Кости". Постановка задачи, описание алгоритма; написание программы, организация входных и выходных данных; выбор программных средств; спецификация, текст, условия выполнения.

    курсовая работа [93,8 K], добавлен 11.02.2012

  • Математическая модель исследования топологии поверхностей электронно-проекционным муаровым методом. Основной алгоритм программы, модулирующий муаровый эффект. Последовательность действий, обработка изображения. Интерфейс модуля model, рабочий растр.

    курсовая работа [1,3 M], добавлен 28.01.2014

  • Разработка программы, моделирующей игру "Кости". Использование в программе генератора псевдослучайных чисел. Схема иерархии модулей. Описание работы программы. Регистрация игрока, окно программы. Определение языка программирования, основные операторы.

    курсовая работа [3,2 M], добавлен 29.07.2010

  • Разработка полноценной правильно функционирующей игровой программы "Парные картинки", изучение процедур и функций. Использование масштабируемых средств для построения баз данных. Компоненты Delphi в программе. Описание пользовательского интерфейса.

    курсовая работа [1,3 M], добавлен 13.07.2012

  • Функциональная схема микроконтроллера. Схема подключения ADS7841. Блок-схема и интерфейс программы АЦП. Реализация Hart-протокола, пример транзакции. Результат моделирования передачи по Uart. Индикация, текст программы. Сторожевой таймер, печатная плата.

    курсовая работа [2,3 M], добавлен 17.02.2013

  • История появления и развития единиц измерения. Метрические и неметрические единицы измерения, использование в мировой практике. Изучение среды программирования Borland Delphi. Разработка программы-переводчика единиц измерения веса и ее интерфейса.

    курсовая работа [635,7 K], добавлен 08.09.2021

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.