
- •Перелік умовних скорочень
- •Аналіз предметної області. Вибір компонентної технології
- •1.1 Основні концепції компонентної розробки прикладних задач
- •1.2 Модель com/dcom
- •1.3 Модель Java Beans
- •1.4 Технологія розподіленого програмування corba
- •1.5 Технологія .Net
- •2 Розробка технічного завдання
- •3 Розробка стратегії гри для кожної категорії учасників
- •4 Створення об'єктної моделі системи
- •5 Розробка власного компоненту
- •6 Програмна реалізація спроектованої системи
- •6.1 Опис взаємодії гри з користувачем
- •6.2 Загальні відомості про програму
- •Висновки
- •Список літератури
- •Додаток а
- •Додаток б
- •Затверджую
- •Додаток в
- •Додаток г
- •Додаток д
5 Розробка власного компоненту
Підчас створення даног проекту виникла потреба у реалізації моделювання руху кулі в просторі відповідно до передаваємих параметрів програми. В результаті вирішення даної під задачі отриманий клас, який при подальшому винесені в бібліотеку може бути використаний, як компонент інших програмних додатків. Уся ця логіка системи, її математична модель була розміщена в відповідних класах цієї бібліотеки.
private void timer1_Tick(object sender, EventArgs e)
{
//поточне положення кулі
float AX = 0, AY = 0, BX = 0, BY = 0;
AX = bullet[A, 1];
AY = bullet[A, 2];
BX = bullet[B, 1];
BY = bullet[B, 2];
bullet[A, 0] = 1;
//постріл кулі
if ((AX > BX + beside_people) && ((bullet_move_x == "XLeft") || (bullet_move_x == "")))
{
AX -= (float)Math.Abs((SAX - SBX - beside_people) / speed);
bullet[A, 1] = AX;
if (point_step == 0) bullet_move += "XLeft";
if (point_step == 0) bullet_move_x = "XLeft";
}
if ((AX + beside_people < BX) && ((bullet_move_x == "XRight") || (bullet_move_x == "")))
{
AX += (float)Math.Abs((SBX - SAX - beside_people) / speed);
bullet[A, 1] = AX;
if (point_step == 0) bullet_move += "XRight";
if (point_step == 0) bullet_move_x = "XRight";
}
if ((AY < BY + beside_people) && ((bullet_move_y == "YDown") || (bullet_move_y == "")))
{
AY += (float)Math.Abs((SBY - SAY + beside_people) / speed);
bullet[A, 2] = AY;
if (point_step == 0) bullet_move += "YDown";
if (point_step == 0) bullet_move_y = "YDown";
}
if ((AY + beside_people > BY) && ((bullet_move_y == "YUP") || (bullet_move_y == "")))
{
AY -= (float)Math.Abs((SAY - SBY + beside_people) / speed);
bullet[A, 2] = AY;
if (point_step == 0) bullet_move += "YUP";
if (point_step == 0) bullet_move_y = "YUP";
}
if (bullet_move == "XLeftYDown")
if ((AX <= BX + beside_people) && (AY >= BY + beside_people))
completion_shooting();
if (bullet_move == "XLeftYUP")
if ((AX <= BX + beside_people) && (AY + beside_people <= BY))
completion_shooting();
if (bullet_move == "XRightYDown")
if ((AX + beside_people >= BX) && (AY >= BY + beside_people))
completion_shooting();
if (bullet_move == "XRightYUP")
if ((AX + beside_people >= BX) && (AY + beside_people <= BY))
completion_shooting();
if (bullet_move == "XLeft")
if (AX <= BX + beside_people)
completion_shooting();
if (bullet_move == "XRight")
if (AX + beside_people >= BX)
completion_shooting();
if (bullet_move == "YDown")
if (AY >= BY + beside_people)
completion_shooting();
if (bullet_move == "YUP")
if (AY + beside_people <= BY)
completion_shooting();
point_step += 1;
Battlefield.Refresh();
}
Даний компонент виконує математичну модель по розрахунку розміщення кулі в просторі та вираховує параметри Х та Y для моделювання плавного руху кулі по формі.