- •Министерство образования и науки
- •Задание на курсовую работу
- •Постановка задачи
- •Проектная часть
- •Теоретический материал
- •Общее описание разработки
- •1.2.1.Структура приложения
- •1.2.2.Таблица свойств объектов
- •1.2.3. Список идентификаторов
- •2. Функциональное описание приложения
- •3. Описание работы программы с представлением экранных форм
- •1. Form1.H
- •2. Circle.H
- •3. Circle.Cpp
- •4. Form2.H
2. Circle.H
ref class circle //Класс шаров
{
public:
circle(int _x, int _y, int _r); // координаты и радиус
void update(System::Windows::Forms::PaintEventArgs^ e, float dt);
// Set и Get функции для интерфейса:
inline float GetRadius(void){return r;}; // получить радиус
inline float GetCenterX(void){return x+r*0.5f;}; // получить X координату центра
inline float GetCenterY(void){return y+r*0.5f;}; // получить Y координату центра
inline float GetVX(void){return vx;}; // получить координату скорости по Х
inline float GetVY(void){return vy;}; // получить координату скорости по У
float v_res_x;
float v_res_y;
float numcolis; //Отвечает за количество соударений с шарами
inline void SetSpeed(float _vx, float _vy) {
vx = _vx;
vy = _vy;
}
private:
void draw(System::Windows::Forms::PaintEventArgs^ e); // нарисовать шар
//координаты х и у
float x;
float y;
//компоненты скорости
float vx;
float vy;
float numcolis;
// сюда будем во время просчета физики накапливать скорость
float v_res_x;
float v_res_y;
//радиус
float r;
};
3. Circle.Cpp
#include "StdAfx.h"
#include "circle.h"
circle::circle(int _x, int _y, int _r):
x(_x),
y(_y),
r(_r),
vx(0),
vy(0)
{
}
void circle::update(System::Windows::Forms::PaintEventArgs^ e, float dt)
{
//прибавляем к координатам скорость умноженную на время,
// так узнаем новые координаты
y += vy*dt;
x += vx*dt;
float z = 0.9995;
//Проверка на выход за границы экрана
// Если одна из координат равна границе экрана,
// то меняем направление движения шара
if (y > 268.f-r)
{
y = 268.f-r;
vy = -vy * z; // 0.9999 - трение
}
if (y < 0)
{
y = 0;
vy = -vy * z;
}
if (vx < 0 && x < 0)
{
vx = -vx * z;
x = 0;
}
if (vx > 0 && x > 300-r)
{
vx = -vx * z;
x = 300-r;
}
vy*=z;
vx*= z;
draw(e); // нарисовать шары
}
void circle::draw(System::Windows::Forms::PaintEventArgs^ e)
{
// рисуем шары
Color slateBlue = Color::FromName( "SlateBlue" ); // выбираем цвет, которым будем рисовать SlateBlue
System::Drawing::Pen ^pen = gcnew System::Drawing::Pen(slateBlue); // создаем кисть
//рисуем этой кистью шар
e->Graphics->DrawEllipse(pen,(int)(x),(int)(y),(int)r,(int)r);
}
4. Form2.H
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
Close();
}
private: System::Void form2_Shown(System::Object^ sender, System::EventArgs^ e) {
label1->Focus();
}};}