уємо можливе прирощення скоростіdvx=fx/m * dt;
double dvy=fy/m * dt; (! traction_force)//Немає сили тяги,
{// потрібно перевірити, чи не станеться зупинка
//із за тертя? Для цього обчислюємо:
//Модуль швидкості на початку інтервалу dt
double v=Math.Sqrt (vx * vx + vy * vy);
//Модуль прирощення швидкості до кінця інтервалу dt
double dv=Math.Sqrt (dvx * dvx + dvy * dvy);
if (dv gt;=v)//Діє тільки сила тертя,
{// а розрахункове збільшення більше початкової швидкості.
//У природі таке неможливо. =0.0; vy=0.0;// Тому зупиняємо кулька;// І далі не обчислюємо.
}
}
//Зміна положення за час dt:
//Формула рівноприскореного прямолінійного двіженія.dx=(vx + dvx/2) * dt;
double dy=(vy + dvy/2) * dt;
//Можливе положення тіла в кінці інтервалу dt: +=dx; +=dy;
//Можлива швидкість тіла до кінця інтервалу dt:
vx +=dvx; +=dvy; px, py, b_wall; void Show (Graphics g1, Brush b1) .cs.cs Вінес окремим пунктом того що тут всі класи и інтерфейс зв язані в Одне ціле.Form1 ()
{();=pictureBox1.CreateGraphics (); =New Pen (new SolidBrush (Color.Black)) ;. Width=3; =New SolidBrush (Color.Black);
У Цій части кодом опісується говоритися про ті что ми створюємо новий про єкт на поверхні форми чорною кисть товщина 3..Interval=(int) (dt * 400) ;. Interval=(int) (dt * 400);
Коженая новий камінь малюється з годин інтервалом 4 рази в секунду.
C1=new Catapulta (10, 35); =New Catapulta (110, 35);
Координати размещения наших баліст ..Image=C1.p; .Top=(int) (C1.y * km); pictureBox2.Left=(int) (C1.x * km) ;. Image=C2.p1; .Top=(int) (C2.y * km); pictureBox3.Left=(int) (C2.x ??* km);=new Ball01 (0.5, 0.2, C1.x, C1.y, 11.0, - 10.0);=new Ball02 (0.5, 0.2, C2.x, C2.y, 11.0, - 10.0);
}
переведених координат в кілометрі та прив язання стартових координат кам'яній до координат катапульт.
Таймер 1void timer1_Tick_1 (object sender, EventArgs e)
{. Clear (Fon);// .Move (Form1.dt, 0, 9.8 * bal1.M);
дія сили сила тяжіння на камінь.
if ((Math.Abs ??(bal1.x * km - pictureBox3.Left) lt; 20) amp; amp; (Math.Abs ??(bal1.y * km - pictureBox3.Top) lt; 100))
{
Перевірка влучілі ми в ціль чи ні.
timer1.Enabled =! timer1.Enabled; .Visible=false; .Visible=true;
зміна картинки если ми влучілі.
}
Кнопка 1void button1_Click_1 (object sender, EventArgs e)
{// Запуск/зупинка процесу моделірованія.Show (g1, b1);
timer1.Enabled =! timer1.Enabled;
}
Запуск снаряду.
Кнопка 2void button2_Click_1 (object sender, EventArgs e)
{// Новий куля
double a=trackBar1.Value; f=40;
повзунок 1=new Ball01 (3, 1, C1.x + 3.5, C1.y + 1, f * Math.Cos (a/57), - f * Math.Sin (a/ 57)) ;. Clear (Fon) ;. Show (g1, b1); b=trackBar2.Value; t=40;
повзунок 2=new Ball02 (3, 1, C2.x + 3.5, C2.y + 1, -t * Math.Cos (b/57), -t * Math.Sin (b/57)) ;. Clear (Fon) ;. Show (g1, b1) ;. Visible=true; .Visible=false; .Visible=true; .Visible=false; .Visible=true; .Visible=false;
повернення початкових картинок.
Інструкція користувача
Для того щоб початиться гру натісніть кнопку «New Game»
комп ютерна гра Постріл моделювання
Для запуску снаряду задайте кут нахилится балісті помощью повзунки та натісніть кнопку «Fire/stop fire»
При попаданні в «ворожу» балісту ми бачим як вона зніщується
При влучанні каменю в стіну ми бачим як вона розсіпається
Код програми.csSystem;System.Collections.Generic;System.Linq;System.Text;System.Drawing;Курсач_2
{Catapulta ??p>
{double x; double y; Image p; Image p1; double a=45; double f=10; Catapulta (int x, int y)
{. x=x; .y=y;=Image.FromFile ( kkk1.gif );=Image.FromFile ( kkk2.gif );
}