Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursovaya_физика столкновений.docx
Скачиваний:
11
Добавлен:
02.06.2015
Размер:
266.5 Кб
Скачать

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();

}};}

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